diff --git a/src/main/java/cli/Plan.java b/src/main/java/cli/Plan.java index cee160b068b1587c08cf167c576a891de5d431e5..6e5346aa27d0cde323ab35ef970e629b2153823e 100644 --- a/src/main/java/cli/Plan.java +++ b/src/main/java/cli/Plan.java @@ -37,33 +37,36 @@ */ package cli; -import common.ConfigurationTTool; -import common.SpecConfigTTool; -import launcher.RTLLauncher; +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; +import java.util.Vector; +import org.jgrapht.io.ExportException; import myutil.FileUtils; -import myutil.PluginManager; -import myutil.TraceManager; -import tmltranslator.*; -import tmltranslator.dsez3engine.InputInstance; -import tmltranslator.dsez3engine.OptimizationModel; +import simulationtraceanalysis.DependencyGraphTranslator; +import simulationtraceanalysis.PlanArrays; +import tmltranslator.TMLActivity; +import tmltranslator.TMLActivityElement; +import tmltranslator.TMLMapping; +import tmltranslator.TMLMappingTextSpecification; +import tmltranslator.TMLModeling; +import tmltranslator.TMLSyntaxChecking; +import tmltranslator.TMLTask; import tmltranslator.dsez3engine.OptimizationResult; import ui.CheckableLatency; import ui.MainGUI; import ui.SimulationTrace; import ui.TGComponent; import ui.TMLArchiPanel; -import ui.TURTLEPanel; import ui.interactivesimulation.SimulationTransaction; -import ui.simulationtraceanalysis.DirectedGraphTranslator; import ui.simulationtraceanalysis.JFrameLatencyDetailedAnalysis; import ui.simulationtraceanalysis.JFrameLatencyDetailedPopup; import ui.simulationtraceanalysis.latencyDetailedAnalysisMain; import ui.tmlad.TMLADExecI; import ui.tmlad.TMLActivityDiagramPanel; -import ui.util.IconManager; -import java.io.File; -import java.util.*; -import java.util.Map.Entry; /** * Class TML Creation: 25/03/2019 Version 2.0 25/03/2019 @@ -78,10 +81,12 @@ public class Plan extends Command { private HashMap<String, Integer> checkedT = new HashMap<String, Integer>(); private Vector<SimulationTransaction> transFile1; private latencyDetailedAnalysisMain latencyDetailedAnalysisMain; - private DirectedGraphTranslator dgt; + private DependencyGraphTranslator dgt, dgraph;; private String traceFile; private Boolean taint; private OptimizationResult result; + private TMLMapping<TGComponent> tmap; + private TMLSyntaxChecking syntax; public Plan() { } @@ -125,6 +130,24 @@ public class Plan extends Command { return generateGraph(command, interpreter); } }; + Command generateGraph = new Command() { + public String getCommand() { + return "generateGraph"; + } + + public String getShortCommand() { + return "generate"; + } + + public String getDescription() { + return "Generate graph from TML mapping "; + } + + public String executeCommand(String command, Interpreter interpreter) { + // interpreter.print("Command=" + command); + return generateGraphFromTML(command, interpreter); + } + }; Command latency = new Command() { public String getCommand() { return "latency"; @@ -171,7 +194,7 @@ public class Plan extends Command { } public String getDescription() { - return "Precise Latency analysis by row"; + return "Precise latency analysis by row"; } public String executeCommand(String command, Interpreter interpreter) { @@ -179,10 +202,107 @@ public class Plan extends Command { return preciseLatByRow(command, interpreter); } }; + Command exportGraphGraphml = new Command() { + public String getCommand() { + return "exportGraph"; + } + + public String getShortCommand() { + return "exportG"; + } + + public String getDescription() { + return "Export graph in Graphml format"; + } + + public String executeCommand(String command, Interpreter interpreter) { + // interpreter.print("Command=" + command); + return exportGGraphml(command, interpreter); + } + }; + Command saveGraph = new Command() { + public String getCommand() { + return "saveGraph"; + } + + public String getShortCommand() { + return "saveG"; + } + + public String getDescription() { + return "Export graph in png format"; + } + + public String executeCommand(String command, Interpreter interpreter) { + // interpreter.print("Command=" + command); + return exportGpng(command, interpreter); + } + }; + // show all oppl + Command showAllOp = new Command() { + public String getCommand() { + return "showAllOp"; + } + + public String getShortCommand() { + return "showAllOp"; + } + + public String getDescription() { + return "Show all operators IDs"; + } + + public String executeCommand(String command, Interpreter interpreter) { + // interpreter.print("Command=" + command); + return showAllOp(command, interpreter); + } + }; + Command computeLatencyValues = new Command() { + public String getCommand() { + return "computeLatencyValues"; + } + + public String getShortCommand() { + return "computelat"; + } + + public String getDescription() { + return "Compute latency between two operators"; + } + + public String executeCommand(String command, Interpreter interpreter) { + // interpreter.print("Command=" + command); + return computeLatencyValues(command, interpreter); + } + }; + Command rowArrays = new Command() { + public String getCommand() { + return "rowArrays"; + } + + public String getShortCommand() { + return "rowArrays"; + } + + public String getDescription() { + return "Precise latency analysis by row"; + } + + public String executeCommand(String command, Interpreter interpreter) { + // interpreter.print("Command=" + command); + return PlanByRow(command, interpreter); + } + }; addAndSortSubcommand(graph); addAndSortSubcommand(latency); addAndSortSubcommand(listAllOp); addAndSortSubcommand(preciseLatByRow); + addAndSortSubcommand(generateGraph); + addAndSortSubcommand(exportGraphGraphml); + addAndSortSubcommand(saveGraph); + addAndSortSubcommand(showAllOp); + addAndSortSubcommand(computeLatencyValues); + addAndSortSubcommand(rowArrays); } private String generateGraph(String command, Interpreter interpreter) { @@ -257,7 +377,6 @@ public class Plan extends Command { } private String computeLat(String command, Interpreter interpreter) { - // TODO Auto-generated method stub String[] commands = command.split(" "); String task1 = null, task2 = null; int operator1ID = Integer.valueOf(commands[0]); @@ -338,4 +457,162 @@ public class Plan extends Command { } return null; } + + private String PlanByRow(String command, Interpreter interpreter) { + String[] commands = command.split(" "); + String i = commands[0]; + Boolean minmax = Boolean.parseBoolean(commands[1]); + String filename = commands[2]; + interpreter.print("minmax " + minmax); + interpreter.print("taint" + taint); + int row = Integer.valueOf(i); + if (!minmax && !taint) { + dgraph.getRowDetailsMinMax(row); + } + // detailedLatency = dgt.getTaskByRowDetails(id); + // interpreter.print("detailedLatency.length=" + detailedLatency.length); + // detailedLatency = dgt.getTaskHWByRowDetails(id); + // // interpreter.print("detailedLatency.length=" + detailedLatency.length); + PlanArrays arrays = new PlanArrays(); + arrays.fillArrays(dgraph, row, !minmax, taint); + interpreter.print("dgraph.getOffPathBehavior=" + dgraph.getOffPath().size()); + interpreter.print("dgraph.getOffPathBehaviorCausingDelay=" + dgraph.getOffPathDelay().size()); + interpreter.print("dgraph.getOnPath=" + dgraph.getOnPath().size()); + dgraph.saveDetailsToXML(filename); + return null; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + private String generateGraphFromTML(String command, Interpreter interpreter) { + String[] commands = command.split(" "); + String tmapLocation = commands[0]; + String[] l = commands[0].split("/"); + String loctaion = ""; + interpreter.print(l[l.length - 1]); + String fName = l[l.length - 1].replace(".tmap", ""); + interpreter.print(fName); + loctaion = l[0]; + for (int i = 1; i < l.length - 1; i++) { + loctaion = loctaion + "/" + l[i]; + } + loctaion = loctaion + "/"; + interpreter.print(loctaion); + String spec = null; + File f = new File(commands[0]); + TMLMappingTextSpecification tmts = new TMLMappingTextSpecification(fName); + interpreter.print(tmts.toString() + "tmts"); + try { + interpreter.print(f.getPath() + "f"); + spec = FileUtils.loadFileData(f); + } catch (Exception e) { + } + interpreter.print(spec.toString() + "spec"); + boolean parsed = tmts.makeTMLMapping(spec, loctaion); + interpreter.print(tmts.toString() + "tmts"); + tmap = tmts.getTMLMapping(); + if (tmap == null) { + interpreter.print(tmap + "is null"); + } + syntax = new TMLSyntaxChecking(tmap); + syntax.checkSyntax(); + dgraph = new DependencyGraphTranslator(tmap); + dgraph.DrawDirectedGraph(); + interpreter.print("Draw done"); + return null; + } + + private String exportGGraphml(String command, Interpreter interpreter) { + String f = command; + try { + dgraph.exportGraph(f); + interpreter.print("print done"); + } catch (ExportException e) { + interpreter.print(e.getMessage()); + } catch (IOException e) { + interpreter.print(e.getMessage()); + } + return null; + } + + private String exportGpng(String command, Interpreter interpreter) { + String f = command; + try { + dgraph.showGraph(dgraph); + dgraph.getFrame().setVisible(false); + dgraph.exportGraphAsImage(f); + interpreter.print("print done"); + } catch (ExportException e) { + interpreter.print(e.getMessage()); + } catch (IOException e) { + interpreter.print(e.getMessage()); + } + return null; + } + + private String showAllOp(String command, Interpreter interpreter) { + TMLActivity activity; + for (TMLTask tmltask : tmap.getTMLModeling().getTasks()) { + activity = tmltask.getActivityDiagram(); + List<TMLActivityElement> list = activity.getElements(); + Iterator<TMLActivityElement> iterator = list.listIterator(); + TMLActivityElement tgc; + iterator = list.listIterator(); + while (iterator.hasNext()) { + tgc = iterator.next(); + String compName = ""; + compName = tmltask.getName() + ":" + tgc.getName(); + compName = compName.replaceAll(" ", ""); + checkedT.put(compName + "__" + tgc.getID(), tgc.getID()); + } + } + for (Entry<String, Integer> cT : checkedT.entrySet()) { + interpreter.print(cT.getValue() + "--" + cT.getKey()); + } + ; + return null; + } + + private String computeLatencyValues(String command, Interpreter interpreter) { + String[] commands = command.split(" "); + String task1 = null, task2 = null; + int operator1ID = Integer.valueOf(commands[0]); + int operator2ID = Integer.valueOf(commands[1]); + taint = Boolean.parseBoolean(commands[2]); + String filename = commands[3]; + traceFile = commands[4]; + interpreter.print("transFile1=" + traceFile); + for (Entry<String, Integer> cT : checkedT.entrySet()) { + int id = cT.getValue(); + String taskName = cT.getKey(); + if (id == operator1ID) { + task1 = taskName; + } else if (id == operator2ID) { + task2 = taskName; + } + } + interpreter.print("task1=" + task1); + interpreter.print("task2=" + task2); + interpreter.print("taint=" + taint); + transFile1 = dgraph.parseFile(new File(traceFile)); + interpreter.print("transFile1=" + transFile1.size()); + if (task1 != null && task2 != null && transFile1 != null && taint != null) { + allLatencies = dgraph.latencyDetailedAnalysis(task1, task2, transFile1, taint, false); + interpreter.print("lat=" + allLatencies.length); + if (taint) { + minMaxArray = dgraph.latencyMinMaxAnalysisTaintedData(task1, task2, transFile1); + } else { + minMaxArray = dgraph.latencyMinMaxAnalysis(task1, task2, transFile1); + } + // dgt.getRowDetailsMinMax(1); + // taskHWByRowDetails = dgt.getTasksByRowMinMax(1); + interpreter.print("minMaxArray.length=" + minMaxArray.length); + // interpreter.print("taskHWByRowDetails.length=" + taskHWByRowDetails.length); + // taskHWByRowDetails = dgt.getTaskHWByRowDetailsMinMax(1); + // interpreter.print("taskHWByRowDetails.length=" + taskHWByRowDetails.length); + dgraph.saveLAtencyValuesToXML(filename); + } else { + interpreter.print("one of the inputs is empty"); + } + return null; + } } diff --git a/src/main/java/simulationtraceanalysis/CompareSimulationTrace.java b/src/main/java/simulationtraceanalysis/CompareSimulationTrace.java new file mode 100644 index 0000000000000000000000000000000000000000..00f959a7f830d17e43c4277fc06e3b0cd3ead209 --- /dev/null +++ b/src/main/java/simulationtraceanalysis/CompareSimulationTrace.java @@ -0,0 +1,178 @@ +/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + * + * ludovic.apvrille AT enst.fr + * + * This software is a computer program whose purpose is to allow the + * edition of TURTLE analysis, design and deployment diagrams, to + * allow the generation of RT-LOTOS or Java code from this diagram, + * and at last to allow the analysis of formal validation traces + * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + * from INRIA Rhone-Alpes. + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited + * liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + */ +package simulationtraceanalysis; + +import java.util.Vector; +import javax.swing.JPanel; +import javax.swing.JTable; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; +import javax.swing.table.TableColumn; +import javax.swing.table.TableColumnModel; +import javax.swing.table.TableModel; +import ui.interactivesimulation.SimulationTransaction; +import ui.simulationtraceanalysis.SimulationTraceTableRenderer; + +/** + * Class JPanelCompareXmlGraph : arranges the two simulation traces in a table + * and load the table to the compare pop up . It includes functionality to show + * the difference in the simulation traces and to load the drop down for latency + * compare later + * + * Creation: 19/07/2019 + * + * @author Maysam ZOOR + */ +public class CompareSimulationTrace extends JPanel implements TableModelListener { + private static JTable table; + private String[] columnNames; + private Object[][] data; + + public TableModel JPanelCompareXmlGraph(Vector<SimulationTransaction> transFile1, Vector<SimulationTransaction> transFile2) { + // super(new GridLayout(1, 0)); + if (!transFile1.isEmpty() || !transFile2.isEmpty()) { + int maxTime = -1; + Vector<String> deviceNames1 = new Vector<String>(); + Vector<String> deviceNames2 = new Vector<String>(); + for (SimulationTransaction st : transFile1) { + if (Integer.parseInt(st.endTime) > maxTime) { + maxTime = Integer.parseInt(st.endTime); + } + if (!deviceNames1.contains(st.deviceName)) { + deviceNames1.add(st.deviceName); + } + } + for (SimulationTransaction st : transFile2) { + if (Integer.parseInt(st.endTime) > maxTime) { + maxTime = Integer.parseInt(st.endTime); + } + if (!deviceNames2.contains(st.deviceName)) { + deviceNames2.add(st.deviceName); + } + } + Vector<String> allDevices = new Vector<String>(); + for (String device : deviceNames1) { + if (!deviceNames2.contains(device)) { + allDevices.add(device.concat("1")); + } else { + allDevices.add(device.concat("1")); + allDevices.add(device.concat("2")); + } + } + for (String device : deviceNames2) { + if (!deviceNames1.contains(device)) { + allDevices.add(device.concat("2")); + } + } + columnNames = new String[maxTime + 2]; + data = new Object[deviceNames1.size() + deviceNames2.size()][maxTime + 2]; + columnNames[0] = "Device Name"; + columnNames[1] = "Trace Name"; + for (SimulationTransaction st : transFile1) { + for (String dName : deviceNames1) { + if (st.deviceName.equals(dName)) { + for (int i = 0; i < Integer.parseInt(st.length); i++) { + String[] sentences2 = null; + sentences2 = st.command.split("__"); + if (sentences2[0].contains(",") && sentences2.length > 1) { + String[] writeCommand = sentences2[0].split(","); + st.command = writeCommand[0] + " " + sentences2[1]; + } else if (sentences2[0].contains(" ") && sentences2.length > 1) { + String[] writeCommand = sentences2[0].split(" "); + st.command = writeCommand[0] + " " + sentences2[1]; + } + data[allDevices.indexOf(dName.concat("1"))][Integer.parseInt(st.startTime) + i + 2] = st.command; + ; + data[allDevices.indexOf(dName.concat("1"))][1] = "transFile 1"; + } + } + } + } + for (SimulationTransaction st : transFile2) { + for (String dName : deviceNames2) { + if (st.deviceName.equals(dName)) { + for (int i = 0; i < Integer.parseInt(st.length); i++) { + String[] sentences2 = null; + sentences2 = st.command.split("__"); + if (sentences2[0].contains(",") && sentences2.length > 1) { + String[] writeCommand = sentences2[0].split(","); + st.command = writeCommand[0] + " " + sentences2[1]; + } else if (sentences2[0].contains(" ") && sentences2.length > 1) { + String[] writeCommand = sentences2[0].split(" "); + st.command = writeCommand[0] + " " + sentences2[1]; + } + data[allDevices.indexOf(dName.concat("2"))][Integer.parseInt(st.startTime) + i + 2] = st.command; + data[allDevices.indexOf(dName.concat("2"))][1] = "transFile 2"; + } + } + } + } + for (String dName : allDevices) { + data[allDevices.indexOf(dName)][0] = dName.substring(0, dName.length() - 1); + ; + } + for (int i = 2; i < maxTime + 2; i++) { + columnNames[i] = Integer.toString(i - 2); + } + table = new JTable(data, columnNames); + table.setFillsViewportHeight(true); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + SimulationTraceTableRenderer tr = new SimulationTraceTableRenderer(); + int ncols = table.getColumnCount(); + table.getModel().addTableModelListener(this); + TableColumnModel tcm = table.getColumnModel(); + for (int c = 0; c < ncols; c++) { + TableColumn tc = tcm.getColumn(c); + tc.setCellRenderer(tr); + } + } + return table.getModel(); + } + + @Override + public void tableChanged(TableModelEvent e) { + } + + public JTable getTable() { + return table; + } + + public static void setTable(TableModel tableModel) { + table.setModel(tableModel); + } +} diff --git a/src/main/java/simulationtraceanalysis/DependencyGraphRelations.java b/src/main/java/simulationtraceanalysis/DependencyGraphRelations.java new file mode 100644 index 0000000000000000000000000000000000000000..af3a9e69bb1f6a1ac19aa887489c4664af7d8331 --- /dev/null +++ b/src/main/java/simulationtraceanalysis/DependencyGraphRelations.java @@ -0,0 +1,203 @@ +package simulationtraceanalysis; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Vector; + +public class DependencyGraphRelations { + private final HashMap<String, HashSet<String>> sendEventWaitEventEdges = new HashMap<String, HashSet<String>>(); + private final HashMap<String, HashSet<String>> readWriteChannelEdges = new HashMap<String, HashSet<String>>(); + private final HashMap<String, HashSet<String>> writeReadChannelEdges = new HashMap<String, HashSet<String>>(); + private final HashMap<String, HashSet<String>> forkreadEdges = new HashMap<String, HashSet<String>>(); + private final HashMap<String, HashSet<String>> forkwriteEdges = new HashMap<String, HashSet<String>>(); + private final HashMap<String, HashSet<String>> joinreadEdges = new HashMap<String, HashSet<String>>(); + private final HashMap<String, HashSet<String>> joinwriteEdges = new HashMap<String, HashSet<String>>(); + private final HashMap<String, HashSet<String>> sequenceEdges = new HashMap<String, HashSet<String>>(); + private final HashMap<String, ArrayList<String>> orderedSequenceList = new HashMap<String, ArrayList<String>>(); + private final HashMap<String, HashSet<String>> unOrderedSequenceEdges = new HashMap<String, HashSet<String>>(); + private final HashMap<String, ArrayList<String>> unOrderedSequenceList = new HashMap<String, ArrayList<String>>(); + private HashMap<String, ArrayList<ArrayList<Integer>>> runnableTimePerDevice = new HashMap<String, ArrayList<ArrayList<Integer>>>(); + private HashMap<String, List<String>> allForLoopNextValues = new HashMap<String, List<String>>(); + private HashMap<Vertex, List<Vertex>> allChoiceValues = new HashMap<Vertex, List<Vertex>>(); + private HashMap<Vertex, List<Vertex>> allSelectEvtValues = new HashMap<Vertex, List<Vertex>>(); + private HashMap<Vertex, List<Vertex>> allSeqValues = new HashMap<Vertex, List<Vertex>>(); + private HashMap<Vertex, List<Vertex>> allRandomSeqValues = new HashMap<Vertex, List<Vertex>>(); + private final List<String> forEverLoopList = new ArrayList<String>(); + private final HashMap<String, HashSet<String>> requestEdges = new HashMap<String, HashSet<String>>(); + private final HashMap<String, List<String>> requestsOriginDestination = new HashMap<String, List<String>>(); + private final HashMap<String, List<String>> requestsPorts = new HashMap<String, List<String>>(); + private final HashMap<String, List<String>> requestsDestination = new HashMap<String, List<String>>(); + private HashMap<String, List<String>> forLoopNextValues = new HashMap<String, List<String>>(); + private HashMap<String, List<String>> sendEvt = new HashMap<String, List<String>>(); + private HashMap<String, List<String>> waitEvt = new HashMap<String, List<String>>(); + private HashMap<String, String> sendData = new HashMap<String, String>(); + private HashMap<String, String> receiveData = new HashMap<String, String>(); + private Vector<String> readChannelTransactions = new Vector<String>(); + private Vector<String> writeChannelTransactions = new Vector<String>(); + private HashMap<Vertex, List<Vertex>> ruleAddedEdges = new HashMap<Vertex, List<Vertex>>(); + private HashMap<Vertex, List<Vertex>> ruleAddedEdgesChannels = new HashMap<Vertex, List<Vertex>>(); + + public void setRuleAddedEdgesChannels(HashMap<Vertex, List<Vertex>> ruleAddedEdgesChannels) { + this.ruleAddedEdgesChannels = ruleAddedEdgesChannels; + } + + private HashMap<String, Integer> cpuIDs = new HashMap<String, Integer>(); + + public void setForLoopNextValues(HashMap<String, List<String>> forLoopNextValues) { + this.forLoopNextValues = forLoopNextValues; + } + + public void setSendEvt(HashMap<String, List<String>> sendEvt) { + this.sendEvt = sendEvt; + } + + public void setWaitEvt(HashMap<String, List<String>> waitEvt) { + this.waitEvt = waitEvt; + } + + public void setSendData(HashMap<String, String> sendData) { + this.sendData = sendData; + } + + public void setReceiveData(HashMap<String, String> receiveData) { + this.receiveData = receiveData; + } + + public List<String> getForEverLoopList() { + return forEverLoopList; + } + + public HashMap<String, HashSet<String>> getRequestEdges() { + return requestEdges; + } + + public HashMap<String, List<String>> getRequestsOriginDestination() { + return requestsOriginDestination; + } + + public HashMap<String, List<String>> getRequestsPorts() { + return requestsPorts; + } + + public HashMap<String, List<String>> getRequestsDestination() { + return requestsDestination; + } + + public HashMap<String, List<String>> getForLoopNextValues() { + return forLoopNextValues; + } + + public HashMap<String, List<String>> getSendEvt() { + return sendEvt; + } + + public HashMap<String, List<String>> getWaitEvt() { + return waitEvt; + } + + public HashMap<String, String> getSendData() { + return sendData; + } + + public HashMap<String, String> getReceiveData() { + return receiveData; + } + + public HashMap<String, HashSet<String>> getSendEventWaitEventEdges() { + return sendEventWaitEventEdges; + } + + public HashMap<String, HashSet<String>> getReadWriteChannelEdges() { + return readWriteChannelEdges; + } + + public HashMap<String, HashSet<String>> getWriteReadChannelEdges() { + return writeReadChannelEdges; + } + + public HashMap<String, HashSet<String>> getForkreadEdges() { + return forkreadEdges; + } + + public HashMap<String, HashSet<String>> getForkwriteEdges() { + return forkwriteEdges; + } + + public HashMap<String, HashSet<String>> getJoinreadEdges() { + return joinreadEdges; + } + + public HashMap<String, HashSet<String>> getJoinwriteEdges() { + return joinwriteEdges; + } + + public HashMap<String, HashSet<String>> getSequenceEdges() { + return sequenceEdges; + } + + public HashMap<String, ArrayList<String>> getOrderedSequenceList() { + return orderedSequenceList; + } + + public HashMap<String, HashSet<String>> getUnOrderedSequenceEdges() { + return unOrderedSequenceEdges; + } + + public HashMap<String, ArrayList<String>> getUnOrderedSequenceList() { + return unOrderedSequenceList; + } + + public HashMap<String, ArrayList<ArrayList<Integer>>> getRunnableTimePerDevice() { + return runnableTimePerDevice; + } + + public HashMap<String, List<String>> getAllForLoopNextValues() { + return allForLoopNextValues; + } + + public HashMap<Vertex, List<Vertex>> getAllChoiceValues() { + return allChoiceValues; + } + + public HashMap<Vertex, List<Vertex>> getAllSelectEvtValues() { + return allSelectEvtValues; + } + + public HashMap<Vertex, List<Vertex>> getAllSeqValues() { + return allSeqValues; + } + + public HashMap<Vertex, List<Vertex>> getAllRandomSeqValues() { + return allRandomSeqValues; + } + + public void setRunnableTimePerDevice(HashMap<String, ArrayList<ArrayList<Integer>>> runnableTimePerDevice) { + this.runnableTimePerDevice = runnableTimePerDevice; + } + + public Vector<String> getReadChannelTransactions() { + return readChannelTransactions; + } + + public Vector<String> getWriteChannelTransactions() { + return writeChannelTransactions; + } + + public HashMap<Vertex, List<Vertex>> getRuleAddedEdges() { + return ruleAddedEdges; + } + + public HashMap<Vertex, List<Vertex>> getRuleAddedEdgesChannels() { + return ruleAddedEdgesChannels; + } + + public HashMap<String, Integer> getCpuIDs() { + return cpuIDs; + } + + public void setRuleAddedEdges(HashMap<Vertex, List<Vertex>> ruleAddedEdges) { + this.ruleAddedEdges = ruleAddedEdges; + } +} diff --git a/src/main/java/ui/simulationtraceanalysis/DirectedGraphTranslator.java b/src/main/java/simulationtraceanalysis/DependencyGraphTranslator.java similarity index 76% rename from src/main/java/ui/simulationtraceanalysis/DirectedGraphTranslator.java rename to src/main/java/simulationtraceanalysis/DependencyGraphTranslator.java index 33492b3d6d3ae4fade5508a44bff171d9438ecb1..0992fec333c39ea59a993737cf23695bef857bac 100644 --- a/src/main/java/ui/simulationtraceanalysis/DirectedGraphTranslator.java +++ b/src/main/java/simulationtraceanalysis/DependencyGraphTranslator.java @@ -35,11 +35,43 @@ * The fact that you are presently reading this means that you have had * knowledge of the CeCILL license and that you accept its terms. */ -package ui.simulationtraceanalysis; +package simulationtraceanalysis; -import com.mxgraph.layout.hierarchical.mxHierarchicalLayout; -import com.mxgraph.swing.mxGraphComponent; -import avatartranslator.AvatarStateMachineElement; +import java.awt.Container; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.Random; +import java.util.Vector; +import javax.imageio.ImageIO; +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.SwingWorker; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.TransformerFactoryConfigurationError; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; import org.jgrapht.Graph; import org.jgrapht.GraphPath; import org.jgrapht.Graphs; @@ -48,44 +80,58 @@ import org.jgrapht.alg.shortestpath.DijkstraShortestPath; import org.jgrapht.ext.JGraphXAdapter; import org.jgrapht.graph.DefaultDirectedGraph; import org.jgrapht.graph.DefaultEdge; -import org.jgrapht.io.*; +import org.jgrapht.io.ComponentNameProvider; +import org.jgrapht.io.EdgeProvider; +import org.jgrapht.io.ExportException; +import org.jgrapht.io.GraphMLExporter; +import org.jgrapht.io.GraphMLImporter; +import org.jgrapht.io.ImportException; +import org.jgrapht.io.VertexProvider; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; -import tmltranslator.*; +import org.xml.sax.SAXException; +import com.mxgraph.layout.hierarchical.mxHierarchicalLayout; +import com.mxgraph.swing.mxGraphComponent; +import tmltranslator.DIPLOElement; +import tmltranslator.HwA; +import tmltranslator.HwCommunicationNode; +import tmltranslator.HwLink; +import tmltranslator.HwNode; +import tmltranslator.TMLActionState; +import tmltranslator.TMLActivity; +import tmltranslator.TMLActivityElement; +import tmltranslator.TMLAttribute; +import tmltranslator.TMLChannel; +import tmltranslator.TMLChoice; +import tmltranslator.TMLDelay; +import tmltranslator.TMLElement; +import tmltranslator.TMLEvent; +import tmltranslator.TMLExecC; +import tmltranslator.TMLExecCInterval; +import tmltranslator.TMLExecI; +import tmltranslator.TMLExecIInterval; +import tmltranslator.TMLForLoop; +import tmltranslator.TMLMapping; +import tmltranslator.TMLNotifiedEvent; +import tmltranslator.TMLRandom; +import tmltranslator.TMLRandomSequence; +import tmltranslator.TMLReadChannel; +import tmltranslator.TMLRequest; +import tmltranslator.TMLSelectEvt; +import tmltranslator.TMLSendEvent; +import tmltranslator.TMLSendRequest; +import tmltranslator.TMLSequence; +import tmltranslator.TMLStartState; +import tmltranslator.TMLStopState; +import tmltranslator.TMLTask; +import tmltranslator.TMLWaitEvent; +import tmltranslator.TMLWriteChannel; import tmltranslator.tomappingsystemc2.DiploSimulatorCodeGenerator; import ui.TGComponent; -import ui.TGConnectingPoint; -import ui.TGConnector; -import ui.TMLComponentDesignPanel; -import ui.ad.TADComponentWithSubcomponents; -import ui.ad.TADComponentWithoutSubcomponents; import ui.interactivesimulation.SimulationTransaction; -import ui.tmlad.*; +import ui.interactivesimulation.SimulationTransactionParser; import ui.tmlcompd.TMLCPrimitivePort; -import javax.imageio.ImageIO; -import javax.swing.*; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.TransformerFactoryConfigurationError; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.io.*; -import java.math.BigDecimal; -import java.util.*; -import java.util.List; -import java.util.Map.Entry; /** * Class DirectedGraphTranslator: this class generate the directed graph @@ -95,52 +141,25 @@ import java.util.Map.Entry; * * @author Maysam Zoor */ -public class DirectedGraphTranslator extends JApplet { - private TMLTask taskAc, task1, task2; +public class DependencyGraphTranslator extends SwingWorker { + private TMLTask taskAc; private TMLActivity activity; private int nodeNbProgressBar = 0; - private int nodeNb = 0; private TMLActivityElement currentElement; - private TMLActivityElement backwardElement; - private ArrayList<String> SummaryCommMapping; - private Graph<vertex, DefaultEdge> g; - private static final Dimension DEFAULT_SIZE = new Dimension(530, 320); - private List<TMLComponentDesignPanel> cpanels; + private Graph<Vertex, DefaultEdge> g; private final List<HwLink> links; private final TMLMapping<TGComponent> tmap; private final HashMap<String, String> addedEdges = new HashMap<String, String>(); - private final HashMap<String, HashSet<String>> sendEventWaitEventEdges = new HashMap<String, HashSet<String>>(); - private final HashMap<String, HashSet<String>> readWriteChannelEdges = new HashMap<String, HashSet<String>>(); - private final HashMap<String, HashSet<String>> writeReadChannelEdges = new HashMap<String, HashSet<String>>(); - private final HashMap<String, HashSet<String>> forkreadEdges = new HashMap<String, HashSet<String>>(); - private final HashMap<String, HashSet<String>> forkwriteEdges = new HashMap<String, HashSet<String>>(); - private final HashMap<String, HashSet<String>> joinreadEdges = new HashMap<String, HashSet<String>>(); - private final HashMap<String, HashSet<String>> joinwriteEdges = new HashMap<String, HashSet<String>>(); - private final HashMap<String, HashSet<String>> sequenceEdges = new HashMap<String, HashSet<String>>(); - private final HashMap<String, ArrayList<String>> orderedSequenceList = new HashMap<String, ArrayList<String>>(); - private final HashMap<String, HashSet<String>> unOrderedSequenceEdges = new HashMap<String, HashSet<String>>(); - private final HashMap<String, ArrayList<String>> unOrderedSequenceList = new HashMap<String, ArrayList<String>>(); - private final List<String> forEverLoopList = new ArrayList<String>(); - private final HashMap<String, List<TMLTask>> requests = new HashMap<String, List<TMLTask>>(); - private final HashMap<String, HashSet<String>> requestEdges = new HashMap<String, HashSet<String>>(); - private final HashMap<String, List<String>> requestsOriginDestination = new HashMap<String, List<String>>(); - private final HashMap<String, List<String>> requestsPorts = new HashMap<String, List<String>>(); - private final HashMap<String, List<String>> requestsDestination = new HashMap<String, List<String>>(); private final Vector<String> allLatencyTasks = new Vector<String>(); private static JScrollPane scrollPane = new JScrollPane(); private final HashMap<String, String> nameIDTaskList = new HashMap<String, String>(); private final HashMap<String, ArrayList<String>> channelPaths = new HashMap<String, ArrayList<String>>(); private Object[][] dataByTask = null; private Object[][] dataByTaskMinMax = null; - private Object[][] dataByTaskBYRow; - private Object[][] dataByTaskHWBYRow; private HashMap<Integer, Vector<SimulationTransaction>> dataByTaskR = new HashMap<Integer, Vector<SimulationTransaction>>(); private HashMap<Integer, List<SimulationTransaction>> dataBydelayedTasks = new HashMap<Integer, List<SimulationTransaction>>(); private HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>> timeDelayedPerRow = new HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>>(); private HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>> timeDelayedPerRowMinMax = new HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>>(); - private HashMap<Integer, List<String>> detailsOfMinMaxRow = new HashMap<Integer, List<String>>(); - private HashMap<Integer, List<SimulationTransaction>> dataBydelayedTasksOfMinMAx = new HashMap<Integer, List<SimulationTransaction>>(); - private final JFrame frame = new JFrame("The SysML Model As Directed Graph"); private List<Integer> times1 = new ArrayList<Integer>(); private List<Integer> times2 = new ArrayList<Integer>(); private Vector<SimulationTransaction> transFile; @@ -154,40 +173,19 @@ public class DirectedGraphTranslator extends JApplet { private Vector<SimulationTransaction> relatedsimTraces = new Vector<SimulationTransaction>(); private Vector<SimulationTransaction> delayDueTosimTraces = new Vector<SimulationTransaction>(); private HashMap<String, ArrayList<SimulationTransaction>> relatedsimTraceswithTaint = new HashMap<String, ArrayList<SimulationTransaction>>(); - private JFrameLatencyDetailedAnalysis frameLatencyDetailedAnalysis; - private JFrameCompareLatencyDetail frameCompareLatencyDetail; - private int callingFrame; private int nbOfNodes = 0; private List<String> usedLabels = new ArrayList<String>(); private List<String> warnings = new ArrayList<String>(); + private List<String> errors = new ArrayList<String>(); private static Random random = new Random(); - private static final String CHAR_LOWER = "abcdefghijklmnopqrstuvwxyz"; - private static final String CHAR_UPPER = CHAR_LOWER.toUpperCase(); - private static final String DATA = CHAR_LOWER + CHAR_UPPER; - private HashMap<String, ArrayList<ArrayList<Integer>>> runnableTimePerDevice = new HashMap<String, ArrayList<ArrayList<Integer>>>(); - private HashMap<String, List<String>> allForLoopNextValues = new HashMap<String, List<String>>(); - private HashMap<vertex, List<vertex>> allChoiceValues = new HashMap<vertex, List<vertex>>(); - private HashMap<vertex, List<vertex>> allSelectEvtValues = new HashMap<vertex, List<vertex>>(); - private HashMap<vertex, List<vertex>> allSeqValues = new HashMap<vertex, List<vertex>>(); - private HashMap<vertex, List<vertex>> allRandomSeqValues = new HashMap<vertex, List<vertex>>(); private String taintLabel = ""; - private Vector<String> readChannelTransactions = new Vector<String>(); - private Vector<String> writeChannelTransactions = new Vector<String>(); - private HashMap<vertex, List<vertex>> ruleAddedEdges = new HashMap<vertex, List<vertex>>(); - private HashMap<vertex, List<vertex>> ruleAddedEdgesChannels = new HashMap<vertex, List<vertex>>(); - private HashMap<String, Integer> cpuIDs = new HashMap<String, Integer>(); - private HashMap<String, Integer> fpgaIDs = new HashMap<String, Integer>(); - private HashMap<String, List<String>> forLoopNextValues = new HashMap<String, List<String>>(); private int opCount; - private HashMap<String, List<String>> sendEvt = new HashMap<String, List<String>>(); - private HashMap<String, List<String>> waitEvt = new HashMap<String, List<String>>(); - private HashMap<String, String> sendData = new HashMap<String, String>(); - private HashMap<String, String> receiveData = new HashMap<String, String>(); private String taskStartName = ""; private List<SimulationTransaction> onPath = new ArrayList<SimulationTransaction>(); private List<SimulationTransaction> offPath = new ArrayList<SimulationTransaction>(); private List<SimulationTransaction> offPathDelay = new ArrayList<SimulationTransaction>(); private final HashMap<String, Integer> allChannels = new HashMap<String, Integer>(); + private static final String MODEL_AS_GRAPH = "The SysML Model As Dependency Graph"; private static final String SELECT_EVENT_PARAM = "SelectEvent params:"; private static final String SELECT_EVENT = "SelectEvent"; private static final String TRANSACTIONS = "Transactions"; @@ -211,7 +209,7 @@ public class DirectedGraphTranslator extends JApplet { private static final String WAIT_REQ_LABEL = "Wait reqChannel_"; private static final String GET_REQ_ARG_LABEL = "getReqArg"; private static final String WAIT_ST = "Wait: "; - private static final String WAIT_EVENT = "wait event: "; + private static final String WAIT_EVENT = "Wait event: "; private static final String STOP_AFTER_INFINITE_LOOP = "Stop after infinite loop"; private static final String START_OF_FORK = "startOfFork"; private static final String START_OF_JOIN = "startOfJoin"; @@ -250,41 +248,30 @@ public class DirectedGraphTranslator extends JApplet { private static final String START = "start"; private static final String WAITEVENT = "waitevent:"; private static final String SENDEVENT = "sendevent:"; + private static final String CHAR_LOWER = "abcdefghijklmnopqrstuvwxyz"; + private static final String CHAR_UPPER = CHAR_LOWER.toUpperCase(); + private static final String DATA = CHAR_LOWER + CHAR_UPPER; + private final JFrame frame = new JFrame(MODEL_AS_GRAPH); + private DependencyGraphRelations dependencyGraphRelations = new DependencyGraphRelations(); @SuppressWarnings("deprecation") - public DirectedGraphTranslator(JFrameLatencyDetailedAnalysis jFrameLatencyDetailedAnalysis, JFrameCompareLatencyDetail jframeCompareLatencyDetail, - TMLMapping<TGComponent> tmap1, List<TMLComponentDesignPanel> cpanels1, int i) { + public DependencyGraphTranslator(TMLMapping<TGComponent> tmap1) { tmap = tmap1; - setCpanels(cpanels1); links = tmap.getTMLArchitecture().getHwLinks(); - callingFrame = i; - if (callingFrame == 0) { - frameLatencyDetailedAnalysis = jFrameLatencyDetailedAnalysis; - } else if (callingFrame == 1) { - frameCompareLatencyDetail = jframeCompareLatencyDetail; - } - DrawDirectedGraph(); + nodeNbProgressBar = 0; + nodeNbProgressBar = tmap.getArch().getBUSs().size() + tmap.getArch().getHwBridge().size() + tmap.getArch().getHwA().size() + + tmap.getArch().getMemories().size() + tmap.getArch().getCPUs().size(); + expectedNumberofVertex(); + // DrawDirectedGraph(); } // The main function to add the vertices and edges according to the model - public vertex vertex(String name, int id) { - vertex v = new vertex(name, id); + public Vertex Vertex(String name, int id) { + Vertex v = new Vertex(name, id); return v; } - private void DrawDirectedGraph() { - nodeNbProgressBar = 0; - nodeNbProgressBar = tmap.getArch().getBUSs().size() + tmap.getArch().getHwBridge().size() + tmap.getArch().getHwA().size() - + tmap.getArch().getMemories().size() + tmap.getArch().getCPUs().size(); - expectedNumberofVertex(); - if (callingFrame == 0) { - frameLatencyDetailedAnalysis.getPbar().setMaximum(nodeNbProgressBar); - frameLatencyDetailedAnalysis.getPbar().setMinimum(0); - } - if (callingFrame == 1) { - frameCompareLatencyDetail.getPbar().setMaximum(nodeNbProgressBar); - frameCompareLatencyDetail.getPbar().setMinimum(0); - } + public void DrawDirectedGraph() { nbOfNodes = 0; // HashMap<String, HashSet<String>> cpuTasks; HashMap<String, HashSet<TMLElement>> buschannel = new HashMap<String, HashSet<TMLElement>>(); @@ -313,6 +300,7 @@ public class DirectedGraphTranslator extends JApplet { addSeqEdges(); addunOrderedSeqEdges(); addRequestEdges(); + return; } private void addUnmappedchannel() { @@ -322,12 +310,12 @@ public class DirectedGraphTranslator extends JApplet { tmap.getHwNodeOf(ch.getDestinationTask()), ch); String channelName = ch.getName() + "__" + ch.getID(); if (!g.vertexSet().contains(getvertex(channelName))) { - g.addVertex(vertex(channelName, ch.getID())); + g.addVertex(Vertex(channelName, ch.getID())); allChannels.put(ch.getName(), ch.getID()); - vertex v = getvertex(channelName); + Vertex v = getvertex(channelName); updateMainBar(); // gVertecies.add(vertex(ch.getName())); - v.setType(vertex.TYPE_CHANNEL); + v.setType(Vertex.getTypeChannel()); v.setTaintFixedNumber(0); updateMainBar(); } @@ -343,10 +331,10 @@ public class DirectedGraphTranslator extends JApplet { channelPaths.put(channelName, pathNodeNames); } if (!g.vertexSet().contains(getvertex(node.getName()))) { - g.addVertex(vertex(node.getName(), node.getID())); + g.addVertex(Vertex(node.getName(), node.getID())); } if (!g.vertexSet().contains(getvertex(channelName))) { - g.addVertex(vertex(channelName, ch.getID())); + g.addVertex(Vertex(channelName, ch.getID())); allChannels.put(ch.getName(), ch.getID()); } if (!g.containsEdge(getvertex(node.getName()), getvertex(channelName))) { @@ -355,14 +343,14 @@ public class DirectedGraphTranslator extends JApplet { } } } - SummaryCommMapping = tmap.getSummaryCommMapping(); + // SummaryCommMapping = tmap.getSummaryCommMapping(); } private void addCPUs() { HashMap<String, HashSet<TMLTask>> cpuTask = new HashMap<String, HashSet<TMLTask>>(); for (HwNode node : tmap.getArch().getCPUs()) { cpuTask = new HashMap<String, HashSet<TMLTask>>(); - cpuIDs.put(node.getName(), node.getID()); + dependencyGraphRelations.getCpuIDs().put(node.getName(), node.getID()); if (tmap.getLisMappedTasks(node).size() > 0) { cpuTask.put(node.getName(), tmap.getLisMappedTasks(node)); } @@ -376,7 +364,7 @@ public class DirectedGraphTranslator extends JApplet { HashMap<String, HashSet<TMLTask>> cpuTask = new HashMap<String, HashSet<TMLTask>>(); for (HwNode node : tmap.getArch().getFPGAs()) { cpuTask = new HashMap<String, HashSet<TMLTask>>(); - cpuIDs.put(node.getName(), node.getID()); + dependencyGraphRelations.getCpuIDs().put(node.getName(), node.getID()); if (tmap.getLisMappedTasks(node).size() > 0) { cpuTask.put(node.getName(), tmap.getLisMappedTasks(node)); } @@ -393,10 +381,10 @@ public class DirectedGraphTranslator extends JApplet { for (TMLElement busCh : busChList) { String channelName = busCh.getName() + "__" + busCh.getID(); if (!g.containsVertex(getvertex(channelName))) { - g.addVertex(vertex(channelName, busCh.getID())); + g.addVertex(Vertex(channelName, busCh.getID())); allChannels.put(busCh.getName(), busCh.getID()); updateMainBar(); - getvertex(channelName).setType(vertex.TYPE_CHANNEL); + getvertex(channelName).setType(Vertex.getTypeChannel()); // gVertecies.add(vertex(ChannelName)); getvertex(channelName).setTaintFixedNumber(0); updateMainBar(); @@ -413,10 +401,10 @@ public class DirectedGraphTranslator extends JApplet { for (TMLElement busCh : busChList) { String ChannelName = busCh.getName() + "__" + busCh.getID(); if (!g.containsVertex(getvertex(ChannelName))) { - g.addVertex(vertex(ChannelName, busCh.getID())); + g.addVertex(Vertex(ChannelName, busCh.getID())); allChannels.put(busCh.getName(), busCh.getID()); updateMainBar(); - getvertex(ChannelName).setType(vertex.TYPE_CHANNEL); + getvertex(ChannelName).setType(Vertex.getTypeChannel()); // gVertecies.add(vertex(ChannelName)); getvertex(ChannelName).setTaintFixedNumber(0); updateMainBar(); @@ -433,10 +421,10 @@ public class DirectedGraphTranslator extends JApplet { for (TMLElement busCh : busChList) { String ChannelName = busCh.getName() + "__" + busCh.getID(); if (!g.containsVertex(getvertex(ChannelName))) { - g.addVertex(vertex(ChannelName, busCh.getID())); + g.addVertex(Vertex(ChannelName, busCh.getID())); allChannels.put(busCh.getName(), busCh.getID()); updateMainBar(); - getvertex(ChannelName).setType(vertex.TYPE_CHANNEL); + getvertex(ChannelName).setType(Vertex.getTypeChannel()); // gVertecies.add(vertex(ChannelName)); getvertex(ChannelName).setTaintFixedNumber(0); updateMainBar(); @@ -450,7 +438,7 @@ public class DirectedGraphTranslator extends JApplet { HashMap<String, HashSet<TMLElement>> memorychannel = new HashMap<String, HashSet<TMLElement>>(); for (HwNode node : tmap.getArch().getMemories()) { if (!g.containsVertex(getvertex(node.getName()))) { - g.addVertex(vertex(node.getName(), node.getID())); + g.addVertex(Vertex(node.getName(), node.getID())); updateMainBar(); } if (tmap.getLisMappedChannels(node).size() > 0) { @@ -464,7 +452,7 @@ public class DirectedGraphTranslator extends JApplet { HashMap<String, HashSet<TMLTask>> cpuTask = new HashMap<String, HashSet<TMLTask>>(); for (HwA node : tmap.getArch().getHwA()) { cpuTask = new HashMap<String, HashSet<TMLTask>>(); - cpuIDs.put(node.getName(), node.getID()); + dependencyGraphRelations.getCpuIDs().put(node.getName(), node.getID()); if (tmap.getLisMappedTasks(node).size() > 0) { cpuTask.put(node.getName(), tmap.getLisMappedTasks(node)); } @@ -478,7 +466,7 @@ public class DirectedGraphTranslator extends JApplet { HashMap<String, HashSet<TMLElement>> bridgechannel = new HashMap<String, HashSet<TMLElement>>(); for (HwNode node : tmap.getArch().getHwBridge()) { if (!g.containsVertex(getvertex(node.getName()))) { - g.addVertex(vertex(node.getName(), node.getID())); + g.addVertex(Vertex(node.getName(), node.getID())); updateMainBar(); } if (tmap.getLisMappedChannels(node).size() > 0) { @@ -492,7 +480,7 @@ public class DirectedGraphTranslator extends JApplet { HashMap<String, HashSet<TMLElement>> buschannel = new HashMap<String, HashSet<TMLElement>>(); for (HwNode node : tmap.getArch().getBUSs()) { if (!g.containsVertex(getvertex(node.getName()))) { - g.addVertex(vertex(node.getName(), node.getID())); + g.addVertex(Vertex(node.getName(), node.getID())); updateMainBar(); } if (tmap.getLisMappedChannels(node).size() > 0) { @@ -504,8 +492,8 @@ public class DirectedGraphTranslator extends JApplet { private void addLinkEdges() { for (HwLink link : links) { - vertex vlink1 = vertex(link.hwnode.getName(), link.hwnode.getID()); - vertex vlink2 = vertex(link.bus.getName(), link.bus.getID()); + Vertex vlink1 = Vertex(link.hwnode.getName(), link.hwnode.getID()); + Vertex vlink2 = Vertex(link.bus.getName(), link.bus.getID()); if (g.containsVertex(getvertex(link.hwnode.getName())) && g.containsVertex(getvertex(link.bus.getName()))) { g.addEdge(vlink1, vlink2); g.addEdge(vlink2, vlink1); @@ -516,8 +504,8 @@ public class DirectedGraphTranslator extends JApplet { private void addFlowEdges() { if (addedEdges.size() > 0) { for (Entry<String, String> edge : addedEdges.entrySet()) { - vertex v = getvertex(edge.getKey()); - vertex v2 = getvertex(edge.getValue()); + Vertex v = getvertex(edge.getKey()); + Vertex v2 = getvertex(edge.getValue()); if (v != null && v2 != null) { g.addEdge(v, v2); } @@ -526,11 +514,11 @@ public class DirectedGraphTranslator extends JApplet { } private void addSendEventWaitEventEdges() { - if (sendEventWaitEventEdges.size() > 0) { - for (Entry<String, HashSet<String>> edge : sendEventWaitEventEdges.entrySet()) { - vertex v = getvertex(edge.getKey()); + if (dependencyGraphRelations.getSendEventWaitEventEdges().size() > 0) { + for (Entry<String, HashSet<String>> edge : dependencyGraphRelations.getSendEventWaitEventEdges().entrySet()) { + Vertex v = getvertex(edge.getKey()); for (String waitEventEdge : edge.getValue()) { - vertex v2 = getvertex(waitEventEdge); + Vertex v2 = getvertex(waitEventEdge); if (v != null && v2 != null) { g.addEdge(v, v2); } @@ -540,12 +528,12 @@ public class DirectedGraphTranslator extends JApplet { } private void addReadWriteChannelEdges() { - if (readWriteChannelEdges.size() > 0) { - for (Entry<String, HashSet<String>> edge : readWriteChannelEdges.entrySet()) { + if (dependencyGraphRelations.getReadWriteChannelEdges().size() > 0) { + for (Entry<String, HashSet<String>> edge : dependencyGraphRelations.getReadWriteChannelEdges().entrySet()) { Integer id = allChannels.get(edge.getKey()); - vertex v = getvertex(edge.getKey() + "__" + id); + Vertex v = getvertex(edge.getKey() + "__" + id); for (String readChannelEdge : edge.getValue()) { - vertex v2 = getvertex(readChannelEdge); + Vertex v2 = getvertex(readChannelEdge); if (v != null && v2 != null) { g.addEdge(v, v2); v.setTaintFixedNumber(v.getTaintFixedNumber() + 1); @@ -556,14 +544,14 @@ public class DirectedGraphTranslator extends JApplet { } private void addForkreadEdges() { - if (forkreadEdges.size() > 0) { - for (Entry<String, HashSet<String>> edge : forkreadEdges.entrySet()) { - HashSet<String> writech = forkwriteEdges.get(edge.getKey()); + if (dependencyGraphRelations.getForkreadEdges().size() > 0) { + for (Entry<String, HashSet<String>> edge : dependencyGraphRelations.getForkreadEdges().entrySet()) { + HashSet<String> writech = dependencyGraphRelations.getForkwriteEdges().get(edge.getKey()); for (String readChannelEdge : edge.getValue()) { - vertex v = getvertex(readChannelEdge); + Vertex v = getvertex(readChannelEdge); if (v != null) { for (String wch : writech) { - vertex v2 = getvertex(wch); + Vertex v2 = getvertex(wch); if (v2 != null) { g.addEdge(v, v2); } @@ -576,14 +564,14 @@ public class DirectedGraphTranslator extends JApplet { // draw the vertices and edges for the tasks mapped to the CPUs private void addJoinreadEdges() { - if (joinreadEdges.size() > 0) { - for (Entry<String, HashSet<String>> edge : joinreadEdges.entrySet()) { - HashSet<String> writech = joinwriteEdges.get(edge.getKey()); + if (dependencyGraphRelations.getJoinreadEdges().size() > 0) { + for (Entry<String, HashSet<String>> edge : dependencyGraphRelations.getJoinreadEdges().entrySet()) { + HashSet<String> writech = dependencyGraphRelations.getJoinwriteEdges().get(edge.getKey()); for (String readChannelEdge : edge.getValue()) { - vertex v = getvertex(readChannelEdge); + Vertex v = getvertex(readChannelEdge); if (v != null) { for (String wch : writech) { - vertex v2 = getvertex(wch); + Vertex v2 = getvertex(wch); if (v2 != null) { g.addEdge(v, v2); } @@ -595,12 +583,12 @@ public class DirectedGraphTranslator extends JApplet { } private void addWriteReadChannelEdges() { - if (writeReadChannelEdges.size() > 0) { - for (Entry<String, HashSet<String>> edge : writeReadChannelEdges.entrySet()) { + if (dependencyGraphRelations.getWriteReadChannelEdges().size() > 0) { + for (Entry<String, HashSet<String>> edge : dependencyGraphRelations.getWriteReadChannelEdges().entrySet()) { for (String readChannelEdge : edge.getValue()) { Integer id = allChannels.get(readChannelEdge); - vertex v = getvertex(edge.getKey()); - vertex v2 = getvertex(readChannelEdge + "__" + id); + Vertex v = getvertex(edge.getKey()); + Vertex v2 = getvertex(readChannelEdge + "__" + id); if (v != null && v2 != null) { g.addEdge(v, v2); v2.setTaintFixedNumber(v2.getTaintFixedNumber() + 1); @@ -611,11 +599,11 @@ public class DirectedGraphTranslator extends JApplet { } private void addRequestEdges() { - if (requestEdges.size() > 0) { - for (Entry<String, HashSet<String>> edge : requestEdges.entrySet()) { - vertex v = getvertex(edge.getKey()); + if (dependencyGraphRelations.getRequestEdges().size() > 0) { + for (Entry<String, HashSet<String>> edge : dependencyGraphRelations.getRequestEdges().entrySet()) { + Vertex v = getvertex(edge.getKey()); for (String requestsingleEdges : edge.getValue()) { - vertex v2 = getvertex(requestsingleEdges); + Vertex v2 = getvertex(requestsingleEdges); if (v != null && v2 != null) { g.addEdge(v, v2); } @@ -625,11 +613,11 @@ public class DirectedGraphTranslator extends JApplet { } private void addunOrderedSeqEdges() { - if (unOrderedSequenceEdges.size() > 0) { - for (Entry<String, HashSet<String>> edge : unOrderedSequenceEdges.entrySet()) { - vertex v = getvertex(edge.getKey()); + if (dependencyGraphRelations.getUnOrderedSequenceEdges().size() > 0) { + for (Entry<String, HashSet<String>> edge : dependencyGraphRelations.getUnOrderedSequenceEdges().entrySet()) { + Vertex v = getvertex(edge.getKey()); for (String sequenceEdge : edge.getValue()) { - vertex v2 = getvertex(sequenceEdge); + Vertex v2 = getvertex(sequenceEdge); if (v != null && v2 != null) { g.addEdge(v, v2); } @@ -639,11 +627,11 @@ public class DirectedGraphTranslator extends JApplet { } private void addSeqEdges() { - if (sequenceEdges.size() > 0) { - for (Entry<String, HashSet<String>> edge : sequenceEdges.entrySet()) { - vertex v = getvertex(edge.getKey()); + if (dependencyGraphRelations.getSequenceEdges().size() > 0) { + for (Entry<String, HashSet<String>> edge : dependencyGraphRelations.getSequenceEdges().entrySet()) { + Vertex v = getvertex(edge.getKey()); for (String sequenceEdge : edge.getValue()) { - vertex v2 = getvertex(sequenceEdge); + Vertex v2 = getvertex(sequenceEdge); if (v != null && v2 != null) { g.addEdge(v, v2); } @@ -720,11 +708,7 @@ public class DirectedGraphTranslator extends JApplet { private void updateMainBar() { nbOfNodes++; - if (callingFrame == 0) { - frameLatencyDetailedAnalysis.updateBar(nbOfNodes); - } else if (callingFrame == 1) { - frameCompareLatencyDetail.updateBar(nbOfNodes); - } + firePropertyChange("progress", nbOfNodes - 1, nbOfNodes); } public void getCPUTaskMap(HashMap<String, HashSet<TMLTask>> cpuTask) { @@ -734,15 +718,16 @@ public class DirectedGraphTranslator extends JApplet { } for (Entry<String, HashSet<TMLTask>> entry : cpuTask.entrySet()) { String key = entry.getKey(); - int keyID = cpuIDs.get(key); + int keyID = dependencyGraphRelations.getCpuIDs().get(key); HashSet<TMLTask> value = entry.getValue(); Vector<TMLActivityElement> multiNexts = new Vector<TMLActivityElement>(); - // Map <String, String> sendEvt; - sendEvt = new HashMap<String, List<String>>(); - waitEvt = new HashMap<String, List<String>>(); - sendData = new HashMap<String, String>(); - receiveData = new HashMap<String, String>(); - // HashMap<String, List<String>> sendEvt = new HashMap<String, List<String>>(); + // Map <String, String> dependencyGraphRelations.getSendEvt(); + dependencyGraphRelations.setSendEvt(new HashMap<String, List<String>>()); + dependencyGraphRelations.setWaitEvt(new HashMap<String, List<String>>()); + dependencyGraphRelations.setSendData(new HashMap<String, String>()); + dependencyGraphRelations.setReceiveData(new HashMap<String, String>()); + // HashMap<String, List<String>> dependencyGraphRelations.getSendEvt() = new + // HashMap<String, List<String>>(); // GEt List of all requests requestedTask(value); for (TMLTask task : value) { @@ -763,11 +748,11 @@ public class DirectedGraphTranslator extends JApplet { waitEventNames(); // add the name of the task as a vertex if (!g.vertexSet().contains(getvertex(key))) { - g.addVertex(vertex(key, keyID)); + g.addVertex(Vertex(key, keyID)); updateMainBar(); } if (!g.vertexSet().contains(getvertex(taskName))) { - g.addVertex(vertex(taskName, taskID)); + g.addVertex(Vertex(taskName, taskID)); updateMainBar(); } g.addEdge(getvertex(key), getvertex(taskName)); @@ -776,7 +761,7 @@ public class DirectedGraphTranslator extends JApplet { currentElement = activity.getFirst(); taskStartName = ""; // int taskStartid; - forLoopNextValues = new HashMap<String, List<String>>(); + dependencyGraphRelations.setForLoopNextValues(new HashMap<String, List<String>>()); // loop over all the activites corresponding to a task while (opCount <= activity.nElements()) { String eventName = null; @@ -806,18 +791,18 @@ public class DirectedGraphTranslator extends JApplet { int id = ((TMLReadChannel) (currentElement)).getChannel(0).getID(); name = name + "__" + id; if (!g.containsVertex(getvertex(name))) { - g.addVertex(vertex(name, id)); + g.addVertex(Vertex(name, id)); updateMainBar(); } g.addEdge(getvertex(taskName), getvertex(name)); HashSet<String> readForkVertex = new HashSet<String>(); readForkVertex.add(name); - if (forkreadEdges.containsKey(taskName)) { - if (!forkreadEdges.get(taskName).contains(name)) { - forkreadEdges.get(taskName).add(name); + if (dependencyGraphRelations.getForkreadEdges().containsKey(taskName)) { + if (!dependencyGraphRelations.getForkreadEdges().get(taskName).contains(name)) { + dependencyGraphRelations.getForkreadEdges().get(taskName).add(name); } } else { - forkreadEdges.put(taskName, readForkVertex); + dependencyGraphRelations.getForkreadEdges().put(taskName, readForkVertex); } opCount++; updateMainBar(); @@ -827,19 +812,19 @@ public class DirectedGraphTranslator extends JApplet { String vName = ((TMLWriteChannel) (currentElement)).getChannel(0).getName(); int vid = ((TMLWriteChannel) (currentElement)).getChannel(0).getID(); vName = vName + "__" + vid; - vertex v = getvertex(vName); + Vertex v = getvertex(vName); if (!g.containsVertex(v)) { - g.addVertex(vertex(vName, vid)); + g.addVertex(Vertex(vName, vid)); updateMainBar(); } HashSet<String> writeForkVertex = new HashSet<String>(); writeForkVertex.add(vName); - if (forkwriteEdges.containsKey(taskName)) { - if (!forkwriteEdges.get(taskName).contains(vName)) { - forkwriteEdges.get(taskName).add(vName); + if (dependencyGraphRelations.getForkwriteEdges().containsKey(taskName)) { + if (!dependencyGraphRelations.getForkwriteEdges().get(taskName).contains(vName)) { + dependencyGraphRelations.getForkwriteEdges().get(taskName).add(vName); } } else { - forkwriteEdges.put(taskName, writeForkVertex); + dependencyGraphRelations.getForkwriteEdges().put(taskName, writeForkVertex); } // g.addEdge(getvertex(taskName),getvertex(((TMLWriteChannel)(currentElement)).getChannel(0).getName())); opCount++; @@ -857,17 +842,17 @@ public class DirectedGraphTranslator extends JApplet { int vid = ((TMLReadChannel) (currentElement)).getChannel(0).getID(); vName = vName + "__" + vid; if (!g.containsVertex(getvertex(vName))) { - g.addVertex(vertex(vName, vid)); + g.addVertex(Vertex(vName, vid)); updateMainBar(); } HashSet<String> writeForkVertex = new HashSet<String>(); writeForkVertex.add(vName); - if (joinreadEdges.containsKey(taskName)) { - if (!joinreadEdges.get(taskName).contains(vName)) { - joinreadEdges.get(task.getName()).add(vName); + if (dependencyGraphRelations.getJoinreadEdges().containsKey(taskName)) { + if (!dependencyGraphRelations.getJoinreadEdges().get(taskName).contains(vName)) { + dependencyGraphRelations.getJoinreadEdges().get(task.getName()).add(vName); } } else { - joinreadEdges.put(taskName, writeForkVertex); + dependencyGraphRelations.getJoinreadEdges().put(taskName, writeForkVertex); } // g.addEdge(getvertex(task.getName()),getvertex(((TMLWriteChannel)(currentElement)).getChannel(0).getName())); opCount++; @@ -879,18 +864,18 @@ public class DirectedGraphTranslator extends JApplet { int vid = ((TMLWriteChannel) (currentElement)).getChannel(0).getID(); vName = vName + "__" + vid; if (!g.containsVertex(getvertex(vName))) { - g.addVertex(vertex(vName, vid)); + g.addVertex(Vertex(vName, vid)); updateMainBar(); } g.addEdge(getvertex(taskName), getvertex(vName)); HashSet<String> readForkVertex = new HashSet<String>(); readForkVertex.add(vName); - if (joinwriteEdges.containsKey(taskName)) { - if (!joinwriteEdges.get(taskName).contains(vName)) { - joinwriteEdges.get(taskName).add(vName); + if (dependencyGraphRelations.getJoinwriteEdges().containsKey(taskName)) { + if (!dependencyGraphRelations.getJoinwriteEdges().get(taskName).contains(vName)) { + dependencyGraphRelations.getJoinwriteEdges().get(taskName).add(vName); } } else { - joinwriteEdges.put(taskName, readForkVertex); + dependencyGraphRelations.getJoinwriteEdges().put(taskName, readForkVertex); } opCount++; updateMainBar(); @@ -900,19 +885,19 @@ public class DirectedGraphTranslator extends JApplet { String vName = ((TMLSendEvent) (currentElement)).getEvent().getName(); int vid = ((TMLSendEvent) (currentElement)).getEvent().getID(); vName = vName + "__" + vid; - vertex v = getvertex(vName); + Vertex v = getvertex(vName); if (!g.containsVertex(v)) { - g.addVertex(vertex(vName, vid)); + g.addVertex(Vertex(vName, vid)); updateMainBar(); } HashSet<String> writeForkVertex = new HashSet<String>(); writeForkVertex.add(vName); - if (forkwriteEdges.containsKey(taskName)) { - if (!forkwriteEdges.get(taskName).contains(vName)) { - forkwriteEdges.get(taskName).add(vName); + if (dependencyGraphRelations.getForkwriteEdges().containsKey(taskName)) { + if (!dependencyGraphRelations.getForkwriteEdges().get(taskName).contains(vName)) { + dependencyGraphRelations.getForkwriteEdges().get(taskName).add(vName); } } else { - forkwriteEdges.put(taskName, writeForkVertex); + dependencyGraphRelations.getForkwriteEdges().put(taskName, writeForkVertex); } // g.addEdge(getvertex(taskName),getvertex(((TMLWriteChannel)(currentElement)).getChannel(0).getName())); opCount++; @@ -924,24 +909,24 @@ public class DirectedGraphTranslator extends JApplet { int id = ((TMLWaitEvent) (currentElement)).getEvent().getID(); name = name + "__" + id; if (!g.containsVertex(getvertex(name))) { - g.addVertex(vertex(name, id)); + g.addVertex(Vertex(name, id)); updateMainBar(); } g.addEdge(getvertex(taskName), getvertex(name)); HashSet<String> readForkVertex = new HashSet<String>(); readForkVertex.add(name); - if (forkreadEdges.containsKey(taskName)) { - if (!forkreadEdges.get(taskName).contains(name)) { - forkreadEdges.get(taskName).add(name); + if (dependencyGraphRelations.getForkreadEdges().containsKey(taskName)) { + if (!dependencyGraphRelations.getForkreadEdges().get(taskName).contains(name)) { + dependencyGraphRelations.getForkreadEdges().get(taskName).add(name); } } else { - forkreadEdges.put(taskName, readForkVertex); + dependencyGraphRelations.getForkreadEdges().put(taskName, readForkVertex); } opCount++; updateMainBar(); currentElement = currentElement.getNexts().firstElement(); continue; - } else if (currentElement.getReferenceObject() == null) { + } else if (currentElement == null) { opCount++; updateMainBar(); if (currentElement.getNexts().size() > 0) { @@ -958,25 +943,22 @@ public class DirectedGraphTranslator extends JApplet { // in case an end was encountered , the previous activities should be checked: // in // case it is an end for a loop or sequence speavial edges should be added - if (currentElement.getReferenceObject() != null && currentElement.getReferenceObject() instanceof TMLADStopState) { + if (currentElement != null && currentElement instanceof TMLStopState) { addStopVertex(taskName); } // start activity is added as a vertex - else if (currentElement.getReferenceObject() != null && currentElement.getReferenceObject() instanceof TMLADStartState) { + else if (currentElement != null && currentElement instanceof TMLStartState) { addStartVertex(taskName); } // the below activities are added as vertex with the required edges // these activities can be used to check later for latency - else if (currentElement.getReferenceObject() != null - && (currentElement.getReferenceObject() instanceof TADComponentWithoutSubcomponents - || currentElement.getReferenceObject() instanceof TADComponentWithSubcomponents - || currentElement.getReferenceObject() instanceof TMLADActionState)) { + else if (currentElement != null && currentElement instanceof DIPLOElement) { addcurrentElementVertex(taskName, taskStartName); } // check if the next activity :add to an array: // in case of for loop : the first element of inside/outside branches of loop // in case of sequence: add first element of all branches - if (currentElement.getReferenceObject() != null) { + if (currentElement != null) { if (currentElement.getNexts().size() == 1) { currentElement = currentElement.getNexts().firstElement(); } else if (!multiNexts.isEmpty()) { @@ -984,7 +966,7 @@ public class DirectedGraphTranslator extends JApplet { currentElement = multiNexts.get(0); multiNexts.remove(0); } - allForLoopNextValues.putAll(forLoopNextValues); + dependencyGraphRelations.getAllForLoopNextValues().putAll(dependencyGraphRelations.getForLoopNextValues()); } } } @@ -993,16 +975,14 @@ public class DirectedGraphTranslator extends JApplet { } private void trackMultiNexts(String taskName, String eventName) { - if (currentElement.getReferenceObject() != null && currentElement.getReferenceObject() instanceof TMLADForStaticLoop - || currentElement.getReferenceObject() instanceof TMLADForLoop) { + if (currentElement != null && currentElement instanceof TMLForLoop && !((TMLForLoop) currentElement).isInfinite()) { if (currentElement.getNexts().size() > 1) { - List<TGConnectingPoint> points = new ArrayList<TGConnectingPoint>(); - List<TGConnector> getOutputConnectors = new ArrayList<TGConnector>(); - if (currentElement.getReferenceObject() instanceof TMLADForStaticLoop) { - points = Arrays.asList(((TMLADForStaticLoop) (currentElement.getReferenceObject())).getConnectingPoints()); - getOutputConnectors = ((TMLADForStaticLoop) (currentElement.getReferenceObject())).getOutputConnectors(); - String loopValue = ((TMLADForStaticLoop) (currentElement.getReferenceObject())).getValue(); - getvertex(eventName).setType(vertex.TYPE_STATIC_FOR_LOOP); + getvertex(eventName).setType(Vertex.TYPE_FOR_LOOP); + String cond = ((TMLForLoop) (currentElement)).getCondition(); + if (cond.contains("<=")) { + String[] val = cond.split("<="); + String loopValue = val[2].toString(); + // int loopVal = Integer.valueOf(loopValue); if ((loopValue != null) && (loopValue.length() > 0)) { if ((loopValue.matches("\\d*"))) { getvertex(eventName).setTaintFixedNumber(Integer.valueOf(loopValue)); @@ -1015,143 +995,79 @@ public class DirectedGraphTranslator extends JApplet { getvertex(eventName).setTaintFixedNumber(Integer.valueOf(loopValue)); } } - } else if (currentElement.getReferenceObject() instanceof TMLADForLoop) { - points = Arrays.asList(((TMLADForLoop) (currentElement.getReferenceObject())).getConnectingPoints()); - getOutputConnectors = ((TMLADForLoop) (currentElement.getReferenceObject())).getOutputConnectors(); - // String loopValue = ((TMLADForLoop) - // (currentElement.getReferenceObject())).getValue(); - getvertex(eventName).setType(vertex.TYPE_FOR_LOOP); - String cond = ((TMLADForLoop) (currentElement.getReferenceObject())).getCondition(); - if (cond.contains("<=")) { - String[] val = cond.split("<="); - String loopValue = val[2].toString(); - // int loopVal = Integer.valueOf(loopValue); - if ((loopValue != null) && (loopValue.length() > 0)) { - if ((loopValue.matches("\\d*"))) { - getvertex(eventName).setTaintFixedNumber(Integer.valueOf(loopValue)); - } else { - for (TMLAttribute att : taskAc.getAttributes()) { - if (loopValue.contains(att.getName())) { - loopValue = loopValue.replace(att.getName(), (att.getInitialValue())); - } + } else if (cond.contains("<")) { + String[] val = cond.split("<"); + String loopValue = val[1].toString(); + // int loopVal = Integer.valueOf(loopValue); + if ((loopValue != null) && (loopValue.length() > 0)) { + if ((loopValue.matches("\\d*"))) { + getvertex(eventName).setTaintFixedNumber(Integer.valueOf(loopValue)); + } else { + for (TMLAttribute att : taskAc.getAttributes()) { + if (loopValue.contains(att.getName())) { + loopValue = loopValue.replace(att.getName(), (att.getInitialValue())); } - getvertex(eventName).setTaintFixedNumber(Integer.valueOf(loopValue)); } - } - } else if (cond.contains("<")) { - String[] val = cond.split("<"); - String loopValue = val[1].toString(); - // int loopVal = Integer.valueOf(loopValue); - if ((loopValue != null) && (loopValue.length() > 0)) { if ((loopValue.matches("\\d*"))) { getvertex(eventName).setTaintFixedNumber(Integer.valueOf(loopValue)); } else { - for (TMLAttribute att : taskAc.getAttributes()) { - if (loopValue.contains(att.getName())) { - loopValue = loopValue.replace(att.getName(), (att.getInitialValue())); - } - } - if ((loopValue.matches("\\d*"))) { - getvertex(eventName).setTaintFixedNumber(Integer.valueOf(loopValue)); - } else { - frameLatencyDetailedAnalysis.error(loopValue + EXPRESSION_NOT_SUPPORTED); - } + this.getErrors().add(loopValue + EXPRESSION_NOT_SUPPORTED); } } } } - TGConnector inputConnector = null, outputConnector = null; - for (TGConnector connector : getOutputConnectors) { - if (connector.getTGConnectingPointP1() == points.get(1)) { - inputConnector = connector; - } else if (connector.getTGConnectingPointP1() == points.get(2)) { - outputConnector = connector; - } - } List<String> afterloopActivity = new ArrayList<String>(2); String insideLoop = "", outsideLoop = ""; - for (TMLActivityElement ae : currentElement.getNexts()) { - List<TGConnector> cg = (((TGComponent) ae.getReferenceObject()).getInputConnectors()); - for (TGConnector afterloopcg : cg) { - if (afterloopcg == inputConnector) { - if (ae.getReferenceObject() instanceof TMLADRandom) { - insideLoop = taskName + "__" + ae.getName() + "__" + ae.getID(); - } else if (ae.getReferenceObject() instanceof TMLADUnorderedSequence) { - insideLoop = taskName + "__" + UNORDERED_SEQUENCE + "__" + ae.getID(); - } else { - insideLoop = taskName + "__" + ae.getReferenceObject().toString() + "__" + ae.getID(); - } - } else if (afterloopcg == outputConnector) { - if (ae.getReferenceObject() instanceof TMLADRandom) { - outsideLoop = taskName + "__" + ae.getName() + "__" + ae.getID(); - } else if (ae.getReferenceObject() instanceof TMLADUnorderedSequence) { - outsideLoop = taskName + "__" + UNORDERED_SEQUENCE + "__" + ae.getID(); - } else { - outsideLoop = taskName + "__" + ae.getReferenceObject().toString() + "__" + ae.getID(); - } - } - } - } + TMLActivityElement insideLoopElement = currentElement.getNexts().get(0); + TMLActivityElement outsideLoopElement = currentElement.getNexts().get(1); + insideLoop = getEventName(taskName, insideLoopElement); + outsideLoop = getEventName(taskName, outsideLoopElement); afterloopActivity.add(0, insideLoop); afterloopActivity.add(1, outsideLoop); - forLoopNextValues.put(eventName, afterloopActivity); + dependencyGraphRelations.getForLoopNextValues().put(eventName, afterloopActivity); } - } else if (currentElement.getReferenceObject() != null && currentElement.getReferenceObject() instanceof TMLADSequence) { - getvertex(eventName).setType(vertex.TYPE_SEQ); + } else if (currentElement != null && currentElement instanceof TMLSequence) { + getvertex(eventName).setType(Vertex.TYPE_SEQ); getvertex(eventName).setTaintFixedNumber(1); String nextEventName = ""; for (TMLActivityElement seqListnextElement : currentElement.getNexts()) { - if (seqListnextElement.getReferenceObject() instanceof TMLADRandom) { - nextEventName = taskName + "__" + seqListnextElement.getName() + "__" + seqListnextElement.getID(); - } else if (seqListnextElement.getReferenceObject() instanceof TMLADUnorderedSequence) { - nextEventName = taskName + "__" + UNORDERED_SEQUENCE + "__" + seqListnextElement.getID(); - } else { - nextEventName = taskName + "__" + seqListnextElement.getReferenceObject().toString() + "__" + seqListnextElement.getID(); - } - if (orderedSequenceList.containsKey(eventName)) { - if (!orderedSequenceList.get(eventName).contains(nextEventName)) { - orderedSequenceList.get(eventName).add(nextEventName); + nextEventName = getEventName(taskName, seqListnextElement); + if (dependencyGraphRelations.getOrderedSequenceList().containsKey(eventName)) { + if (!dependencyGraphRelations.getOrderedSequenceList().get(eventName).contains(nextEventName)) { + dependencyGraphRelations.getOrderedSequenceList().get(eventName).add(nextEventName); } } else { ArrayList<String> seqListNextValues = new ArrayList<String>(); seqListNextValues.add(nextEventName); - orderedSequenceList.put(eventName, seqListNextValues); + dependencyGraphRelations.getOrderedSequenceList().put(eventName, seqListNextValues); } } - } else if (currentElement.getReferenceObject() != null && currentElement.getReferenceObject() instanceof TMLADUnorderedSequence) { - getvertex(eventName).setType(vertex.TYPE_UNORDER_SEQ); + } else if (currentElement != null && currentElement instanceof TMLRandomSequence) { + getvertex(eventName).setType(Vertex.TYPE_UNORDER_SEQ); getvertex(eventName).setTaintFixedNumber(1); String nextEventName = ""; for (TMLActivityElement seqListnextElement : currentElement.getNexts()) { - if (seqListnextElement.getReferenceObject() instanceof TMLADRandom) { - nextEventName = taskName + "__" + seqListnextElement.getName() + "__" + seqListnextElement.getID(); - } else if (seqListnextElement.getReferenceObject() instanceof TMLADUnorderedSequence) { - nextEventName = taskName + "__" + UNORDERED_SEQUENCE + "__" + seqListnextElement.getID(); - } else { - nextEventName = taskName + "__" + seqListnextElement.getReferenceObject().toString() + "__" + seqListnextElement.getID(); - } - if (unOrderedSequenceList.containsKey(eventName)) { - if (!unOrderedSequenceList.get(eventName).contains(nextEventName)) { - unOrderedSequenceList.get(eventName).add(nextEventName); + nextEventName = getEventName(taskName, seqListnextElement); + if (dependencyGraphRelations.getUnOrderedSequenceList().containsKey(eventName)) { + if (!dependencyGraphRelations.getUnOrderedSequenceList().get(eventName).contains(nextEventName)) { + dependencyGraphRelations.getUnOrderedSequenceList().get(eventName).add(nextEventName); } } else { ArrayList<String> seqListNextValues = new ArrayList<String>(); seqListNextValues.add(nextEventName); - unOrderedSequenceList.put(eventName, seqListNextValues); + dependencyGraphRelations.getUnOrderedSequenceList().put(eventName, seqListNextValues); } } } - // List<TGConnector> cg = (((TGComponent) - // currentElement.getReferenceObject()).getInputConnectors()); } private void addStartVertex(String taskName) { - taskStartName = taskName + "__" + currentElement.getName() + "__" + currentElement.getID(); - vertex startv = vertex(taskStartName, currentElement.getID()); + taskStartName = taskName + "__" + currentElement.getName().replace(" ", "") + "__" + currentElement.getID(); + Vertex startv = Vertex(taskStartName, currentElement.getID()); g.addVertex(startv); updateMainBar(); // gVertecies.add(vertex(taskStartName)); - getvertex(taskStartName).setType(vertex.TYPE_START); + getvertex(taskStartName).setType(Vertex.TYPE_START); getvertex(taskStartName).setTaintFixedNumber(1); g.addEdge(getvertex(taskName), getvertex(taskStartName)); opCount++; @@ -1177,12 +1093,14 @@ public class DirectedGraphTranslator extends JApplet { String sendingDataPortdetails = ""; String receiveDataPortdetails = ""; if (sendingPortdetails != null && receivePortdetails != null) { - waitEvt.put(WAITEVENT + receivePortdetails.getPortName() + "(" + receivePortparams + ")", new ArrayList<String>()); + TMLEvent event = waitEvent.getEvent(); + String nameW = taskAc.getName() + "__" + "Wait event: " + event.getName(); + dependencyGraphRelations.getWaitEvt().put(nameW, new ArrayList<String>()); TMLTask originTasks = waitEvent.getEvent().getOriginTask(); for (TMLSendEvent wait_sendEvent : originTasks.getSendEvents()) { - String sendingPortparams = wait_sendEvent.getAllParams(); - waitEvt.get(WAITEVENT + receivePortdetails.getPortName() + "(" + receivePortparams + ")") - .add(SENDEVENT + sendingPortdetails.getPortName() + "(" + sendingPortparams + ")"); + event = wait_sendEvent.getEvent(); + String nameS = originTasks.getName() + "__" + "Send event: " + event.getName(); + dependencyGraphRelations.getWaitEvt().get(nameW).add(nameS); } } else { String sendingPortparams = null; @@ -1239,10 +1157,22 @@ public class DirectedGraphTranslator extends JApplet { receivePortparams = waitEvent.getEvent().getParams().toString(); } } - if (sendingDataPortdetails != null && receiveDataPortdetails != null) { - waitEvt.put(WAITEVENT + receiveDataPortdetails + "(" + receivePortparams + ")", new ArrayList<String>()); - waitEvt.get(WAITEVENT + receiveDataPortdetails + "(" + receivePortparams + ")") + if (sendingDataPortdetails != null && receiveDataPortdetails != null && sendingDataPortdetails != "" + && receiveDataPortdetails != "") { + dependencyGraphRelations.getWaitEvt().put(WAITEVENT + receiveDataPortdetails + "(" + receivePortparams + ")", + new ArrayList<String>()); + dependencyGraphRelations.getWaitEvt().get(WAITEVENT + receiveDataPortdetails + "(" + receivePortparams + ")") .add(SENDEVENT + sendingDataPortdetails + "(" + sendingPortparams + ")"); + } else { + TMLEvent event = waitEvent.getEvent(); + String nameW = taskAc.getName() + "__" + "Wait event: " + event.getName(); + dependencyGraphRelations.getWaitEvt().put(nameW, new ArrayList<String>()); + TMLTask originTasks = waitEvent.getEvent().getOriginTask(); + for (TMLSendEvent wait_sendEvent : originTasks.getSendEvents()) { + event = wait_sendEvent.getEvent(); + String nameS = originTasks.getName() + "__" + "Send event: " + event.getName(); + dependencyGraphRelations.getWaitEvt().get(nameW).add(nameS); + } } } } @@ -1301,11 +1231,13 @@ public class DirectedGraphTranslator extends JApplet { } } else { // writeChannel.getChannel(j); - sendingDataPortdetails = writeChannel.getChannel(j).getOriginPort().getName(); - receiveDataPortdetails = writeChannel.getChannel(j).getDestinationPort().getName(); + if (writeChannel.getChannel(j).getOriginPort() != null && writeChannel.getChannel(j).getDestinationPort() != null) { + sendingDataPortdetails = writeChannel.getChannel(j).getOriginPort().getName(); + receiveDataPortdetails = writeChannel.getChannel(j).getDestinationPort().getName(); + } } - if (!sendingDataPortdetails.equals(receiveDataPortdetails)) { - sendData.put(sendingDataPortdetails, receiveDataPortdetails); + if (!sendingDataPortdetails.equals(receiveDataPortdetails) && sendingDataPortdetails != null && receiveDataPortdetails != null) { + dependencyGraphRelations.getSendData().put(sendingDataPortdetails, receiveDataPortdetails); } } } @@ -1363,24 +1295,19 @@ public class DirectedGraphTranslator extends JApplet { receiveDataPortdetails = readChannel.getChannel(j).getDestinationPort().getName(); } } else { - sendingDataPortdetails = readChannel.getChannel(j).getOriginPort().getName(); - receiveDataPortdetails = readChannel.getChannel(j).getDestinationPort().getName(); - } - if (!sendingDataPortdetails.equals(receiveDataPortdetails)) { - receiveData.put(receiveDataPortdetails, sendingDataPortdetails); - } - TMLCPrimitivePort sp = null, rp = null; - if (readChannel.getChannel(j).getOriginPort().getReferenceObject() instanceof TMLCPrimitivePort) { - rp = (TMLCPrimitivePort) readChannel.getChannel(j).getOriginPort().getReferenceObject(); + if (readChannel.getChannel(j).getOriginPort() != null && readChannel.getChannel(j).getDestinationPort() != null) { + sendingDataPortdetails = readChannel.getChannel(j).getOriginPort().getName(); + receiveDataPortdetails = readChannel.getChannel(j).getDestinationPort().getName(); + } } - if (readChannel.getChannel(j).getDestinationPort().getReferenceObject() instanceof TMLCPrimitivePort) { - sp = (TMLCPrimitivePort) readChannel.getChannel(j).getDestinationPort().getReferenceObject(); + if (!sendingDataPortdetails.equals(receiveDataPortdetails) && sendingDataPortdetails != null && receiveDataPortdetails != null) { + dependencyGraphRelations.getReceiveData().put(receiveDataPortdetails, sendingDataPortdetails); } - if (sp != null && rp != null) { - if (!sp.isBlocking() && !rp.isBlocking()) { - warnings.add("Analysis may fail because the model contains non blocking sending port: " + sp.getPortName() - + " and non blocking read data port:" + rp.getPortName() + ". Use tainting analysis instead"); - } + if (readChannel.getChannel(j).getType() == 2 && readChannel.getChannel(j).getOriginPort() != null + && readChannel.getChannel(j).getDestinationPort() != null) { + warnings.add("Analysis may fail because the model contains non blocking sending port: " + + readChannel.getChannel(j).getDestinationPort().getName().toString() + " and non blocking read data port:" + + readChannel.getChannel(j).getOriginPort().getName().toString() + ". Use tainting analysis instead"); } } } @@ -1388,18 +1315,14 @@ public class DirectedGraphTranslator extends JApplet { private void sendEventsNames() { for (TMLSendEvent sendEvent : taskAc.getSendEvents()) { - // int i = sendEvent.getEvents().size(); - TMLCPrimitivePort sendingPortdetails = sendEvent.getEvent().port; - TMLCPrimitivePort receivePortdetails = sendEvent.getEvent().port2; - String sendingPortparams = sendEvent.getAllParams(); TMLTask destinationTasks = sendEvent.getEvent().getDestinationTask(); - if (sendingPortdetails != null && receivePortdetails != null) { - sendEvt.put(SENDEVENT + sendingPortdetails.getPortName() + "(" + sendingPortparams + ")", new ArrayList<String>()); - for (TMLWaitEvent wait_sendEvent : destinationTasks.getWaitEvents()) { - String receivePortparams = wait_sendEvent.getAllParams(); - sendEvt.get(SENDEVENT + sendingPortdetails.getPortName() + "(" + sendingPortparams + ")") - .add(WAITEVENT + receivePortdetails.getPortName() + "(" + receivePortparams + ")"); - } + TMLEvent event = sendEvent.getEvent(); + String nameS = taskAc.getName() + "__" + "Send event: " + event.getName(); + dependencyGraphRelations.getSendEvt().put(nameS, new ArrayList<String>()); + for (TMLWaitEvent wait_sendEvent : destinationTasks.getWaitEvents()) { + event = wait_sendEvent.getEvent(); + String nameW = destinationTasks.getName() + "__" + "Wait event: " + event.getName(); + dependencyGraphRelations.getSendEvt().get(nameS).add(nameW); } } } @@ -1408,47 +1331,42 @@ public class DirectedGraphTranslator extends JApplet { for (TMLTask task : value) { if (task.isRequested()) { TMLRequest requestToTask = task.getRequest(); - requestToTask.getReferenceObject(); - requestToTask.getDestinationTask(); - requestToTask.getOriginTasks().get(0); - requestToTask.ports.get(0).getName(); - requestToTask.getExtendedName(); String destinationRequest = requestToTask.getDestinationTask().getName() + "__" + requestToTask.getDestinationTask().getActivityDiagram().get(0).getName() + "__" + requestToTask.getDestinationTask().getActivityDiagram().get(0).getID(); String destinationRequestName = requestToTask.getDestinationTask().getName(); for (TMLTask originTask : requestToTask.getOriginTasks()) { String requestOriginTaskName = originTask.getName(); - if (requestsOriginDestination.containsKey(requestOriginTaskName)) { - if (!requestsOriginDestination.get(requestOriginTaskName).contains(destinationRequestName)) { - requestsOriginDestination.get(requestOriginTaskName).add(destinationRequestName); + if (dependencyGraphRelations.getRequestsOriginDestination().containsKey(requestOriginTaskName)) { + if (!dependencyGraphRelations.getRequestsOriginDestination().get(requestOriginTaskName).contains(destinationRequestName)) { + dependencyGraphRelations.getRequestsOriginDestination().get(requestOriginTaskName).add(destinationRequestName); } } else { ArrayList<String> destinationRequestNames = new ArrayList<String>(); destinationRequestNames.add(destinationRequestName); - requestsOriginDestination.put(requestOriginTaskName, destinationRequestNames); + dependencyGraphRelations.getRequestsOriginDestination().put(requestOriginTaskName, destinationRequestNames); } } for (TMLCPrimitivePort requestsPort : requestToTask.ports) { String requestsPortName = requestsPort.getPortName(); - if (requestsPorts.containsKey(task.getName())) { - if (!requestsPorts.get(task.getName()).contains(requestsPortName)) { - requestsPorts.get(task.getName()).add(requestsPortName); + if (dependencyGraphRelations.getRequestsPorts().containsKey(task.getName())) { + if (!dependencyGraphRelations.getRequestsPorts().get(task.getName()).contains(requestsPortName)) { + dependencyGraphRelations.getRequestsPorts().get(task.getName()).add(requestsPortName); } } else { ArrayList<String> requestsPortNames = new ArrayList<String>(); requestsPortNames.add(requestsPortName); - requestsPorts.put(task.getName(), requestsPortNames); + dependencyGraphRelations.getRequestsPorts().put(task.getName(), requestsPortNames); } } - if (requestsDestination.containsKey(destinationRequestName)) { - if (!requestsDestination.get(destinationRequestName).contains(destinationRequest)) { - requestsDestination.get(destinationRequestName).add(destinationRequest); + if (dependencyGraphRelations.getRequestsDestination().containsKey(destinationRequestName)) { + if (!dependencyGraphRelations.getRequestsDestination().get(destinationRequestName).contains(destinationRequest)) { + dependencyGraphRelations.getRequestsDestination().get(destinationRequestName).add(destinationRequest); } } else { ArrayList<String> destinationRequestNames = new ArrayList<String>(); destinationRequestNames.add(destinationRequest); - requestsDestination.put(destinationRequestName, destinationRequestNames); + dependencyGraphRelations.getRequestsDestination().put(destinationRequestName, destinationRequestNames); } } } @@ -1459,84 +1377,70 @@ public class DirectedGraphTranslator extends JApplet { int preEventid; String eventName = getEventName(taskName, currentElement); int eventid = currentElement.getID(); - if (activity.getPrevious(currentElement).getReferenceObject() instanceof TMLADRandom) { - preEventName = taskName + "__" + activity.getPrevious(currentElement).getName() + "__" + activity.getPrevious(currentElement).getID(); - preEventid = activity.getPrevious(currentElement).getID(); - } else if (activity.getPrevious(currentElement).getReferenceObject() instanceof TMLADUnorderedSequence) { - preEventName = taskName + "__" + UNORDERED_SEQUENCE + "__" + activity.getPrevious(currentElement).getID(); - preEventid = activity.getPrevious(currentElement).getID(); - } else { - preEventName = taskName + "__" + activity.getPrevious(currentElement).getReferenceObject().toString() + "__" - + activity.getPrevious(currentElement).getID(); - preEventid = activity.getPrevious(currentElement).getID(); - } + preEventName = getEventName(taskName, activity.getPrevious(currentElement)); + preEventid = activity.getPrevious(currentElement).getID(); if (!nameIDTaskList.containsKey(currentElement.getID())) { nameIDTaskList.put(String.valueOf(currentElement.getID()), eventName); } if (g.containsVertex(getvertex(preEventName))) { - vertex v = vertex(eventName, eventid); - vertex preV = vertex(preEventName, preEventid); + Vertex v = Vertex(eventName, eventid); + Vertex preV = Vertex(preEventName, preEventid); g.addVertex(v); updateMainBar(); g.addEdge(preV, v); opCount++; } else if ((activity.getPrevious(currentElement).getName().equals(START)) && g.containsVertex(getvertex(taskStartName))) { - vertex v = vertex(eventName, eventid); + Vertex v = Vertex(eventName, eventid); g.addVertex(v); updateMainBar(); // gVertecies.add(vertex(eventName)); g.addEdge(getvertex(taskStartName), getvertex(eventName)); opCount++; } - if (currentElement.getReferenceObject() instanceof TMLADSendEvent || currentElement.getReferenceObject() instanceof TMLADWaitEvent - || currentElement.getReferenceObject() instanceof TMLADSendRequest - || currentElement.getReferenceObject() instanceof TMLADNotifiedEvent - || currentElement.getReferenceObject() instanceof TMLADReadChannel || currentElement.getReferenceObject() instanceof TMLADWriteChannel - || (currentElement.getReferenceObject() instanceof TMLADExecI) || (currentElement.getReferenceObject() instanceof TMLADExecC) - || (currentElement.getReferenceObject() instanceof TMLADDelay) || (currentElement.getReferenceObject() instanceof TMLADDelayInterval) - || (currentElement.getReferenceObject() instanceof TMLADExecCInterval) - || (currentElement.getReferenceObject() instanceof TMLADExecIInterval) || currentElement.getReferenceObject() instanceof TMLADEncrypt - || currentElement.getReferenceObject() instanceof TMLADDecrypt - || currentElement.getReferenceObject() instanceof TMLADReadRequestArg) { + if (currentElement instanceof TMLSendEvent || currentElement instanceof TMLWaitEvent || currentElement instanceof TMLSendRequest + || currentElement instanceof TMLNotifiedEvent || currentElement instanceof TMLReadChannel || currentElement instanceof TMLWriteChannel + || currentElement instanceof TMLExecI || (currentElement instanceof TMLExecC) || currentElement instanceof TMLDelay + || (currentElement instanceof TMLExecCInterval) || (currentElement instanceof TMLExecIInterval)) { allLatencyTasks.add(eventName); - getvertex(eventName).setType(vertex.TYPE_TRANSACTION); + getvertex(eventName).setType(Vertex.TYPE_TRANSACTION); getvertex(eventName).setTaintFixedNumber(1); - } else if (currentElement.getReferenceObject() instanceof TMLADRandom) { - getvertex(eventName).setType(vertex.TYPE_CTRL); + } else if (currentElement instanceof TMLRandom) { + getvertex(eventName).setType(Vertex.TYPE_CTRL); getvertex(eventName).setTaintFixedNumber(1); - } else if (currentElement.getReferenceObject() instanceof TMLADSelectEvt) { - getvertex(eventName).setType(vertex.TYPE_SELECT_EVT); + } else if (currentElement instanceof TMLSelectEvt) { + getvertex(eventName).setType(Vertex.TYPE_SELECT_EVT); getvertex(eventName).setTaintFixedNumber(1); - } else if (currentElement.getReferenceObject() instanceof TMLADActionState) { - getvertex(eventName).setType(vertex.TYPE_CTRL); + } else if (currentElement instanceof TMLActionState) { + getvertex(eventName).setType(Vertex.TYPE_CTRL); getvertex(eventName).setTaintFixedNumber(1); } - if (currentElement.getReferenceObject() instanceof TMLADForEverLoop) { - forEverLoopList.add(eventName); - getvertex(eventName).setType(vertex.TYPE_FOR_EVER_LOOP); + if (currentElement != null && currentElement instanceof TMLForLoop && ((TMLForLoop) currentElement).isInfinite()) { + dependencyGraphRelations.getForEverLoopList().add(eventName); + getvertex(eventName).setType(Vertex.TYPE_FOR_EVER_LOOP); getvertex(eventName).setTaintFixedNumber(Integer.MAX_VALUE); } - if (currentElement.getReferenceObject() instanceof TMLADChoice) { - getvertex(eventName).setType(vertex.TYPE_CHOICE); + if (currentElement instanceof TMLChoice) { + getvertex(eventName).setType(Vertex.TYPE_CHOICE); getvertex(eventName).setTaintFixedNumber(1); } - if (currentElement.getReferenceObject() instanceof TMLADSendRequest) { - if (requestsOriginDestination.containsKey(taskName)) { - for (String destinationTask : requestsOriginDestination.get(taskName)) { - if (requestsPorts.containsKey(destinationTask)) { - for (String portNames : requestsPorts.get(destinationTask)) { - String[] requestName = currentElement.getReferenceObject().toString().split(":"); + if (currentElement instanceof TMLSendRequest) { + if (dependencyGraphRelations.getRequestsOriginDestination().containsKey(taskName)) { + for (String destinationTask : dependencyGraphRelations.getRequestsOriginDestination().get(taskName)) { + if (dependencyGraphRelations.getRequestsPorts().containsKey(destinationTask)) { + for (String portNames : dependencyGraphRelations.getRequestsPorts().get(destinationTask)) { + String[] requestName = ((TMLSendRequest) currentElement).toString().split(":"); String[] portname = requestName[1].split("[(]"); - if (portname[0].replaceAll(" ", "").equals(portNames.replaceAll(" ", ""))) { - for (String destinationTaskstartname : requestsDestination.get(destinationTask)) { - if (requestEdges.containsKey(eventName)) { - if (!requestEdges.get(eventName).contains(destinationTaskstartname)) { - requestEdges.get(eventName).add(destinationTaskstartname); + String[] pName = portname[0].split("__"); + if (portNames.replaceAll(" ", "").equals(pName[1].replaceAll(" ", ""))) { + for (String destinationTaskstartname : dependencyGraphRelations.getRequestsDestination().get(destinationTask)) { + if (dependencyGraphRelations.getRequestEdges().containsKey(eventName)) { + if (!dependencyGraphRelations.getRequestEdges().get(eventName).contains(destinationTaskstartname)) { + dependencyGraphRelations.getRequestEdges().get(eventName).add(destinationTaskstartname); } } else { HashSet<String> destinationTaskoriginstart = new HashSet<String>(); destinationTaskoriginstart.add(destinationTaskstartname); - requestEdges.put(eventName, destinationTaskoriginstart); + dependencyGraphRelations.getRequestEdges().put(eventName, destinationTaskoriginstart); } } } @@ -1545,138 +1449,170 @@ public class DirectedGraphTranslator extends JApplet { } } } - if (currentElement.getReferenceObject() instanceof TMLADSendEvent) { - if (sendEvt.containsKey(currentElement.getReferenceObject().toString().replaceAll(" ", ""))) { - List<String> recieveEvt = sendEvt.get(currentElement.getReferenceObject().toString().replaceAll(" ", "")); - for (vertex vertex : g.vertexSet()) { - String[] vertexName = vertex.toString().split("__"); + if (currentElement instanceof TMLSendEvent) { + String name = getEventName(taskName, currentElement); + String[] name1 = name.split("__"); + int i = name1[name1.length - 1].length(); + String pattern = "[0-9]{" + i + "}"; + if (name.substring(name.length() - i, name.length()).matches(pattern)) { + name = name.substring(0, name.length() - (i + 2)); + } + if (dependencyGraphRelations.getSendEvt().containsKey(name)) { + List<String> recieveEvt = dependencyGraphRelations.getSendEvt().get(name); + for (Vertex Vertex : g.vertexSet()) { + String vertexName = Vertex.toString(); for (String n : recieveEvt) { - if (vertexName.length >= 3) { - if ((n.replaceAll(" ", "").equals((vertexName[2].toString().replaceAll(" ", ""))))) { - HashSet<String> waitEventVertex = new HashSet<String>(); - waitEventVertex.add(vertex.toString()); - if (sendEventWaitEventEdges.containsKey(eventName)) { - if (!sendEventWaitEventEdges.get(eventName).contains(vertex.toString())) { - sendEventWaitEventEdges.get(eventName).add(vertex.toString()); - } - } else { - sendEventWaitEventEdges.put(eventName, waitEventVertex); + String[] vertexName1 = vertexName.split("__"); + int j = vertexName1[vertexName1.length - 1].length(); + pattern = "[0-9]{" + j + "}"; + if (vertexName.substring(vertexName.length() - j, vertexName.length()).matches(pattern)) { + vertexName = vertexName.substring(0, vertexName.length() - (j + 2)); + } + if (n.equals(vertexName)) { + HashSet<String> waitEventVertex = new HashSet<String>(); + waitEventVertex.add(Vertex.toString()); + if (dependencyGraphRelations.getSendEventWaitEventEdges().containsKey(eventName)) { + if (!dependencyGraphRelations.getSendEventWaitEventEdges().get(eventName).contains(Vertex.toString())) { + dependencyGraphRelations.getSendEventWaitEventEdges().get(eventName).add(Vertex.toString()); } + } else { + dependencyGraphRelations.getSendEventWaitEventEdges().put(eventName, waitEventVertex); } } } } } } - if (currentElement.getReferenceObject() instanceof TMLADWaitEvent) { - if (waitEvt.containsKey(currentElement.getReferenceObject().toString().replaceAll(" ", ""))) { - List<String> sendevent = waitEvt.get(currentElement.getReferenceObject().toString().replaceAll(" ", "")); - for (vertex vertex : g.vertexSet()) { - String[] vertexName = vertex.toString().split("__"); + if (currentElement instanceof TMLWaitEvent) { + String name = getEventName(taskName, currentElement); + String[] name1 = name.split("__"); + int i = name1[name1.length - 1].length(); + String pattern = "[0-9]{" + i + "}"; + if (name.substring(name.length() - i, name.length()).matches(pattern)) { + name = name.substring(0, name.length() - (i + 2)); + } + if (dependencyGraphRelations.getWaitEvt().containsKey(name)) { + List<String> sendevent = dependencyGraphRelations.getWaitEvt().get(name); + for (Vertex Vertex : g.vertexSet()) { + String vertexName = Vertex.toString(); for (String n : sendevent) { - if (vertexName.length >= 3) { - if ((n.replaceAll(" ", "").equals((vertexName[2].toString().replaceAll(" ", ""))))) { - HashSet<String> waitEventVertex = new HashSet<String>(); - waitEventVertex.add(eventName); - if (sendEventWaitEventEdges.containsKey(vertex.toString())) { - if (!sendEventWaitEventEdges.get(vertex.toString()).contains(eventName)) { - sendEventWaitEventEdges.get(vertex.toString()).add(eventName); - } - } else { - sendEventWaitEventEdges.put(vertex.toString(), waitEventVertex); + String[] vertexName1 = vertexName.split("__"); + int j = vertexName1[vertexName1.length - 1].length(); + pattern = "[0-9]{" + j + "}"; + if (vertexName.substring(vertexName.length() - j, vertexName.length()).matches(pattern)) { + vertexName = vertexName.substring(0, vertexName.length() - (j + 2)); + } + if (n.equals(vertexName)) { + HashSet<String> waitEventVertex = new HashSet<String>(); + waitEventVertex.add(eventName); + if (dependencyGraphRelations.getSendEventWaitEventEdges().containsKey(Vertex.toString())) { + if (!dependencyGraphRelations.getSendEventWaitEventEdges().get(Vertex.toString()).contains(eventName)) { + dependencyGraphRelations.getSendEventWaitEventEdges().get(Vertex.toString()).add(eventName); } + } else { + dependencyGraphRelations.getSendEventWaitEventEdges().put(Vertex.toString(), waitEventVertex); } } } } } } - if (currentElement.getReferenceObject() instanceof TMLADWriteChannel && currentElement instanceof TMLWriteChannel) { - writeChannelTransactions.add(eventName); - String[] name = eventName.split("__"); - String[] removewrite = name[2].split(":"); - String[] portname = removewrite[1].split("[(]"); - String chwriteName = (name[0] + "__" + portname[0]).replaceAll(" ", ""); - String portNameNoSpaces = portname[0].replaceAll(" ", ""); - if (sendData.containsKey(portNameNoSpaces)) { - String sendDatachannels; - if (((TMLWriteChannel) currentElement).getChannel(0).getName().contains(FORK_CHANNEL) - || ((TMLWriteChannel) currentElement).getChannel(0).getDestinationTask().getName().startsWith(FORK_TASK) - || ((TMLWriteChannel) currentElement).getChannel(0).getOriginTask().getName().startsWith(FORK_TASK) - || ((TMLWriteChannel) currentElement).getChannel(0).getName().contains(JOIN_CHANNEL) - || ((TMLWriteChannel) currentElement).getChannel(0).getDestinationTask().getName().startsWith(JOIN_TASK) - || ((TMLWriteChannel) currentElement).getChannel(0).getOriginTask().getName().startsWith(JOIN_TASK)) { - sendDatachannels = sendData.get(portNameNoSpaces); - } else { - // sendDatachannels = name[0] + "__" + sendData.get(portNameNoSpaces) + "__" + - // name[0] + "__" + portNameNoSpaces; - sendDatachannels = name[0] + "__" + portNameNoSpaces + "__" + name[0] + "__" + sendData.get(portNameNoSpaces); - } - HashSet<String> writeChVertex = new HashSet<String>(); - writeChVertex.add(sendDatachannels); - if (writeReadChannelEdges.containsKey(eventName)) { - if (!writeReadChannelEdges.get(eventName).contains(sendDatachannels)) { - writeReadChannelEdges.get(eventName).add(sendDatachannels); - } - } else { - writeReadChannelEdges.put(eventName, writeChVertex); + if (currentElement instanceof TMLWriteChannel) { + dependencyGraphRelations.getWriteChannelTransactions().add(eventName); + String chanel = ((TMLWriteChannel) currentElement).getChannel(0).getName(); + HashSet<String> writeChVertex = new HashSet<String>(); + writeChVertex.add(chanel); + if (dependencyGraphRelations.getWriteReadChannelEdges().containsKey(eventName)) { + if (!dependencyGraphRelations.getWriteReadChannelEdges().get(eventName).contains(chanel)) { + dependencyGraphRelations.getWriteReadChannelEdges().get(eventName).add(chanel); } - // getvertex(sendDatachannels).setTaintFixedNumber(getvertex(sendDatachannels).getTaintFixedNumber() - // + 1); } else { - HashSet<String> writeChVertex = new HashSet<String>(); - writeChVertex.add(chwriteName); - if (writeReadChannelEdges.containsKey(eventName)) { - if (!writeReadChannelEdges.get(eventName).contains(chwriteName)) { - writeReadChannelEdges.get(eventName).add(chwriteName); - } - } else { - writeReadChannelEdges.put(eventName, writeChVertex); - } - // getvertex(chwriteName).setTaintFixedNumber(getvertex(chwriteName).getTaintFixedNumber() - // + 1); + dependencyGraphRelations.getWriteReadChannelEdges().put(eventName, writeChVertex); } + /* + * String[] name = eventName.split("__"); String[] removewrite = + * name[2].split(":"); String[] portname = removewrite[1].split("[(]"); String + * chwriteName = (name[0] + "__" + portname[0]).replaceAll(" ", ""); String + * portNameNoSpaces = portname[0].replaceAll(" ", ""); if + * (sendData.containsKey(portNameNoSpaces)) { String sendDatachannels; if + * (((TMLWriteChannel) + * currentElement).getChannel(0).getName().contains(FORK_CHANNEL) || + * ((TMLWriteChannel) + * currentElement).getChannel(0).getDestinationTask().getName().startsWith( + * FORK_TASK) || ((TMLWriteChannel) + * currentElement).getChannel(0).getOriginTask().getName().startsWith(FORK_TASK) + * || ((TMLWriteChannel) + * currentElement).getChannel(0).getName().contains(JOIN_CHANNEL) || + * ((TMLWriteChannel) + * currentElement).getChannel(0).getDestinationTask().getName().startsWith( + * JOIN_TASK) || ((TMLWriteChannel) + * currentElement).getChannel(0).getOriginTask().getName().startsWith(JOIN_TASK) + * ) { sendDatachannels = sendData.get(portNameNoSpaces); } else { // + * sendDatachannels = name[0] + "__" + sendData.get(portNameNoSpaces) + "__" + + * // name[0] + "__" + portNameNoSpaces; sendDatachannels = name[0] + "__" + + * portNameNoSpaces + "__" + name[0] + "__" + sendData.get(portNameNoSpaces); } + * HashSet<String> writeChVertex = new HashSet<String>(); + * writeChVertex.add(sendDatachannels); if + * (dependencyGraphRelations.getWriteReadChannelEdges().containsKey(eventName)) + * { if (!writeReadChannelEdges.get(eventName).contains(sendDatachannels)) { + * writeReadChannelEdges.get(eventName).add(sendDatachannels); } } else { + * writeReadChannelEdges.put(eventName, writeChVertex); } // + * getvertex(sendDatachannels).setTaintFixedNumber(getvertex(sendDatachannels). + * getTaintFixedNumber() // + 1); } else { HashSet<String> writeChVertex = new + * HashSet<String>(); writeChVertex.add(chwriteName); if + * (writeReadChannelEdges.containsKey(eventName)) { if + * (!writeReadChannelEdges.get(eventName).contains(chwriteName)) { + * writeReadChannelEdges.get(eventName).add(chwriteName); } } else { + * writeReadChannelEdges.put(eventName, writeChVertex); } // + * getvertex(chwriteName).setTaintFixedNumber(getvertex(chwriteName). + * getTaintFixedNumber() // + 1); } + */ } - if (currentElement.getReferenceObject() instanceof TMLADReadChannel) { - readChannelTransactions.add(eventName); - String[] name = eventName.split("__"); - String[] removewrite = name[2].split(":"); - String[] portname = removewrite[1].split("[(]"); - String chwriteName = (name[0] + "__" + portname[0]).replaceAll(" ", ""); - String portNameNoSpaces = portname[0].replaceAll(" ", ""); - if (receiveData.containsKey(portNameNoSpaces)) { - String sendDatachannels; - if (((TMLReadChannel) currentElement).getChannel(0).getName().contains(FORK_CHANNEL) - || ((TMLReadChannel) currentElement).getChannel(0).getDestinationTask().getName().startsWith(FORK_TASK) - || ((TMLReadChannel) currentElement).getChannel(0).getOriginTask().getName().startsWith(FORK_TASK) - || ((TMLReadChannel) currentElement).getChannel(0).getName().contains(JOIN_CHANNEL) - || ((TMLReadChannel) currentElement).getChannel(0).getDestinationTask().getName().startsWith(JOIN_TASK) - || ((TMLReadChannel) currentElement).getChannel(0).getOriginTask().getName().startsWith(JOIN_TASK)) { - sendDatachannels = receiveData.get(portNameNoSpaces); - } else { - sendDatachannels = name[0] + "__" + receiveData.get(portNameNoSpaces) + "__" + name[0] + "__" + portNameNoSpaces; - } - HashSet<String> readChVertex = new HashSet<String>(); - readChVertex.add(eventName); - if (readWriteChannelEdges.containsKey(sendDatachannels)) { - if (!readWriteChannelEdges.get(sendDatachannels).contains(eventName)) { - readWriteChannelEdges.get(sendDatachannels).add(eventName); - } - } else { - readWriteChannelEdges.put(sendDatachannels, readChVertex); + if (currentElement instanceof TMLReadChannel) { + dependencyGraphRelations.getReadChannelTransactions().add(eventName); + String chanel = ((TMLReadChannel) currentElement).getChannel(0).getName(); + HashSet<String> readChVertex = new HashSet<String>(); + readChVertex.add(eventName); + if (dependencyGraphRelations.getReadWriteChannelEdges().containsKey(chanel)) { + if (!dependencyGraphRelations.getReadWriteChannelEdges().get(chanel).contains(eventName)) { + dependencyGraphRelations.getReadWriteChannelEdges().get(chanel).add(eventName); } } else { - HashSet<String> readChVertex = new HashSet<String>(); - readChVertex.add(eventName); - if (readWriteChannelEdges.containsKey(chwriteName)) { - if (!readWriteChannelEdges.get(chwriteName).contains(eventName)) { - readWriteChannelEdges.get(chwriteName).add(eventName); - } - } else { - readWriteChannelEdges.put(chwriteName, readChVertex); - } - // + dependencyGraphRelations.getReadWriteChannelEdges().put(chanel, readChVertex); } + /* + * String[] name = eventName.split("__"); String[] removewrite = + * name[2].split(":"); String[] portname = removewrite[1].split("[(]"); String + * chwriteName = (name[0] + "__" + portname[0]).replaceAll(" ", ""); String + * portNameNoSpaces = portname[0].replaceAll(" ", ""); if + * (receiveData.containsKey(portNameNoSpaces)) { String sendDatachannels; if + * (((TMLReadChannel) + * currentElement).getChannel(0).getName().contains(FORK_CHANNEL) || + * ((TMLReadChannel) + * currentElement).getChannel(0).getDestinationTask().getName().startsWith( + * FORK_TASK) || ((TMLReadChannel) + * currentElement).getChannel(0).getOriginTask().getName().startsWith(FORK_TASK) + * || ((TMLReadChannel) + * currentElement).getChannel(0).getName().contains(JOIN_CHANNEL) || + * ((TMLReadChannel) + * currentElement).getChannel(0).getDestinationTask().getName().startsWith( + * JOIN_TASK) || ((TMLReadChannel) + * currentElement).getChannel(0).getOriginTask().getName().startsWith(JOIN_TASK) + * ) { sendDatachannels = receiveData.get(portNameNoSpaces); } else { + * sendDatachannels = name[0] + "__" + receiveData.get(portNameNoSpaces) + "__" + * + name[0] + "__" + portNameNoSpaces; } HashSet<String> readChVertex = new + * HashSet<String>(); readChVertex.add(eventName); if + * (readWriteChannelEdges.containsKey(sendDatachannels)) { if + * (!readWriteChannelEdges.get(sendDatachannels).contains(eventName)) { + * readWriteChannelEdges.get(sendDatachannels).add(eventName); } } else { + * readWriteChannelEdges.put(sendDatachannels, readChVertex); } } else { + * HashSet<String> readChVertex = new HashSet<String>(); + * readChVertex.add(eventName); if + * (readWriteChannelEdges.containsKey(chwriteName)) { if + * (!readWriteChannelEdges.get(chwriteName).contains(eventName)) { + * readWriteChannelEdges.get(chwriteName).add(eventName); } } else { + * readWriteChannelEdges.put(chwriteName, readChVertex); } // } + */ } } @@ -1688,36 +1624,31 @@ public class DirectedGraphTranslator extends JApplet { String eventName = null; eventName = getEventName(taskName, currentElement); taskEndid = currentElement.getID(); - taskEndName = taskName + "__" + currentElement.getName() + "__" + taskEndid; + taskEndName = taskName + "__" + currentElement.getName().replace(" ", "") + "__" + taskEndid; preEventid = activity.getPrevious(currentElement).getID(); - if (activity.getPrevious(currentElement).getReferenceObject() instanceof TMLADRandom) { - preEventName = taskName + "__" + activity.getPrevious(currentElement).getName() + "__" + preEventid; - } else if (currentElement.getReferenceObject() instanceof TMLADUnorderedSequence) { - preEventName = taskName + "__" + UNORDERED_SEQUENCE + "__" + preEventid; - } else { - preEventName = taskName + "__" + activity.getPrevious(currentElement).getReferenceObject().toString() + "__" + preEventid; - } - vertex taskEndVertex = vertex(taskEndName, taskEndid); + preEventName = getEventName(taskName, activity.getPrevious(currentElement)); + Vertex taskEndVertex = Vertex(taskEndName, taskEndid); g.addVertex(taskEndVertex); updateMainBar(); // gVertecies.add(vertex(taskEndName)); - getvertex(eventName).setType(vertex.TYPE_END); + getvertex(eventName).setType(Vertex.TYPE_END); getvertex(eventName).setTaintFixedNumber(1); // allTasks.add(taskEndName); - if (!(activity.getPrevious(currentElement).getReferenceObject() instanceof TMLADSequence)) { + if (!(activity.getPrevious(currentElement) instanceof TMLSequence)) { g.addEdge(getvertex(preEventName), getvertex(taskEndName)); } @SuppressWarnings({ "unchecked", "rawtypes" }) - AllDirectedPaths<vertex, DefaultEdge> allPaths = new AllDirectedPaths<vertex, DefaultEdge>(g); - if (orderedSequenceList.size() > 0) { + AllDirectedPaths<Vertex, DefaultEdge> allPaths = new AllDirectedPaths<Vertex, DefaultEdge>(g); + if (dependencyGraphRelations.getOrderedSequenceList().size() > 0) { int noForLoop = 0; // get path from sequence to end - for (Entry<String, ArrayList<String>> sequenceListEntry : orderedSequenceList.entrySet()) { + for (Entry<String, ArrayList<String>> sequenceListEntry : dependencyGraphRelations.getOrderedSequenceList().entrySet()) { int directlyConnectedSeq = 0; if (g.containsVertex(getvertex(sequenceListEntry.getKey()))) { - List<GraphPath<vertex, DefaultEdge>> path = allPaths.getAllPaths(getvertex(sequenceListEntry.getKey()), getvertex(taskEndName), + List<GraphPath<Vertex, DefaultEdge>> path = allPaths.getAllPaths(getvertex(sequenceListEntry.getKey()), getvertex(taskEndName), false, g.vertexSet().size()); - for (Entry<String, ArrayList<String>> othersequenceListEntryValue : orderedSequenceList.entrySet()) { + for (Entry<String, ArrayList<String>> othersequenceListEntryValue : dependencyGraphRelations.getOrderedSequenceList() + .entrySet()) { for (int i = 0; i < path.size(); i++) { if (!othersequenceListEntryValue.getKey().equals(sequenceListEntry.getKey())) { if (path.get(i).getVertexList().contains(getvertex(othersequenceListEntryValue.getKey()))) { @@ -1731,8 +1662,9 @@ public class DirectedGraphTranslator extends JApplet { for (String sequenceListEntryValue : sequenceListEntry.getValue()) { if (g.containsVertex(getvertex(sequenceListEntryValue))) { if (path.get(i).getVertexList().contains(getvertex(sequenceListEntryValue))) { - if (forLoopNextValues.size() > 0) { - for (Entry<String, List<String>> forloopListEntry : forLoopNextValues.entrySet()) { + if (dependencyGraphRelations.getForLoopNextValues().size() > 0) { + for (Entry<String, List<String>> forloopListEntry : dependencyGraphRelations.getForLoopNextValues() + .entrySet()) { if ((path.get(i).getVertexList().contains(getvertex(forloopListEntry.getValue().get(0))) && getvertex(forloopListEntry.getValue().get(0)).getName() != sequenceListEntry.getKey()) || path.get(i).getVertexList().contains(getvertex( @@ -1741,8 +1673,8 @@ public class DirectedGraphTranslator extends JApplet { } } } - if (forEverLoopList.size() > 0) { - for (String forloopListEntry : forEverLoopList) { + if (dependencyGraphRelations.getForEverLoopList().size() > 0) { + for (String forloopListEntry : dependencyGraphRelations.getForEverLoopList()) { if (path.get(i).getVertexList().contains(getvertex(forloopListEntry))) { noForLoop++; } @@ -1753,23 +1685,27 @@ public class DirectedGraphTranslator extends JApplet { if (nextIndex < sequenceListEntry.getValue().size()) { HashSet<String> endSequenceVertex = new HashSet<String>(); endSequenceVertex.add(sequenceListEntry.getValue().get(nextIndex)); - if (sequenceEdges.containsKey(taskEndName)) { - if (!sequenceEdges.get(taskEndName).contains(sequenceListEntry.getValue().get(nextIndex))) { - sequenceEdges.get(taskEndName).add(sequenceListEntry.getValue().get(nextIndex)); + if (dependencyGraphRelations.getSequenceEdges().containsKey(taskEndName)) { + if (!dependencyGraphRelations.getSequenceEdges().get(taskEndName) + .contains(sequenceListEntry.getValue().get(nextIndex))) { + dependencyGraphRelations.getSequenceEdges().get(taskEndName) + .add(sequenceListEntry.getValue().get(nextIndex)); } } else { - sequenceEdges.put(eventName, endSequenceVertex); + dependencyGraphRelations.getSequenceEdges().put(eventName, endSequenceVertex); } - } else if (nextIndex == sequenceListEntry.getValue().size() && orderedSequenceList.size() > 1) { - for (Entry<String, ArrayList<String>> othersequenceListEntryValue : orderedSequenceList.entrySet()) { + } else if (nextIndex == sequenceListEntry.getValue().size() + && dependencyGraphRelations.getOrderedSequenceList().size() > 1) { + for (Entry<String, ArrayList<String>> othersequenceListEntryValue : dependencyGraphRelations + .getOrderedSequenceList().entrySet()) { if (!othersequenceListEntryValue.getKey().equals(sequenceListEntry.getKey())) { int connectedSeq = 0; - List<GraphPath<vertex, DefaultEdge>> pathBetweenSeq = allPaths.getAllPaths( + List<GraphPath<Vertex, DefaultEdge>> pathBetweenSeq = allPaths.getAllPaths( getvertex(othersequenceListEntryValue.getKey()), getvertex(taskEndName), false, g.vertexSet().size()); for (int j = 0; j < pathBetweenSeq.size(); j++) { - for (Entry<String, ArrayList<String>> adjacentsequenceListEntryValue : orderedSequenceList - .entrySet()) { + for (Entry<String, ArrayList<String>> adjacentsequenceListEntryValue : dependencyGraphRelations + .getOrderedSequenceList().entrySet()) { if (!adjacentsequenceListEntryValue.getKey().equals(sequenceListEntry.getKey()) && !adjacentsequenceListEntryValue.getKey() .equals(othersequenceListEntryValue.getKey())) { @@ -1782,7 +1718,7 @@ public class DirectedGraphTranslator extends JApplet { } if (connectedSeq == 0 && pathBetweenSeq.size() > 0) { for (String othersequenceListValue : othersequenceListEntryValue.getValue()) { - List<GraphPath<vertex, DefaultEdge>> pathToNextValue = allPaths.getAllPaths( + List<GraphPath<Vertex, DefaultEdge>> pathToNextValue = allPaths.getAllPaths( getvertex(othersequenceListValue), getvertex(taskEndName), false, g.vertexSet().size()); if (pathToNextValue.size() > 0) { @@ -1792,14 +1728,16 @@ public class DirectedGraphTranslator extends JApplet { HashSet<String> nextSequenceVertex = new HashSet<String>(); nextSequenceVertex .add(othersequenceListEntryValue.getValue().get(nextAdjIndex)); - if (sequenceEdges.containsKey(taskEndName)) { - if (!sequenceEdges.get(taskEndName).contains( - othersequenceListEntryValue.getValue().get(nextAdjIndex))) { - sequenceEdges.get(taskEndName).add( + if (dependencyGraphRelations.getSequenceEdges().containsKey(taskEndName)) { + if (!dependencyGraphRelations.getSequenceEdges().get(taskEndName) + .contains(othersequenceListEntryValue.getValue() + .get(nextAdjIndex))) { + dependencyGraphRelations.getSequenceEdges().get(taskEndName).add( othersequenceListEntryValue.getValue().get(nextAdjIndex)); } } else { - sequenceEdges.put(eventName, nextSequenceVertex); + dependencyGraphRelations.getSequenceEdges().put(eventName, + nextSequenceVertex); } } } @@ -1817,17 +1755,17 @@ public class DirectedGraphTranslator extends JApplet { } } } - if (unOrderedSequenceList.size() > 0) { + if (dependencyGraphRelations.getUnOrderedSequenceList().size() > 0) { // get path from sequence to end - for (Entry<String, ArrayList<String>> sequenceListEntry : unOrderedSequenceList.entrySet()) { + for (Entry<String, ArrayList<String>> sequenceListEntry : dependencyGraphRelations.getUnOrderedSequenceList().entrySet()) { if (g.containsVertex(getvertex(sequenceListEntry.getKey()))) { int noForLoop = 0; - List<GraphPath<vertex, DefaultEdge>> path = allPaths.getAllPaths(getvertex(sequenceListEntry.getKey()), getvertex(taskEndName), + List<GraphPath<Vertex, DefaultEdge>> path = allPaths.getAllPaths(getvertex(sequenceListEntry.getKey()), getvertex(taskEndName), false, g.vertexSet().size()); for (int i = 0; i < path.size(); i++) { if (path.size() > 0 && sequenceListEntry.getValue().size() > 0) { - if (forLoopNextValues.size() > 0) { - for (Entry<String, List<String>> forloopListEntry : forLoopNextValues.entrySet()) { + if (dependencyGraphRelations.getForLoopNextValues().size() > 0) { + for (Entry<String, List<String>> forloopListEntry : dependencyGraphRelations.getForLoopNextValues().entrySet()) { if (path.get(i).getVertexList().contains(getvertex(forloopListEntry.getKey()))) { if (path.get(i).getVertexList().contains(getvertex(forloopListEntry.getValue().get(0)))) { noForLoop++; @@ -1835,14 +1773,14 @@ public class DirectedGraphTranslator extends JApplet { } } } - if (forEverLoopList.size() > 0) { - for (String forloopListEntry : forEverLoopList) { + if (dependencyGraphRelations.getForEverLoopList().size() > 0) { + for (String forloopListEntry : dependencyGraphRelations.getForEverLoopList()) { if (path.get(i).getVertexList().contains(getvertex(forloopListEntry))) { noForLoop++; } } } - for (Entry<String, ArrayList<String>> seqEntry : orderedSequenceList.entrySet()) { + for (Entry<String, ArrayList<String>> seqEntry : dependencyGraphRelations.getOrderedSequenceList().entrySet()) { if (path.get(i).getVertexList().contains(getvertex(seqEntry.getKey()))) { if (path.get(i).getVertexList().contains(getvertex(seqEntry.getValue().get(seqEntry.getValue().size() - 1)))) { } else { @@ -1852,19 +1790,20 @@ public class DirectedGraphTranslator extends JApplet { } if (noForLoop == 0) { for (String seqEntry : sequenceListEntry.getValue()) { - GraphPath<vertex, DefaultEdge> pathToEnd = null; + GraphPath<Vertex, DefaultEdge> pathToEnd = null; if (g.containsVertex(getvertex(seqEntry))) { pathToEnd = DijkstraShortestPath.findPathBetween(g, getvertex(seqEntry), getvertex(eventName)); } if (pathToEnd == null) { - if (unOrderedSequenceEdges.containsKey(taskEndName)) { - if (!unOrderedSequenceEdges.get(taskEndName).contains(sequenceListEntry.getKey())) { - unOrderedSequenceEdges.get(taskEndName).add(seqEntry); + if (dependencyGraphRelations.getUnOrderedSequenceEdges().containsKey(taskEndName)) { + if (!dependencyGraphRelations.getUnOrderedSequenceEdges().get(taskEndName) + .contains(sequenceListEntry.getKey())) { + dependencyGraphRelations.getUnOrderedSequenceEdges().get(taskEndName).add(seqEntry); } } else { HashSet<String> endSequenceVertex = new HashSet<String>(); endSequenceVertex.add(seqEntry); - unOrderedSequenceEdges.put(eventName, endSequenceVertex); + dependencyGraphRelations.getUnOrderedSequenceEdges().put(eventName, endSequenceVertex); } } } @@ -1876,21 +1815,21 @@ public class DirectedGraphTranslator extends JApplet { } } // add if sequence on path of multiple for - if (forLoopNextValues.size() > 0) { - for (Entry<String, List<String>> forloopListEntry : forLoopNextValues.entrySet()) { + if (dependencyGraphRelations.getForLoopNextValues().size() > 0) { + for (Entry<String, List<String>> forloopListEntry : dependencyGraphRelations.getForLoopNextValues().entrySet()) { if (g.containsVertex(getvertex(forloopListEntry.getValue().get(0)))) { - List<GraphPath<vertex, DefaultEdge>> path = allPaths.getAllPaths(getvertex(forloopListEntry.getValue().get(0)), + List<GraphPath<Vertex, DefaultEdge>> path = allPaths.getAllPaths(getvertex(forloopListEntry.getValue().get(0)), getvertex(taskEndName), false, g.vertexSet().size()); for (int i = 0; i < path.size(); i++) { int forloopCount = 0; - for (Entry<String, List<String>> forEntry : forLoopNextValues.entrySet()) { + for (Entry<String, List<String>> forEntry : dependencyGraphRelations.getForLoopNextValues().entrySet()) { if (!forloopListEntry.getKey().equals(forEntry.getKey())) { if (path.get(i).getVertexList().contains(getvertex(forEntry.getKey()))) { forloopCount++; } } } - for (Entry<String, ArrayList<String>> seqEntry : orderedSequenceList.entrySet()) { + for (Entry<String, ArrayList<String>> seqEntry : dependencyGraphRelations.getOrderedSequenceList().entrySet()) { if (path.get(i).getVertexList().contains(getvertex(seqEntry.getKey()))) { if (path.get(i).getVertexList().contains(getvertex(seqEntry.getValue().get(seqEntry.getValue().size() - 1)))) { } else { @@ -1904,18 +1843,18 @@ public class DirectedGraphTranslator extends JApplet { } } } - if (g.containsVertex(getvertex(forloopListEntry.getValue().get(1))) && forLoopNextValues.size() > 1) { - List<GraphPath<vertex, DefaultEdge>> path = allPaths.getAllPaths(getvertex(forloopListEntry.getValue().get(1)), + if (g.containsVertex(getvertex(forloopListEntry.getValue().get(1))) && dependencyGraphRelations.getForLoopNextValues().size() > 1) { + List<GraphPath<Vertex, DefaultEdge>> path = allPaths.getAllPaths(getvertex(forloopListEntry.getValue().get(1)), getvertex(taskEndName), false, g.vertexSet().size()); if (path.size() > 0) { - for (Entry<String, List<String>> previousForLoop : forLoopNextValues.entrySet()) { + for (Entry<String, List<String>> previousForLoop : dependencyGraphRelations.getForLoopNextValues().entrySet()) { if (g.containsVertex(getvertex(previousForLoop.getValue().get(0))) && !previousForLoop.getKey().equals(forloopListEntry.getKey())) { - List<GraphPath<vertex, DefaultEdge>> previousForpath = allPaths.getAllPaths( + List<GraphPath<Vertex, DefaultEdge>> previousForpath = allPaths.getAllPaths( getvertex(previousForLoop.getValue().get(0)), getvertex(taskEndName), false, g.vertexSet().size()); for (int i = 0; i < previousForpath.size(); i++) { int forloopCount = 0; - for (Entry<String, List<String>> forEntry : forLoopNextValues.entrySet()) { + for (Entry<String, List<String>> forEntry : dependencyGraphRelations.getForLoopNextValues().entrySet()) { if (previousForpath.get(i).getVertexList().contains(getvertex(forEntry.getKey())) && !forloopListEntry.getKey().equals(forEntry.getKey())) { forloopCount++; @@ -1932,19 +1871,19 @@ public class DirectedGraphTranslator extends JApplet { } } } - if (!forEverLoopList.isEmpty()) { - for (String loopforEver : forEverLoopList) { - List<GraphPath<vertex, DefaultEdge>> pathforloopforever = allPaths.getAllPaths(getvertex(loopforEver), getvertex(taskEndName), false, + if (!dependencyGraphRelations.getForEverLoopList().isEmpty()) { + for (String loopforEver : dependencyGraphRelations.getForEverLoopList()) { + List<GraphPath<Vertex, DefaultEdge>> pathforloopforever = allPaths.getAllPaths(getvertex(loopforEver), getvertex(taskEndName), false, g.vertexSet().size()); if (pathforloopforever.size() > 0) { for (int i = 0; i < pathforloopforever.size(); i++) { int forloopCount = 0; - for (Entry<String, List<String>> previousForLoop : forLoopNextValues.entrySet()) { + for (Entry<String, List<String>> previousForLoop : dependencyGraphRelations.getForLoopNextValues().entrySet()) { if (pathforloopforever.get(i).getVertexList().contains(getvertex(previousForLoop.getValue().get(0)))) { forloopCount++; } } - for (Entry<String, ArrayList<String>> seqEntry : orderedSequenceList.entrySet()) { + for (Entry<String, ArrayList<String>> seqEntry : dependencyGraphRelations.getOrderedSequenceList().entrySet()) { if (pathforloopforever.get(i).getVertexList().contains(getvertex(seqEntry.getKey()))) { if (pathforloopforever.get(i).getVertexList() .contains(getvertex(seqEntry.getValue().get(seqEntry.getValue().size() - 1)))) { @@ -1964,17 +1903,17 @@ public class DirectedGraphTranslator extends JApplet { } private String getEventName(String taskName, TMLActivityElement currentElement2) { - String eventName = null; - if (currentElement2.getReferenceObject() instanceof TMLADRandom) { - eventName = taskName + "__" + currentElement2.getName() + "__" + currentElement2.getID(); - } else if (currentElement2.getReferenceObject() instanceof TMLADUnorderedSequence) { - eventName = taskName + "__" + UNORDERED_SEQUENCE + "__" + currentElement2.getID(); - } else if (currentElement2.getReferenceObject() != null) { - eventName = taskName + "__" + currentElement2.getReferenceObject().toString() + "__" + currentElement2.getID(); + String name = ""; + if (currentElement2 instanceof TMLWaitEvent) { + TMLEvent event = ((TMLWaitEvent) currentElement2).getEvent(); + name = taskName + "__" + "Wait event: " + event.getName() + "__" + currentElement2.getID(); + } else if (currentElement2 instanceof TMLSendEvent) { + TMLEvent event = ((TMLSendEvent) currentElement2).getEvent(); + name = taskName + "__" + "Send event: " + event.getName() + "__" + currentElement2.getID(); } else { - eventName = taskName + "__" + currentElement2.getName() + "__" + currentElement2.getID(); + name = taskName + "__" + currentElement2.getName().replace(" ", "") + "__" + currentElement2.getID(); } - return eventName; + return name; } // get graph size @@ -1988,8 +1927,8 @@ public class DirectedGraphTranslator extends JApplet { } // open graph in a frame - public void showGraph(DirectedGraphTranslator dgraph) { - JGraphXAdapter<vertex, DefaultEdge> graphAdapter = new JGraphXAdapter<vertex, DefaultEdge>(dgraph.getG()); + public void showGraph(DependencyGraphTranslator dgraph) { + JGraphXAdapter<Vertex, DefaultEdge> graphAdapter = new JGraphXAdapter<Vertex, DefaultEdge>(dgraph.getG()); mxHierarchicalLayout layout = new mxHierarchicalLayout(graphAdapter); layout.setInterHierarchySpacing(100); layout.setInterRankCellSpacing(100); @@ -2013,25 +1952,25 @@ public class DirectedGraphTranslator extends JApplet { public void exportGraph(String filename) throws ExportException, IOException { @SuppressWarnings({ "rawtypes", "unchecked" }) GraphMLExporter<String, DefaultEdge> gmlExporter = new GraphMLExporter(); - ComponentNameProvider<vertex> vertexIDProvider = new ComponentNameProvider<vertex>() { + ComponentNameProvider<Vertex> vertexIDProvider = new ComponentNameProvider<Vertex>() { @Override - public String getName(vertex vertex) { + public String getName(Vertex Vertex) { String name; - for (vertex v : g.vertexSet()) { - if (v.getName().equals(vertex.getName())) { - name = vertex.getName().toString().replaceAll("\\s+", ""); - name = vertex.getName().replaceAll("\\(", "\\u0028"); - name = vertex.getName().replaceAll("\\)", "\\u0029"); + for (Vertex v : g.vertexSet()) { + if (v.getName().equals(Vertex.getName())) { + name = Vertex.getName().toString().replaceAll("\\s+", ""); + name = Vertex.getName().replaceAll("\\(", "\\u0028"); + name = Vertex.getName().replaceAll("\\)", "\\u0029"); return name; } } return null; } }; - ComponentNameProvider<vertex> vertexNameProvider = new ComponentNameProvider<vertex>() { + ComponentNameProvider<Vertex> vertexNameProvider = new ComponentNameProvider<Vertex>() { @Override - public String getName(vertex arg0) { - for (vertex v : g.vertexSet()) { + public String getName(Vertex arg0) { + for (Vertex v : g.vertexSet()) { if (v.getName().equals(arg0.getName())) { return arg0.getName(); } @@ -2057,7 +1996,7 @@ public class DirectedGraphTranslator extends JApplet { return Double.toString(g.getEdgeWeight(edge)); } }; - GraphMLExporter<vertex, DefaultEdge> exporter = new GraphMLExporter<vertex, DefaultEdge>(vertexIDProvider, vertexNameProvider, edgeIDProvider, + GraphMLExporter<Vertex, DefaultEdge> exporter = new GraphMLExporter<Vertex, DefaultEdge>(vertexIDProvider, vertexNameProvider, edgeIDProvider, edgeLabelProvider); Writer fileWriter; FileWriter PS = new FileWriter(filename + ".graphml"); @@ -2094,7 +2033,7 @@ public class DirectedGraphTranslator extends JApplet { public Object[][] latencyDetailedAnalysis(String task12ID, String task22ID, Vector<SimulationTransaction> transFile1, Boolean taint, Boolean considerAddedRules) { try { - for (vertex v : g.vertexSet()) { + for (Vertex v : g.vertexSet()) { v.setLabel(new ArrayList<String>()); v.setMaxTaintFixedNumber(new HashMap<String, Integer>()); v.setTaintConsideredNumber(new HashMap<String, Integer>()); @@ -2109,22 +2048,28 @@ public class DirectedGraphTranslator extends JApplet { String[] task2 = task22ID.split("__"); int task2index = task2.length; idTask2 = task2[task2index - 1]; - String task12 = nameIDTaskList.get(idTask1); - String task22 = nameIDTaskList.get(idTask2); - vertex v1 = getvertex(task12); + String task12 = getvertexFromID(Integer.valueOf(idTask1)).toString(); + String task22 = getvertexFromID(Integer.valueOf(idTask2)).toString(); + Vertex v1 = getvertex(task12); Vector<SimulationTransaction> Task1Traces = new Vector<SimulationTransaction>(); Vector<SimulationTransaction> Task2Traces = new Vector<SimulationTransaction>(); HashMap<String, Vector<String>> Task1TaintedTraces = new LinkedHashMap<String, Vector<String>>(); HashMap<String, Vector<String>> Task2TaintedTraces = new LinkedHashMap<String, Vector<String>>(); - GraphPath<vertex, DefaultEdge> path2 = DijkstraShortestPath.findPathBetween(g, v1, getvertex(task22)); + GraphPath<Vertex, DefaultEdge> path2 = DijkstraShortestPath.findPathBetween(g, v1, getvertex(task22)); times1.clear(); times2.clear(); + Vector<SimulationTransaction> delayDueTosimTracesTaint = new Vector<SimulationTransaction>(); + dataBydelayedTasks = new HashMap<Integer, List<SimulationTransaction>>(); + dataByTask = null; + relatedsimTraces = new Vector<SimulationTransaction>(); + delayDueTosimTraces = new Vector<SimulationTransaction>(); + dependencyGraphRelations.setRunnableTimePerDevice(new HashMap<String, ArrayList<ArrayList<Integer>>>()); if (path2 != null && path2.getLength() > 0) { for (Entry<String, ArrayList<String>> entry : channelPaths.entrySet()) { String ChannelName = entry.getKey(); ArrayList<String> busChList = entry.getValue(); - GraphPath<vertex, DefaultEdge> pathTochannel = DijkstraShortestPath.findPathBetween(g, v1, getvertex(ChannelName)); - GraphPath<vertex, DefaultEdge> pathFromChannel = DijkstraShortestPath.findPathBetween(g, getvertex(ChannelName), + GraphPath<Vertex, DefaultEdge> pathTochannel = DijkstraShortestPath.findPathBetween(g, v1, getvertex(ChannelName)); + GraphPath<Vertex, DefaultEdge> pathFromChannel = DijkstraShortestPath.findPathBetween(g, getvertex(ChannelName), getvertex(task22)); if (pathTochannel != null && pathTochannel.getLength() > 0 && pathFromChannel != null && pathFromChannel.getLength() > 0) { devicesToBeConsidered.addAll(busChList); @@ -2134,8 +2079,8 @@ public class DirectedGraphTranslator extends JApplet { for (Entry<String, ArrayList<String>> entry : channelPaths.entrySet()) { String ChannelName = entry.getKey(); ArrayList<String> busChList = entry.getValue(); - GraphPath<vertex, DefaultEdge> pathTochannel = DijkstraShortestPath.findPathBetween(g, v1, getvertex(ChannelName)); - GraphPath<vertex, DefaultEdge> pathFromChannel = DijkstraShortestPath.findPathBetween(g, getvertex(ChannelName), + GraphPath<Vertex, DefaultEdge> pathTochannel = DijkstraShortestPath.findPathBetween(g, v1, getvertex(ChannelName)); + GraphPath<Vertex, DefaultEdge> pathFromChannel = DijkstraShortestPath.findPathBetween(g, getvertex(ChannelName), getvertex(task22)); if ((pathTochannel != null && pathTochannel.getLength() > 0) || (pathFromChannel != null && pathFromChannel.getLength() > 0)) { devicesToBeConsidered.addAll(busChList); @@ -2186,11 +2131,11 @@ public class DirectedGraphTranslator extends JApplet { } // ADD rules as edges if (considerAddedRules) { - if (ruleAddedEdges.size() > 0) { - for (Entry<vertex, List<vertex>> rulevertex : ruleAddedEdges.entrySet()) { - vertex fromVertex = rulevertex.getKey(); - List<vertex> listOfToV = rulevertex.getValue(); - for (vertex toVertex : listOfToV) { + if (dependencyGraphRelations.getRuleAddedEdges().size() > 0) { + for (Entry<Vertex, List<Vertex>> rulevertex : dependencyGraphRelations.getRuleAddedEdges().entrySet()) { + Vertex fromVertex = rulevertex.getKey(); + List<Vertex> listOfToV = rulevertex.getValue(); + for (Vertex toVertex : listOfToV) { if (g.containsVertex(toVertex) && g.containsVertex(fromVertex)) { g.addEdge(fromVertex, toVertex); } @@ -2207,21 +2152,21 @@ public class DirectedGraphTranslator extends JApplet { st.command = st.command.replace(SELECT_EVENT, WAIT_ST + st.channelName); String[] chN = st.channelName.split("__"); String eventN = chN[chN.length - 1]; - vertex v = getvertexFromID(id); + Vertex v = getvertexFromID(id); String vName = v.getName(); if (Graphs.vertexHasSuccessors(g, v)) { - for (vertex vsec : Graphs.successorListOf(g, v)) { - if (vsec.getName().contains(WAIT_EVENT + eventN + "(")) { + for (Vertex vsec : Graphs.successorListOf(g, v)) { + if (vsec.getName().contains("__" + eventN + "__")) { st.id = String.valueOf(vsec.getId()); id = vsec.getId(); } } } } else if (st.command.contains(WAIT_REQ_LABEL)) { - vertex v = getvertexFromID(id); - if (v.getType() == vertex.TYPE_START) { + Vertex v = getvertexFromID(id); + if (v.getType() == Vertex.TYPE_START) { if (Graphs.vertexHasSuccessors(g, v)) { - for (vertex vbefore : Graphs.successorListOf(g, v)) { + for (Vertex vbefore : Graphs.successorListOf(g, v)) { if (vbefore.getName().contains(GET_REQ_ARG_LABEL)) { st.id = String.valueOf(vbefore.getId()); id = vbefore.getId(); @@ -2259,7 +2204,7 @@ public class DirectedGraphTranslator extends JApplet { } } if (tasknameCheckID.isEmpty()) { - for (vertex tasknameCheck : g.vertexSet()) { + for (Vertex tasknameCheck : g.vertexSet()) { String[] taskToAdd = tasknameCheck.toString().replaceAll(" ", "").split("__"); int taskToAddindex = taskToAdd.length; String taskToAddid = taskToAdd[taskToAddindex - 1]; @@ -2284,9 +2229,9 @@ public class DirectedGraphTranslator extends JApplet { } } } - vertex taskVertex = getvertex(tasknameCheckID); + Vertex taskVertex = getvertex(tasknameCheckID); if (taskVertex != null && Graphs.vertexHasSuccessors(g, taskVertex) && !taskVertex.getLabel().isEmpty()) { - for (vertex v : Graphs.successorListOf(g, taskVertex)) { + for (Vertex v : Graphs.successorListOf(g, taskVertex)) { String labelToaAddtoV = getfirstCommonLabel(v, taskVertex); // removed after testing in for loop/ action/choice /* @@ -2327,7 +2272,7 @@ public class DirectedGraphTranslator extends JApplet { * * } } } */ - if (v.getType() == vertex.TYPE_CHANNEL || v.getType() == vertex.TYPE_TRANSACTION) { + if (v.getType() == Vertex.getTypeChannel() || v.getType() == Vertex.TYPE_TRANSACTION) { if (v.getLabel().contains(labelToaAddtoV)) { if (v.getMaxTaintFixedNumber().containsKey(labelToaAddtoV)) { if (v.getMaxTaintFixedNumber().get(labelToaAddtoV) != v.getTaintFixedNumber()) { @@ -2339,18 +2284,18 @@ public class DirectedGraphTranslator extends JApplet { v.addLabel(labelToaAddtoV); v.getMaxTaintFixedNumber().put(labelToaAddtoV, v.getTaintFixedNumber()); } - for (vertex subV : Graphs.successorListOf(g, v)) { + for (Vertex subV : Graphs.successorListOf(g, v)) { if (!subV.equals(v1)) { - if (!(subV.getType() == vertex.TYPE_TRANSACTION || subV.getType() == vertex.TYPE_CHANNEL)) { - HashMap<vertex, List<vertex>> NonTransVertexes = new LinkedHashMap<vertex, List<vertex>>(); - HashMap<vertex, List<vertex>> NonTransVertexes2 = new LinkedHashMap<vertex, List<vertex>>(); - HashMap<vertex, List<vertex>> NonTransVertexesAdded = new LinkedHashMap<vertex, List<vertex>>(); + if (!(subV.getType() == Vertex.TYPE_TRANSACTION || subV.getType() == Vertex.getTypeChannel())) { + HashMap<Vertex, List<Vertex>> NonTransVertexes = new LinkedHashMap<Vertex, List<Vertex>>(); + HashMap<Vertex, List<Vertex>> NonTransVertexes2 = new LinkedHashMap<Vertex, List<Vertex>>(); + HashMap<Vertex, List<Vertex>> NonTransVertexesAdded = new LinkedHashMap<Vertex, List<Vertex>>(); NonTransVertexes.putAll(taintingNonTransVertexes(v, taskVertex, v1)); int addeditems = 0; - for (Entry<vertex, List<vertex>> e : NonTransVertexes.entrySet()) { - vertex vet = e.getKey(); - List<vertex> vl = e.getValue(); - for (vertex ver : vl) { + for (Entry<Vertex, List<Vertex>> e : NonTransVertexes.entrySet()) { + Vertex vet = e.getKey(); + List<Vertex> vl = e.getValue(); + for (Vertex ver : vl) { NonTransVertexes2 = taintingNonTransVertexes(ver, vet, v1); NonTransVertexesAdded.putAll(NonTransVertexes2); // NonTransVertexes.putAll(taintingNonTransVertexes(ver, vet, v1)); @@ -2358,13 +2303,13 @@ public class DirectedGraphTranslator extends JApplet { } } while (addeditems > 0) { - NonTransVertexes = new LinkedHashMap<vertex, List<vertex>>(); + NonTransVertexes = new LinkedHashMap<Vertex, List<Vertex>>(); NonTransVertexes.putAll(NonTransVertexesAdded); - NonTransVertexesAdded = new LinkedHashMap<vertex, List<vertex>>(); - for (Entry<vertex, List<vertex>> e : NonTransVertexes.entrySet()) { - vertex vet = e.getKey(); - List<vertex> vl = e.getValue(); - for (vertex ver : vl) { + NonTransVertexesAdded = new LinkedHashMap<Vertex, List<Vertex>>(); + for (Entry<Vertex, List<Vertex>> e : NonTransVertexes.entrySet()) { + Vertex vet = e.getKey(); + List<Vertex> vl = e.getValue(); + for (Vertex ver : vl) { NonTransVertexesAdded.putAll(taintingNonTransVertexes(ver, vet, v1)); // NonTransVertexes.putAll(taintingNonTransVertexes(ver, vet, v1)); addeditems--; @@ -2376,15 +2321,15 @@ public class DirectedGraphTranslator extends JApplet { } } } else { - HashMap<vertex, List<vertex>> NonTransVertexes = new LinkedHashMap<vertex, List<vertex>>(); - HashMap<vertex, List<vertex>> NonTransVertexes2 = new LinkedHashMap<vertex, List<vertex>>(); - HashMap<vertex, List<vertex>> NonTransVertexesAdded = new LinkedHashMap<vertex, List<vertex>>(); + HashMap<Vertex, List<Vertex>> NonTransVertexes = new LinkedHashMap<Vertex, List<Vertex>>(); + HashMap<Vertex, List<Vertex>> NonTransVertexes2 = new LinkedHashMap<Vertex, List<Vertex>>(); + HashMap<Vertex, List<Vertex>> NonTransVertexesAdded = new LinkedHashMap<Vertex, List<Vertex>>(); NonTransVertexes.putAll(taintingNonTransVertexes(v, taskVertex, v1)); int addeditems = 0; - for (Entry<vertex, List<vertex>> e : NonTransVertexes.entrySet()) { - vertex vet = e.getKey(); - List<vertex> vl = e.getValue(); - for (vertex ver : vl) { + for (Entry<Vertex, List<Vertex>> e : NonTransVertexes.entrySet()) { + Vertex vet = e.getKey(); + List<Vertex> vl = e.getValue(); + for (Vertex ver : vl) { NonTransVertexes2 = taintingNonTransVertexes(ver, vet, v1); NonTransVertexesAdded.putAll(NonTransVertexes2); // NonTransVertexes.putAll(taintingNonTransVertexes(ver, vet, v1)); @@ -2392,13 +2337,13 @@ public class DirectedGraphTranslator extends JApplet { } } while (addeditems > 0) { - NonTransVertexes = new LinkedHashMap<vertex, List<vertex>>(); + NonTransVertexes = new LinkedHashMap<Vertex, List<Vertex>>(); NonTransVertexes.putAll(NonTransVertexesAdded); - NonTransVertexesAdded = new LinkedHashMap<vertex, List<vertex>>(); - for (Entry<vertex, List<vertex>> e : NonTransVertexes.entrySet()) { - vertex vet = e.getKey(); - List<vertex> vl = e.getValue(); - for (vertex ver : vl) { + NonTransVertexesAdded = new LinkedHashMap<Vertex, List<Vertex>>(); + for (Entry<Vertex, List<Vertex>> e : NonTransVertexes.entrySet()) { + Vertex vet = e.getKey(); + List<Vertex> vl = e.getValue(); + for (Vertex ver : vl) { NonTransVertexesAdded.putAll(taintingNonTransVertexes(ver, vet, v1)); // NonTransVertexes.putAll(taintingNonTransVertexes(ver, vet, v1)); addeditems--; @@ -2418,11 +2363,11 @@ public class DirectedGraphTranslator extends JApplet { } // remove rules edges if (considerAddedRules) { - if (ruleAddedEdges.size() > 0) { - for (Entry<vertex, List<vertex>> rulevertex : ruleAddedEdges.entrySet()) { - vertex fromVertex = rulevertex.getKey(); - List<vertex> listOfToV = rulevertex.getValue(); - for (vertex toVertex : listOfToV) { + if (dependencyGraphRelations.getRuleAddedEdges().size() > 0) { + for (Entry<Vertex, List<Vertex>> rulevertex : dependencyGraphRelations.getRuleAddedEdges().entrySet()) { + Vertex fromVertex = rulevertex.getKey(); + List<Vertex> listOfToV = rulevertex.getValue(); + for (Vertex toVertex : listOfToV) { if (g.containsVertex(fromVertex) && g.containsVertex(toVertex) && g.containsEdge(fromVertex, toVertex)) { g.removeEdge(fromVertex, toVertex); } @@ -2436,8 +2381,8 @@ public class DirectedGraphTranslator extends JApplet { // if (path2 != null && path2.getLength() > 0) { j++; if (path2 != null && path2.getLength() > 0 && taskname != "") { - GraphPath<vertex, DefaultEdge> pathToOrigin = DijkstraShortestPath.findPathBetween(g, v1, getvertex(taskname)); - GraphPath<vertex, DefaultEdge> pathToDestination = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), + GraphPath<Vertex, DefaultEdge> pathToOrigin = DijkstraShortestPath.findPathBetween(g, v1, getvertex(taskname)); + GraphPath<Vertex, DefaultEdge> pathToDestination = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), getvertex(task22)); if (taskname.equals(task12) || (hasLabelAstask12 && taskname.equals(task22)) || (hasLabelAstask12 && (pathToOrigin != null && pathToOrigin.getLength() > 0 && pathToDestination != null && pathToDestination.getLength() > 0))) { @@ -2466,14 +2411,14 @@ public class DirectedGraphTranslator extends JApplet { timeValues.add(1, startTime); if (!(st.runnableTime).equals(st.startTime)) { String dName = st.deviceName + "_" + st.coreNumber; - if (runnableTimePerDevice.containsKey(dName)) { - if (!runnableTimePerDevice.get(dName).contains(timeValues)) { - runnableTimePerDevice.get(dName).add(timeValues); + if (dependencyGraphRelations.getRunnableTimePerDevice().containsKey(dName)) { + if (!dependencyGraphRelations.getRunnableTimePerDevice().get(dName).contains(timeValues)) { + dependencyGraphRelations.getRunnableTimePerDevice().get(dName).add(timeValues); } } else { ArrayList<ArrayList<Integer>> timeValuesList = new ArrayList<ArrayList<Integer>>(); timeValuesList.add(timeValues); - runnableTimePerDevice.put(dName, timeValuesList); + dependencyGraphRelations.getRunnableTimePerDevice().put(dName, timeValuesList); } } } else if (((st.deviceName.equals(task2DeviceName) && task2CoreNbr.equals(st.coreNumber)) @@ -2483,8 +2428,8 @@ public class DirectedGraphTranslator extends JApplet { } } else { if (!taskname.equals(null) && !taskname.equals("")) { - GraphPath<vertex, DefaultEdge> pathExistsTestwithTask1 = DijkstraShortestPath.findPathBetween(g, v1, getvertex(taskname)); - GraphPath<vertex, DefaultEdge> pathExistsTestwithTask2 = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), + GraphPath<Vertex, DefaultEdge> pathExistsTestwithTask1 = DijkstraShortestPath.findPathBetween(g, v1, getvertex(taskname)); + GraphPath<Vertex, DefaultEdge> pathExistsTestwithTask2 = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), getvertex(task22)); if (taskname.equals(task12) || (hasLabelAstask12 && taskname.equals(task22)) || (hasLabelAstask12 && (pathExistsTestwithTask1 != null && pathExistsTestwithTask1.getLength() > 0 @@ -2514,14 +2459,14 @@ public class DirectedGraphTranslator extends JApplet { timeValues.add(1, startTime); if (!(st.runnableTime).equals(st.startTime)) { String dName = st.deviceName + "_" + st.coreNumber; - if (runnableTimePerDevice.containsKey(dName)) { - if (!runnableTimePerDevice.get(dName).contains(timeValues)) { - runnableTimePerDevice.get(dName).add(timeValues); + if (dependencyGraphRelations.getRunnableTimePerDevice().containsKey(dName)) { + if (!dependencyGraphRelations.getRunnableTimePerDevice().get(dName).contains(timeValues)) { + dependencyGraphRelations.getRunnableTimePerDevice().get(dName).add(timeValues); } } else { ArrayList<ArrayList<Integer>> timeValuesList = new ArrayList<ArrayList<Integer>>(); timeValuesList.add(timeValues); - runnableTimePerDevice.put(dName, timeValuesList); + dependencyGraphRelations.getRunnableTimePerDevice().put(dName, timeValuesList); } } } else if (((st.deviceName.equals(task2DeviceName) && task2CoreNbr.equals(st.coreNumber)) @@ -2595,11 +2540,10 @@ public class DirectedGraphTranslator extends JApplet { } } dataByTaskR.put(i, relatedSTTaint); - timeDelayedPerRow.put(i, runnableTimePerDevice); + timeDelayedPerRow.put(i, dependencyGraphRelations.getRunnableTimePerDevice()); i++; } for (int row = 0; row < dataByTask.length; row++) { - Vector<SimulationTransaction> delayDueTosimTracesTaint = new Vector<SimulationTransaction>(); for (SimulationTransaction st : delayDueTosimTraces) { int startTime = Integer.valueOf(st.startTime); int endTime = Integer.valueOf(st.endTime); @@ -2637,21 +2581,21 @@ public class DirectedGraphTranslator extends JApplet { } if (st.command.contains(SELECT_EVENT_PARAM) && getvertexFromID(selectID).getType() == 11) { st.command = st.command.replace(SELECT_EVENT_PARAM, WAIT_LABEL + st.channelName); - vertex selectV = getvertexFromID(selectID); + Vertex selectV = getvertexFromID(selectID); String[] chName = st.channelName.toString().split("__"); int waitEvntName = chName.length; String waitEvnt = chName[waitEvntName - 1]; - for (vertex nextV : Graphs.successorListOf(g, selectV)) { + for (Vertex nextV : Graphs.successorListOf(g, selectV)) { if (nextV.getName().contains(waitEvnt)) { st.id = String.valueOf(nextV.getId()); selectID = nextV.getId(); } } } else if (st.command.contains(WAIT_REQ_LABEL)) { - vertex v = getvertexFromID(selectID); - if (v.getType() == vertex.TYPE_START) { + Vertex v = getvertexFromID(selectID); + if (v.getType() == Vertex.TYPE_START) { if (Graphs.vertexHasSuccessors(g, v)) { - for (vertex vbefore : Graphs.successorListOf(g, v)) { + for (Vertex vbefore : Graphs.successorListOf(g, v)) { if (vbefore.getName().contains(GET_REQ_ARG_LABEL)) { st.id = String.valueOf(vbefore.getId()); selectID = vbefore.getId(); @@ -2683,14 +2627,12 @@ public class DirectedGraphTranslator extends JApplet { minIndex = times1.size(); } dataByTask = new Object[minIndex][7]; - dataByTaskBYRow = new Object[minIndex][2]; - dataByTaskHWBYRow = new Object[minIndex][2]; for (int i = 0; i < minIndex; i++) { HashMap<String, ArrayList<SimulationTransaction>> relatedHWs = new HashMap<String, ArrayList<SimulationTransaction>>(); HashMap<String, ArrayList<SimulationTransaction>> relatedTasks = new HashMap<String, ArrayList<SimulationTransaction>>(); relatedsimTraces = new Vector<SimulationTransaction>(); delayDueTosimTraces = new Vector<SimulationTransaction>(); - runnableTimePerDevice = new HashMap<String, ArrayList<ArrayList<Integer>>>(); + dependencyGraphRelations.setRunnableTimePerDevice(new HashMap<String, ArrayList<ArrayList<Integer>>>()); for (SimulationTransaction st : transFile1) { int startTime = Integer.valueOf(st.startTime); int endTime = Integer.valueOf(st.endTime); @@ -2699,21 +2641,21 @@ public class DirectedGraphTranslator extends JApplet { if (!(startTime < times1.get(i) && endTime <= times1.get(i)) && !(startTime >= times2.get(i) && endTime > times2.get(i))) { if (st.command.contains(SELECT_EVENT_PARAM) && getvertexFromID(selectID).getType() == 11) { st.command = st.command.replace(SELECT_EVENT_PARAM, WAIT_LABEL + st.channelName); - vertex selectV = getvertexFromID(selectID); + Vertex selectV = getvertexFromID(selectID); String[] chName = st.channelName.toString().split("__"); int waitEvntName = chName.length; String waitEvnt = chName[waitEvntName - 1]; - for (vertex nextV : Graphs.successorListOf(g, selectV)) { + for (Vertex nextV : Graphs.successorListOf(g, selectV)) { if (nextV.getName().contains(waitEvnt)) { st.id = String.valueOf(nextV.getId()); selectID = nextV.getId(); } } } else if (st.command.contains(WAIT_REQ_LABEL)) { - vertex v = getvertexFromID(selectID); - if (v.getType() == vertex.TYPE_START) { + Vertex v = getvertexFromID(selectID); + if (v.getType() == Vertex.TYPE_START) { if (Graphs.vertexHasSuccessors(g, v)) { - for (vertex vbefore : Graphs.successorListOf(g, v)) { + for (Vertex vbefore : Graphs.successorListOf(g, v)) { if (vbefore.getName().startsWith(GET_REQ_ARG_LABEL)) { st.id = String.valueOf(vbefore.getId()); selectID = vbefore.getId(); @@ -2740,7 +2682,7 @@ public class DirectedGraphTranslator extends JApplet { endTime = times2.get(i); } String taskname = ""; - for (vertex tasknameCheck : g.vertexSet()) { + for (Vertex tasknameCheck : g.vertexSet()) { String[] taskToAdd = tasknameCheck.toString().replaceAll(" ", "").split("__"); int taskToAddindex = taskToAdd.length; String taskToAddid = taskToAdd[taskToAddindex - 1]; @@ -2756,8 +2698,8 @@ public class DirectedGraphTranslator extends JApplet { // there is a path between task 1 and task 2 if (path2 != null && path2.getLength() > 0) { if (!taskname.equals(null) && !taskname.equals("")) { - GraphPath<vertex, DefaultEdge> pathToOrigin = DijkstraShortestPath.findPathBetween(g, v1, getvertex(taskname)); - GraphPath<vertex, DefaultEdge> pathToDestination = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), + GraphPath<Vertex, DefaultEdge> pathToOrigin = DijkstraShortestPath.findPathBetween(g, v1, getvertex(taskname)); + GraphPath<Vertex, DefaultEdge> pathToDestination = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), getvertex(task22)); if (taskname.equals(task12) || taskname.equals(task22) || (pathToOrigin != null && pathToOrigin.getLength() > 0 && pathToDestination != null && pathToDestination.getLength() > 0)) { @@ -2767,14 +2709,14 @@ public class DirectedGraphTranslator extends JApplet { timeValues.add(1, startTime); String dName = st.deviceName + "_" + st.coreNumber; if (!(st.runnableTime).equals(st.startTime)) { - if (runnableTimePerDevice.containsKey(dName)) { - if (!runnableTimePerDevice.get(dName).contains(timeValues)) { - runnableTimePerDevice.get(dName).add(timeValues); + if (dependencyGraphRelations.getRunnableTimePerDevice().containsKey(dName)) { + if (!dependencyGraphRelations.getRunnableTimePerDevice().get(dName).contains(timeValues)) { + dependencyGraphRelations.getRunnableTimePerDevice().get(dName).add(timeValues); } } else { ArrayList<ArrayList<Integer>> timeValuesList = new ArrayList<ArrayList<Integer>>(); timeValuesList.add(timeValues); - runnableTimePerDevice.put(dName, timeValuesList); + dependencyGraphRelations.getRunnableTimePerDevice().put(dName, timeValuesList); } } } else if (((st.deviceName.equals(task2DeviceName) && task2CoreNbr.equals(st.coreNumber)) @@ -2785,9 +2727,9 @@ public class DirectedGraphTranslator extends JApplet { } } else { if (!taskname.equals(null) && !taskname.equals("")) { - GraphPath<vertex, DefaultEdge> pathExistsTestwithTask1 = DijkstraShortestPath.findPathBetween(g, v1, + GraphPath<Vertex, DefaultEdge> pathExistsTestwithTask1 = DijkstraShortestPath.findPathBetween(g, v1, getvertex(taskname)); - GraphPath<vertex, DefaultEdge> pathExistsTestwithTask2 = DijkstraShortestPath.findPathBetween(g, + GraphPath<Vertex, DefaultEdge> pathExistsTestwithTask2 = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), getvertex(task22)); if (pathExistsTestwithTask1 != null && pathExistsTestwithTask1.getLength() > 0 || pathExistsTestwithTask2 != null && pathExistsTestwithTask2.getLength() > 0) { @@ -2813,7 +2755,7 @@ public class DirectedGraphTranslator extends JApplet { dataByTask[i][5] = ""; dataByTaskR.put(i, relatedsimTraces); dataBydelayedTasks.put(i, delayDueTosimTraces); - timeDelayedPerRow.put(i, runnableTimePerDevice); + timeDelayedPerRow.put(i, dependencyGraphRelations.getRunnableTimePerDevice()); // dataByTask[i][5] = list.getModel(); // dataByTask[i][6] = totalTime; } @@ -3040,20 +2982,20 @@ public class DirectedGraphTranslator extends JApplet { } } - private String getfirstCommonLabel(vertex vertex, vertex v) { + private String getfirstCommonLabel(Vertex Vertex, Vertex v) { for (int i = 0; i < v.getLabel().size(); i++) { - if (!vertex.getLabel().contains(v.getLabel().get(i))) { + if (!Vertex.getLabel().contains(v.getLabel().get(i))) { return v.getLabel().get(i); } } for (int j = 0; j < v.getLabel().size(); j++) { - if (vertex.getMaxTaintFixedNumber().containsKey(v.getLabel().get(j)) && vertex.getMaxTaintFixedNumber().get(v.getLabel().get(j)) == 0) { + if (Vertex.getMaxTaintFixedNumber().containsKey(v.getLabel().get(j)) && Vertex.getMaxTaintFixedNumber().get(v.getLabel().get(j)) == 0) { return v.getLabel().get(j); } } for (int j = 0; j < v.getLabel().size(); j++) { - if (vertex.getTaintConsideredNumber().containsKey(v.getLabel().get(j)) - && vertex.getTaintConsideredNumber().get(v.getLabel().get(j)) < vertex.getMaxTaintFixedNumber().get(v.getLabel().get(j))) { + if (Vertex.getTaintConsideredNumber().containsKey(v.getLabel().get(j)) + && Vertex.getTaintConsideredNumber().get(v.getLabel().get(j)) < Vertex.getMaxTaintFixedNumber().get(v.getLabel().get(j))) { return v.getLabel().get(j); } } @@ -3065,8 +3007,8 @@ public class DirectedGraphTranslator extends JApplet { private Boolean considerVertex(String task12, String taskname, String virtualLength, String command) { boolean hasLabelAstask12 = false; - vertex v1 = getvertex(task12); - vertex v = getvertex(taskname); + Vertex v1 = getvertex(task12); + Vertex v = getvertex(taskname); String Label = null; if (command.contains(WRITE) || command.contains(READ)) { String[] str = command.split(","); @@ -3090,9 +3032,9 @@ public class DirectedGraphTranslator extends JApplet { String labelConsidered = v.getLabel().get(i); int consideredNbr = v.getTaintConsideredNumber().get(labelConsidered); if (Graphs.vertexHasPredecessors(g, v)) { - for (vertex previousV : Graphs.predecessorListOf(g, v)) { - if (previousV.getType() == vertex.TYPE_CHOICE) { - for (Entry<vertex, List<vertex>> vChoice : allChoiceValues.entrySet()) { + for (Vertex previousV : Graphs.predecessorListOf(g, v)) { + if (previousV.getType() == Vertex.TYPE_CHOICE) { + for (Entry<Vertex, List<Vertex>> vChoice : dependencyGraphRelations.getAllChoiceValues().entrySet()) { if (previousV.equals(vChoice.getKey())) { if (v1.getLabel().contains(v.getLabel().get(i)) && consideredNbr < v.getMaxTaintFixedNumber().get(labelConsidered)) { if (v.getVirtualLengthAdded() == v.getSampleNumber()) { @@ -3113,8 +3055,8 @@ public class DirectedGraphTranslator extends JApplet { } } } - if (previousV.getType() == vertex.TYPE_SELECT_EVT) { - for (Entry<vertex, List<vertex>> vChoice : allSelectEvtValues.entrySet()) { + if (previousV.getType() == Vertex.TYPE_SELECT_EVT) { + for (Entry<Vertex, List<Vertex>> vChoice : dependencyGraphRelations.getAllSelectEvtValues().entrySet()) { if (previousV.equals(vChoice.getKey())) { if (v1.getLabel().contains(v.getLabel().get(i)) && consideredNbr < v.getMaxTaintFixedNumber().get(labelConsidered)) { if (v.getVirtualLengthAdded() == v.getSampleNumber()) { @@ -3134,8 +3076,8 @@ public class DirectedGraphTranslator extends JApplet { } } } - } else if (previousV.getType() == vertex.TYPE_SEQ) { - for (Entry<vertex, List<vertex>> vSeq : allSeqValues.entrySet()) { + } else if (previousV.getType() == Vertex.TYPE_SEQ) { + for (Entry<Vertex, List<Vertex>> vSeq : dependencyGraphRelations.getAllSeqValues().entrySet()) { if (previousV.equals(vSeq.getKey())) { if (v1.getLabel().contains(v.getLabel().get(i)) && consideredNbr < v.getMaxTaintFixedNumber().get(labelConsidered)) { if (v.getVirtualLengthAdded() == v.getSampleNumber()) { @@ -3155,7 +3097,7 @@ public class DirectedGraphTranslator extends JApplet { } } } - } else if (previousV.getType() == vertex.TYPE_UNORDER_SEQ) { + } else if (previousV.getType() == Vertex.TYPE_UNORDER_SEQ) { if (v1.getLabel().contains(v.getLabel().get(i)) && consideredNbr < v.getMaxTaintFixedNumber().get(labelConsidered)) { if (v.getVirtualLengthAdded() == v.getSampleNumber()) { consideredNbr = v.getTaintConsideredNumber().get(labelConsidered); @@ -3163,10 +3105,10 @@ public class DirectedGraphTranslator extends JApplet { v.getTaintConsideredNumber().put(labelConsidered, consideredNbr); hasLabelAstask12 = true; v.setVirtualLengthAdded(0); - for (Entry<vertex, List<vertex>> vSeq : allRandomSeqValues.entrySet()) { + for (Entry<Vertex, List<Vertex>> vSeq : dependencyGraphRelations.getAllRandomSeqValues().entrySet()) { if (previousV.equals(vSeq.getKey())) { int count = 0; - for (vertex seqNext : vSeq.getValue()) { + for (Vertex seqNext : vSeq.getValue()) { if (seqNext.getTaintConsideredNumber().get(labelConsidered) != seqNext.getMaxTaintFixedNumber() .get(labelConsidered)) { count++; @@ -3186,13 +3128,13 @@ public class DirectedGraphTranslator extends JApplet { hasLabelAstask12 = true; } } - } else if ((previousV.getType() == vertex.TYPE_FOR_LOOP || previousV.getType() == vertex.TYPE_STATIC_FOR_LOOP) + } else if ((previousV.getType() == Vertex.TYPE_FOR_LOOP || previousV.getType() == Vertex.TYPE_STATIC_FOR_LOOP) && (previousV.getLabel().contains(labelConsidered))) { if (v1.getLabel().contains(v.getLabel().get(i)) && (previousV.getTaintConsideredNumber() .get(labelConsidered) == previousV.getMaxTaintFixedNumber().get(labelConsidered) - 1)) { if (v.getVirtualLengthAdded() == v.getSampleNumber()) { - for (Entry<String, List<String>> nextvertexOfLoop : allForLoopNextValues.entrySet()) { - vertex vFor1 = getvertex(nextvertexOfLoop.getValue().get(1)); + for (Entry<String, List<String>> nextvertexOfLoop : dependencyGraphRelations.getAllForLoopNextValues().entrySet()) { + Vertex vFor1 = getvertex(nextvertexOfLoop.getValue().get(1)); if (v.getName().equals(previousV.getName())) { consideredNbr = v.getTaintConsideredNumber().get(labelConsidered); consideredNbr++; @@ -3214,16 +3156,16 @@ public class DirectedGraphTranslator extends JApplet { } if (Graphs.vertexHasSuccessors(g, v)) { if (v.getVirtualLengthAdded() == v.getSampleNumber()) { - for (vertex nextV : Graphs.successorListOf(g, v)) { - if (nextV.getType() == vertex.TYPE_END) { + for (Vertex nextV : Graphs.successorListOf(g, v)) { + if (nextV.getType() == Vertex.TYPE_END) { if (nextV.getLabel().contains(labelConsidered)) { consideredNbr = nextV.getTaintConsideredNumber().get(labelConsidered); if (consideredNbr < v.getMaxTaintFixedNumber().get(labelConsidered)) { consideredNbr++; nextV.getTaintConsideredNumber().put(labelConsidered, consideredNbr); } - for (vertex subE : Graphs.successorListOf(g, nextV)) { - if (subE.getType() == vertex.TYPE_FOR_LOOP || subE.getType() == vertex.TYPE_STATIC_FOR_LOOP) { + for (Vertex subE : Graphs.successorListOf(g, nextV)) { + if (subE.getType() == Vertex.TYPE_FOR_LOOP || subE.getType() == Vertex.TYPE_STATIC_FOR_LOOP) { consideredNbr = subE.getTaintConsideredNumber().get(labelConsidered); if (consideredNbr < subE.getMaxTaintFixedNumber().get(labelConsidered)) { consideredNbr++; @@ -3232,7 +3174,7 @@ public class DirectedGraphTranslator extends JApplet { } } } - } else if (nextV.getType() == vertex.TYPE_START) { + } else if (nextV.getType() == Vertex.TYPE_START) { consideredNbr = nextV.getTaintConsideredNumber().get(labelConsidered); if (consideredNbr < v.getMaxTaintFixedNumber().get(labelConsidered)) { consideredNbr++; @@ -3242,7 +3184,7 @@ public class DirectedGraphTranslator extends JApplet { } } } - if (!hasLabelAstask12 && (v.getType() == vertex.TYPE_TRANSACTION || v.getType() == vertex.TYPE_CHANNEL)) { + if (!hasLabelAstask12 && (v.getType() == Vertex.TYPE_TRANSACTION || v.getType() == Vertex.getTypeChannel())) { consideredNbr = v.getTaintConsideredNumber().get(labelConsidered); if (v1.getLabel().contains(v.getLabel().get(i)) && consideredNbr < v.getMaxTaintFixedNumber().get(labelConsidered)) { if (v.getVirtualLengthAdded() == v.getSampleNumber()) { @@ -3262,15 +3204,15 @@ public class DirectedGraphTranslator extends JApplet { return hasLabelAstask12; } - private HashMap<vertex, List<vertex>> taintingNonTransVertexes(vertex subV, vertex v, vertex v1) { - HashMap<vertex, List<vertex>> NonTransV = new LinkedHashMap<vertex, List<vertex>>(); + private HashMap<Vertex, List<Vertex>> taintingNonTransVertexes(Vertex subV, Vertex v, Vertex v1) { + HashMap<Vertex, List<Vertex>> NonTransV = new LinkedHashMap<Vertex, List<Vertex>>(); String label = getfirstCommonLabel(subV, v); int i = v.getMaxTaintFixedNumber().get(label); ; - if (v.getType() == vertex.TYPE_FOR_EVER_LOOP || v.getType() == vertex.TYPE_STATIC_FOR_LOOP || v.getType() == vertex.TYPE_FOR_LOOP) { - for (Entry<String, List<String>> nextvertexOfLoop : allForLoopNextValues.entrySet()) { - vertex vFor0 = getvertex(nextvertexOfLoop.getValue().get(0)); - vertex vFor1 = getvertex(nextvertexOfLoop.getValue().get(1)); + if (v.getType() == Vertex.TYPE_FOR_EVER_LOOP || v.getType() == Vertex.TYPE_STATIC_FOR_LOOP || v.getType() == Vertex.TYPE_FOR_LOOP) { + for (Entry<String, List<String>> nextvertexOfLoop : dependencyGraphRelations.getAllForLoopNextValues().entrySet()) { + Vertex vFor0 = getvertex(nextvertexOfLoop.getValue().get(0)); + Vertex vFor1 = getvertex(nextvertexOfLoop.getValue().get(1)); if ((getvertex(nextvertexOfLoop.getKey())).equals(v)) { if (subV.equals(vFor1)) { int max = subV.getMaxTaintFixedNumber().get(label) / subV.getTaintFixedNumber(); @@ -3279,7 +3221,7 @@ public class DirectedGraphTranslator extends JApplet { } } } - if (subV.getType() == vertex.TYPE_FOR_EVER_LOOP) { + if (subV.getType() == Vertex.TYPE_FOR_EVER_LOOP) { if (subV.getLabel().contains(label)) { if (subV.getMaxTaintFixedNumber().containsKey(label)) { if (subV.getMaxTaintFixedNumber().get(label) != i) { @@ -3293,7 +3235,7 @@ public class DirectedGraphTranslator extends JApplet { subV.addLabel(label); subV.getMaxTaintFixedNumber().put(label, i * subV.getTaintFixedNumber()); } - for (vertex subFor : Graphs.successorListOf(g, subV)) { + for (Vertex subFor : Graphs.successorListOf(g, subV)) { if (!subFor.equals(v1)) { /* * if (subFor.getLabel().contains(label)) { if @@ -3310,18 +3252,18 @@ public class DirectedGraphTranslator extends JApplet { subFor.addLabel(label); subFor.getMaxTaintFixedNumber().put(label, subV.getMaxTaintFixedNumber().get(label) * subFor.getTaintFixedNumber()); } - if (subFor.getType() != vertex.TYPE_TRANSACTION) { + if (subFor.getType() != Vertex.TYPE_TRANSACTION) { if (NonTransV.containsKey(subV)) { NonTransV.get(subV).add(subFor); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(subFor); NonTransV.put(subV, lv); } } } } - } else if ((subV.getType() == vertex.TYPE_STATIC_FOR_LOOP || subV.getType() == vertex.TYPE_FOR_LOOP)) { + } else if ((subV.getType() == Vertex.TYPE_STATIC_FOR_LOOP || subV.getType() == Vertex.TYPE_FOR_LOOP)) { /* * if (subV.getLabel().contains(label)) { if * (subV.getMaxTaintFixedNumber().containsKey(label)) { if @@ -3338,9 +3280,9 @@ public class DirectedGraphTranslator extends JApplet { subV.addLabel(label); subV.getMaxTaintFixedNumber().put(label, i * subV.getTaintFixedNumber()); } - for (Entry<String, List<String>> nextvertexOfLoop : allForLoopNextValues.entrySet()) { - vertex vFor0 = getvertex(nextvertexOfLoop.getValue().get(0)); - vertex vFor1 = getvertex(nextvertexOfLoop.getValue().get(1)); + for (Entry<String, List<String>> nextvertexOfLoop : dependencyGraphRelations.getAllForLoopNextValues().entrySet()) { + Vertex vFor0 = getvertex(nextvertexOfLoop.getValue().get(0)); + Vertex vFor1 = getvertex(nextvertexOfLoop.getValue().get(1)); if ((getvertex(nextvertexOfLoop.getKey())).equals(subV)) { if (!vFor0.equals(v1)) { /* @@ -3356,11 +3298,11 @@ public class DirectedGraphTranslator extends JApplet { vFor0.addLabel(label); vFor0.getMaxTaintFixedNumber().put(label, subV.getMaxTaintFixedNumber().get(label) * vFor0.getTaintFixedNumber()); } - if (vFor0.getType() != vertex.TYPE_TRANSACTION) { + if (vFor0.getType() != Vertex.TYPE_TRANSACTION) { if (NonTransV.containsKey(subV)) { NonTransV.get(subV).add(vFor0); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(vFor0); NonTransV.put(subV, lv); } @@ -3382,11 +3324,11 @@ public class DirectedGraphTranslator extends JApplet { vFor1.addLabel(label); vFor1.getMaxTaintFixedNumber().put(label, vFor1.getTaintFixedNumber() * max); } - if (vFor1.getType() != vertex.TYPE_TRANSACTION) { + if (vFor1.getType() != Vertex.TYPE_TRANSACTION) { if (NonTransV.containsKey(subV)) { NonTransV.get(subV).add(vFor1); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(vFor1); NonTransV.put(subV, lv); } @@ -3394,7 +3336,7 @@ public class DirectedGraphTranslator extends JApplet { } } } - } else if (subV.getType() == vertex.TYPE_CHOICE) { + } else if (subV.getType() == Vertex.TYPE_CHOICE) { /* * if (subV.getLabel().contains(label)) { if * (subV.getMaxTaintFixedNumber().containsKey(label)) { if @@ -3409,8 +3351,8 @@ public class DirectedGraphTranslator extends JApplet { subV.addLabel(label); subV.getMaxTaintFixedNumber().put(label, i * subV.getTaintFixedNumber()); } - List<vertex> subChoice = new ArrayList<vertex>(); - for (vertex subCh : Graphs.successorListOf(g, subV)) { + List<Vertex> subChoice = new ArrayList<Vertex>(); + for (Vertex subCh : Graphs.successorListOf(g, subV)) { subChoice.add(subCh); if (!subCh.equals(v1)) { if (subCh.getLabel().contains(label)) { @@ -3425,25 +3367,25 @@ public class DirectedGraphTranslator extends JApplet { subCh.addLabel(label); subCh.getMaxTaintFixedNumber().put(label, subV.getMaxTaintFixedNumber().get(label) * subCh.getTaintFixedNumber()); } - if (subCh.getType() != vertex.TYPE_TRANSACTION) { + if (subCh.getType() != Vertex.TYPE_TRANSACTION) { if (NonTransV.containsKey(subV)) { NonTransV.get(subV).add(subCh); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(subCh); NonTransV.put(subV, lv); } } } } - allChoiceValues.put(subV, subChoice); - } else if (subV.getType() == vertex.TYPE_SELECT_EVT) { + dependencyGraphRelations.getAllChoiceValues().put(subV, subChoice); + } else if (subV.getType() == Vertex.TYPE_SELECT_EVT) { if (!subV.getLabel().contains(label)) { subV.addLabel(label); subV.getMaxTaintFixedNumber().put(label, i * subV.getTaintFixedNumber()); } - List<vertex> subChoice = new ArrayList<vertex>(); - for (vertex subCh : Graphs.successorListOf(g, subV)) { + List<Vertex> subChoice = new ArrayList<Vertex>(); + for (Vertex subCh : Graphs.successorListOf(g, subV)) { subChoice.add(subCh); if (!subCh.equals(v1)) { if (subCh.getLabel().contains(label)) { @@ -3458,19 +3400,19 @@ public class DirectedGraphTranslator extends JApplet { subCh.addLabel(label); subCh.getMaxTaintFixedNumber().put(label, subV.getMaxTaintFixedNumber().get(label) * subCh.getTaintFixedNumber()); } - if (subCh.getType() != vertex.TYPE_TRANSACTION) { + if (subCh.getType() != Vertex.TYPE_TRANSACTION) { if (NonTransV.containsKey(subV)) { NonTransV.get(subV).add(subCh); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(subCh); NonTransV.put(subV, lv); } } } } - allSelectEvtValues.put(subV, subChoice); - } else if (subV.getType() == vertex.TYPE_END) { + dependencyGraphRelations.getAllSelectEvtValues().put(subV, subChoice); + } else if (subV.getType() == Vertex.TYPE_END) { if (subV.getLabel().contains(label)) { if (subV.getMaxTaintFixedNumber().containsKey(label)) { if (subV.getMaxTaintFixedNumber().get(label) != i) { @@ -3483,9 +3425,9 @@ public class DirectedGraphTranslator extends JApplet { subV.addLabel(label); subV.getMaxTaintFixedNumber().put(label, i * subV.getTaintFixedNumber()); } - for (vertex subSE : Graphs.successorListOf(g, subV)) { + for (Vertex subSE : Graphs.successorListOf(g, subV)) { if (!subSE.equals(v1)) { - if (subSE.getType() == vertex.TYPE_STATIC_FOR_LOOP || subSE.getType() == vertex.TYPE_FOR_LOOP) { + if (subSE.getType() == Vertex.TYPE_STATIC_FOR_LOOP || subSE.getType() == Vertex.TYPE_FOR_LOOP) { if (subSE.getLabel().contains(label)) { if (subSE.getMaxTaintFixedNumber().containsKey(label)) { if (subSE.getMaxTaintFixedNumber().get(label) != subV.getMaxTaintFixedNumber().get(label)) { @@ -3496,9 +3438,9 @@ public class DirectedGraphTranslator extends JApplet { subSE.addLabel(label); subSE.getMaxTaintFixedNumber().put(label, subV.getMaxTaintFixedNumber().get(label)); } - for (Entry<String, List<String>> nextvertexOfLoop : allForLoopNextValues.entrySet()) { + for (Entry<String, List<String>> nextvertexOfLoop : dependencyGraphRelations.getAllForLoopNextValues().entrySet()) { if ((getvertex(nextvertexOfLoop.getKey())).equals(subSE)) { - vertex vFor1 = getvertex(nextvertexOfLoop.getValue().get(1)); + Vertex vFor1 = getvertex(nextvertexOfLoop.getValue().get(1)); int max; if (subSE.getMaxTaintFixedNumber().get(label) > 0 && subSE.getTaintFixedNumber() > 0) { max = subSE.getMaxTaintFixedNumber().get(label) / subSE.getTaintFixedNumber(); @@ -3516,11 +3458,11 @@ public class DirectedGraphTranslator extends JApplet { vFor1.addLabel(label); vFor1.getMaxTaintFixedNumber().put(label, vFor1.getTaintFixedNumber() * max); } - if (vFor1.getType() != vertex.TYPE_TRANSACTION) { + if (vFor1.getType() != Vertex.TYPE_TRANSACTION) { if (NonTransV.containsKey(subSE)) { NonTransV.get(subSE).add(vFor1); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(vFor1); NonTransV.put(subSE, lv); } @@ -3528,7 +3470,7 @@ public class DirectedGraphTranslator extends JApplet { } } } - } else if (subSE.getType() == vertex.TYPE_TRANSACTION) { + } else if (subSE.getType() == Vertex.TYPE_TRANSACTION) { if (subSE.getLabel().contains(label)) { if (subSE.getMaxTaintFixedNumber().containsKey(label)) { if (subSE.getMaxTaintFixedNumber().get(label) != subV.getMaxTaintFixedNumber().get(label)) { @@ -3539,7 +3481,7 @@ public class DirectedGraphTranslator extends JApplet { subSE.addLabel(label); subSE.getMaxTaintFixedNumber().put(label, subSE.getTaintFixedNumber() * subV.getMaxTaintFixedNumber().get(label)); } - } else if (subSE.getType() == vertex.TYPE_FOR_EVER_LOOP) { + } else if (subSE.getType() == Vertex.TYPE_FOR_EVER_LOOP) { if (subSE.getLabel().contains(label)) { if (subSE.getMaxTaintFixedNumber().containsKey(label)) { if (subSE.getMaxTaintFixedNumber().get(label) != subSE.getTaintFixedNumber()) { @@ -3553,7 +3495,7 @@ public class DirectedGraphTranslator extends JApplet { if (NonTransV.containsKey(subV)) { NonTransV.get(subV).add(subSE); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(subSE); NonTransV.put(subV, lv); } @@ -3571,14 +3513,14 @@ public class DirectedGraphTranslator extends JApplet { if (NonTransV.containsKey(subV)) { NonTransV.get(subV).add(subSE); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(subSE); NonTransV.put(subV, lv); } } } } - } else if (subV.getType() == vertex.TYPE_START || subV.getType() == vertex.TYPE_CTRL) { + } else if (subV.getType() == Vertex.TYPE_START || subV.getType() == Vertex.TYPE_CTRL) { if (subV.getLabel().contains(label)) { if (subV.getMaxTaintFixedNumber().containsKey(label)) { if (subV.getMaxTaintFixedNumber().get(label) != i) { @@ -3591,7 +3533,7 @@ public class DirectedGraphTranslator extends JApplet { subV.addLabel(label); subV.getMaxTaintFixedNumber().put(label, i * subV.getTaintFixedNumber()); } - for (vertex subSE : Graphs.successorListOf(g, subV)) { + for (Vertex subSE : Graphs.successorListOf(g, subV)) { if (!subSE.equals(v1)) { if (subSE.getLabel().contains(label)) { if (subSE.getMaxTaintFixedNumber().containsKey(label)) { @@ -3603,18 +3545,18 @@ public class DirectedGraphTranslator extends JApplet { subSE.addLabel(label); subSE.getMaxTaintFixedNumber().put(label, subSE.getTaintFixedNumber() * subV.getMaxTaintFixedNumber().get(label)); } - if (subSE.getType() != vertex.TYPE_TRANSACTION) { + if (subSE.getType() != Vertex.TYPE_TRANSACTION) { if (NonTransV.containsKey(subV)) { NonTransV.get(subV).add(subSE); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(subSE); NonTransV.put(subV, lv); } } } } - } else if (subV.getType() == vertex.TYPE_SEQ) { + } else if (subV.getType() == Vertex.TYPE_SEQ) { /* * if (subV.getLabel().contains(label)) { if * (subV.getMaxTaintFixedNumber().containsKey(label)) { if @@ -3629,8 +3571,8 @@ public class DirectedGraphTranslator extends JApplet { subV.addLabel(label); subV.getMaxTaintFixedNumber().put(label, i * subV.getTaintFixedNumber()); } - List<vertex> subSeq = new ArrayList<vertex>(); - for (vertex subSEQ : Graphs.successorListOf(g, subV)) { + List<Vertex> subSeq = new ArrayList<Vertex>(); + for (Vertex subSEQ : Graphs.successorListOf(g, subV)) { if (!subSEQ.equals(v1)) { if (subSEQ.getLabel().contains(label)) { if (subSEQ.getMaxTaintFixedNumber().containsKey(label)) { @@ -3642,11 +3584,11 @@ public class DirectedGraphTranslator extends JApplet { subSEQ.addLabel(label); subSEQ.getMaxTaintFixedNumber().put(label, subSEQ.getTaintFixedNumber() * subV.getMaxTaintFixedNumber().get(label)); } - if (subSEQ.getType() != vertex.TYPE_TRANSACTION) { + if (subSEQ.getType() != Vertex.TYPE_TRANSACTION) { if (NonTransV.containsKey(subV)) { NonTransV.get(subV).add(subSEQ); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(subSEQ); NonTransV.put(subV, lv); } @@ -3654,8 +3596,8 @@ public class DirectedGraphTranslator extends JApplet { } subSeq.add(subSEQ); } - allSeqValues.put(subV, subSeq); - } else if (subV.getType() == vertex.TYPE_UNORDER_SEQ) { + dependencyGraphRelations.getAllSeqValues().put(subV, subSeq); + } else if (subV.getType() == Vertex.TYPE_UNORDER_SEQ) { /* * if (subV.getLabel().contains(label)) { if * (subV.getMaxTaintFixedNumber().containsKey(label)) { if @@ -3670,9 +3612,9 @@ public class DirectedGraphTranslator extends JApplet { subV.addLabel(label); subV.getMaxTaintFixedNumber().put(label, i * subV.getTaintFixedNumber()); } - List<vertex> subSeq = new ArrayList<vertex>(); - List<vertex> preSeq = Graphs.predecessorListOf(g, subV); - for (vertex sub_UN_SEQ : Graphs.successorListOf(g, subV)) { + List<Vertex> subSeq = new ArrayList<Vertex>(); + List<Vertex> preSeq = Graphs.predecessorListOf(g, subV); + for (Vertex sub_UN_SEQ : Graphs.successorListOf(g, subV)) { if (preSeq.contains(sub_UN_SEQ)) { continue; } @@ -3688,11 +3630,11 @@ public class DirectedGraphTranslator extends JApplet { sub_UN_SEQ.addLabel(label); sub_UN_SEQ.getMaxTaintFixedNumber().put(label, sub_UN_SEQ.getTaintFixedNumber() * subV.getMaxTaintFixedNumber().get(label)); } - if (sub_UN_SEQ.getType() != vertex.TYPE_TRANSACTION) { + if (sub_UN_SEQ.getType() != Vertex.TYPE_TRANSACTION) { if (NonTransV.containsKey(subV)) { NonTransV.get(subV).add(sub_UN_SEQ); } else { - List<vertex> lv = new ArrayList<vertex>(); + List<Vertex> lv = new ArrayList<Vertex>(); lv.add(sub_UN_SEQ); NonTransV.put(subV, lv); } @@ -3700,13 +3642,13 @@ public class DirectedGraphTranslator extends JApplet { } subSeq.add(sub_UN_SEQ); } - allRandomSeqValues.put(subV, subSeq); + dependencyGraphRelations.getAllRandomSeqValues().put(subV, subSeq); } return NonTransV; } - protected vertex getvertex(String task12) { - for (vertex v : g.vertexSet()) { + public Vertex getvertex(String task12) { + for (Vertex v : g.vertexSet()) { if (v.getName().equals(task12)) { return v; } @@ -3714,8 +3656,8 @@ public class DirectedGraphTranslator extends JApplet { return null; } - protected vertex getvertexFromID(int id) { - for (vertex v : g.vertexSet()) { + protected Vertex getvertexFromID(int id) { + for (Vertex v : g.vertexSet()) { if (v.getId() == (id)) { return v; } @@ -3723,7 +3665,7 @@ public class DirectedGraphTranslator extends JApplet { return null; } - private void addTaint(vertex currentVertex) { + private void addTaint(Vertex currentVertex) { String label = generateLabel(); boolean generatenewLabel = false; while (!generatenewLabel) { @@ -3914,19 +3856,19 @@ public class DirectedGraphTranslator extends JApplet { HashMap<String, ArrayList<SimulationTransaction>> relatedTasks = new HashMap<String, ArrayList<SimulationTransaction>>(); relatedsimTraces = new Vector<SimulationTransaction>(); delayDueTosimTraces = new Vector<SimulationTransaction>(); - runnableTimePerDevice = new HashMap<String, ArrayList<ArrayList<Integer>>>(); + dependencyGraphRelations.setRunnableTimePerDevice(new HashMap<String, ArrayList<ArrayList<Integer>>>()); // AllDirectedPaths<String, DefaultEdge> allPaths = new AllDirectedPaths<String, // DefaultEdge>(g); // List<GraphPath<String, DefaultEdge>> path = allPaths.getAllPaths(task12, // task22, false, g.vertexSet().size()); // int size = path.size(); - GraphPath<vertex, DefaultEdge> path2 = DijkstraShortestPath.findPathBetween(g, getvertex(task12), getvertex(task22)); + GraphPath<Vertex, DefaultEdge> path2 = DijkstraShortestPath.findPathBetween(g, getvertex(task12), getvertex(task22)); if (path2 != null && path2.getLength() > 0) { for (Entry<String, ArrayList<String>> entry : channelPaths.entrySet()) { String ChannelName = entry.getKey(); ArrayList<String> busChList = entry.getValue(); - GraphPath<vertex, DefaultEdge> pathTochannel = DijkstraShortestPath.findPathBetween(g, getvertex(task12), getvertex(ChannelName)); - GraphPath<vertex, DefaultEdge> pathFromChannel = DijkstraShortestPath.findPathBetween(g, getvertex(ChannelName), getvertex(task22)); + GraphPath<Vertex, DefaultEdge> pathTochannel = DijkstraShortestPath.findPathBetween(g, getvertex(task12), getvertex(ChannelName)); + GraphPath<Vertex, DefaultEdge> pathFromChannel = DijkstraShortestPath.findPathBetween(g, getvertex(ChannelName), getvertex(task22)); if (pathTochannel != null && pathTochannel.getLength() > 0 && pathFromChannel != null && pathFromChannel.getLength() > 0) { devicesToBeConsidered.addAll(busChList); } @@ -3935,8 +3877,8 @@ public class DirectedGraphTranslator extends JApplet { for (Entry<String, ArrayList<String>> entry : channelPaths.entrySet()) { String ChannelName = entry.getKey(); ArrayList<String> busChList = entry.getValue(); - GraphPath<vertex, DefaultEdge> pathTochannel = DijkstraShortestPath.findPathBetween(g, getvertex(task12), getvertex(ChannelName)); - GraphPath<vertex, DefaultEdge> pathFromChannel = DijkstraShortestPath.findPathBetween(g, getvertex(ChannelName), getvertex(task22)); + GraphPath<Vertex, DefaultEdge> pathTochannel = DijkstraShortestPath.findPathBetween(g, getvertex(task12), getvertex(ChannelName)); + GraphPath<Vertex, DefaultEdge> pathFromChannel = DijkstraShortestPath.findPathBetween(g, getvertex(ChannelName), getvertex(task22)); if ((pathTochannel != null && pathTochannel.getLength() > 0) || (pathFromChannel != null && pathFromChannel.getLength() > 0)) { devicesToBeConsidered.addAll(busChList); } @@ -3966,7 +3908,7 @@ public class DirectedGraphTranslator extends JApplet { st.length = String.valueOf(maxTime - minTime); } String taskname = ""; - for (vertex tasknameCheck : g.vertexSet()) { + for (Vertex tasknameCheck : g.vertexSet()) { String[] taskToAdd = tasknameCheck.toString().split("__"); int taskToAddindex = taskToAdd.length; String taskToAddid = taskToAdd[taskToAddindex - 1]; @@ -3982,8 +3924,8 @@ public class DirectedGraphTranslator extends JApplet { // there is a path between task 1 and task 2 if (path2 != null && path2.getLength() > 0) { if (!taskname.equals(null) && !taskname.equals("")) { - GraphPath<vertex, DefaultEdge> pathToOrigin = DijkstraShortestPath.findPathBetween(g, getvertex(task12), getvertex(taskname)); - GraphPath<vertex, DefaultEdge> pathToDestination = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), + GraphPath<Vertex, DefaultEdge> pathToOrigin = DijkstraShortestPath.findPathBetween(g, getvertex(task12), getvertex(taskname)); + GraphPath<Vertex, DefaultEdge> pathToDestination = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), getvertex(task22)); if (taskname.equals(task12) || taskname.equals(task22) || (pathToOrigin != null && pathToOrigin.getLength() > 0 && pathToDestination != null && pathToDestination.getLength() > 0)) { @@ -3993,14 +3935,14 @@ public class DirectedGraphTranslator extends JApplet { timeValues.add(1, startTime); if (!(st.runnableTime).equals(st.startTime)) { String dName = st.deviceName + "_" + st.coreNumber; - if (runnableTimePerDevice.containsKey(dName)) { - if (!runnableTimePerDevice.get(dName).contains(timeValues)) { - runnableTimePerDevice.get(dName).add(timeValues); + if (dependencyGraphRelations.getRunnableTimePerDevice().containsKey(dName)) { + if (!dependencyGraphRelations.getRunnableTimePerDevice().get(dName).contains(timeValues)) { + dependencyGraphRelations.getRunnableTimePerDevice().get(dName).add(timeValues); } } else { ArrayList<ArrayList<Integer>> timeValuesList = new ArrayList<ArrayList<Integer>>(); timeValuesList.add(timeValues); - runnableTimePerDevice.put(dName, timeValuesList); + dependencyGraphRelations.getRunnableTimePerDevice().put(dName, timeValuesList); } } } else if (((st.deviceName.equals(task2DeviceName) && task2CoreNbr.equals(st.coreNumber)) @@ -4009,12 +3951,12 @@ public class DirectedGraphTranslator extends JApplet { delayDueTosimTraces.add(st); } } - timeDelayedPerRowMinMax.put(row, runnableTimePerDevice); + timeDelayedPerRowMinMax.put(row, dependencyGraphRelations.getRunnableTimePerDevice()); } else { if (!taskname.equals(null) && !taskname.equals("")) { - GraphPath<vertex, DefaultEdge> pathExistsTestwithTask1 = DijkstraShortestPath.findPathBetween(g, getvertex(task12), + GraphPath<Vertex, DefaultEdge> pathExistsTestwithTask1 = DijkstraShortestPath.findPathBetween(g, getvertex(task12), getvertex(taskname)); - GraphPath<vertex, DefaultEdge> pathExistsTestwithTask2 = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), + GraphPath<Vertex, DefaultEdge> pathExistsTestwithTask2 = DijkstraShortestPath.findPathBetween(g, getvertex(taskname), getvertex(task22)); if (pathExistsTestwithTask1 != null && pathExistsTestwithTask1.getLength() > 0 || pathExistsTestwithTask2 != null && pathExistsTestwithTask2.getLength() > 0) { @@ -4213,14 +4155,6 @@ public class DirectedGraphTranslator extends JApplet { importer.importGraph(importedGraph, ps); } - public List<TMLComponentDesignPanel> getCpanels() { - return cpanels; - } - - public void setCpanels(List<TMLComponentDesignPanel> cpanels) { - this.cpanels = cpanels; - } - public HashMap<String, String> getNameIDTaskList() { return nameIDTaskList; } @@ -4230,7 +4164,7 @@ public class DirectedGraphTranslator extends JApplet { } public static void setScrollPane(JScrollPane scrollPane) { - DirectedGraphTranslator.scrollPane = scrollPane; + DependencyGraphTranslator.scrollPane = scrollPane; } public String checkPath(String task12ID, String task22ID) { @@ -4244,9 +4178,9 @@ public class DirectedGraphTranslator extends JApplet { idTask2 = task2[task2index - 1]; String task12 = nameIDTaskList.get(idTask1); String task22 = nameIDTaskList.get(idTask2); - vertex v1 = getvertex(task12); - vertex v2 = getvertex(task22); - GraphPath<vertex, DefaultEdge> pathToOrigin = DijkstraShortestPath.findPathBetween(g, v1, v2); + Vertex v1 = getvertex(task12); + Vertex v2 = getvertex(task22); + GraphPath<Vertex, DefaultEdge> pathToOrigin = DijkstraShortestPath.findPathBetween(g, v1, v2); if (pathToOrigin != null && pathToOrigin.getLength() > 0) { isPath = true; } @@ -4259,21 +4193,21 @@ public class DirectedGraphTranslator extends JApplet { } public Vector<String> getreadChannelNodes() { - return readChannelTransactions; + return dependencyGraphRelations.getReadChannelTransactions(); } public Vector<String> getwriteChannelNodes() { - return writeChannelTransactions; + return dependencyGraphRelations.getWriteChannelTransactions(); } public String addRule(String node1, String node2, Vector<String> writeChannelTransactions, String ruleDirection) { - vertex v1 = getvertex(node1); - vertex v2 = getvertex(node2); - vertex v1Channel = null, v2Channel = null; + Vertex v1 = getvertex(node1); + Vertex v2 = getvertex(node2); + Vertex v1Channel = null, v2Channel = null; String message = ""; if (v2Channel == null && Graphs.vertexHasSuccessors(g, v2)) { - for (vertex n : Graphs.successorListOf(g, v2)) { - if (n.getType() == vertex.TYPE_CHANNEL) { + for (Vertex n : Graphs.successorListOf(g, v2)) { + if (n.getType() == Vertex.getTypeChannel()) { v2Channel = n; break; } @@ -4281,10 +4215,10 @@ public class DirectedGraphTranslator extends JApplet { } Boolean hasWriteVertex = false; if (Graphs.vertexHasPredecessors(g, v1)) { - for (vertex n : Graphs.predecessorListOf(g, v1)) { - if (n.getType() == vertex.TYPE_CHANNEL) { + for (Vertex n : Graphs.predecessorListOf(g, v1)) { + if (n.getType() == Vertex.getTypeChannel()) { if (Graphs.vertexHasPredecessors(g, n)) { - for (vertex writenode : Graphs.predecessorListOf(g, n)) { + for (Vertex writenode : Graphs.predecessorListOf(g, n)) { if (writeChannelTransactions.contains(writenode.getName())) { hasWriteVertex = true; break; @@ -4302,21 +4236,21 @@ public class DirectedGraphTranslator extends JApplet { } if (v1Channel != null && v2Channel != null) { if (ruleDirection.equals("After")) { - if (ruleAddedEdges.containsKey(v2Channel)) { - ruleAddedEdges.get(v2Channel).add(v1Channel); + if (dependencyGraphRelations.getRuleAddedEdges().containsKey(v2Channel)) { + dependencyGraphRelations.getRuleAddedEdges().get(v2Channel).add(v1Channel); message = "Rule between " + v1Channel + " and " + v2Channel + " was added"; } else { - List<vertex> sendVertex = new ArrayList<vertex>(); + List<Vertex> sendVertex = new ArrayList<Vertex>(); sendVertex.add(v1Channel); - ruleAddedEdges.put(v2Channel, sendVertex); + dependencyGraphRelations.getRuleAddedEdges().put(v2Channel, sendVertex); message = "Rule between " + v1Channel + " and " + v2Channel + " was added"; } - if (ruleAddedEdgesChannels.containsKey(v2)) { - ruleAddedEdgesChannels.get(v2).add(v1); + if (dependencyGraphRelations.getRuleAddedEdgesChannels().containsKey(v2)) { + dependencyGraphRelations.getRuleAddedEdgesChannels().get(v2).add(v1); } else { - List<vertex> sendVertex = new ArrayList<vertex>(); + List<Vertex> sendVertex = new ArrayList<Vertex>(); sendVertex.add(v1); - ruleAddedEdgesChannels.put(v2, sendVertex); + dependencyGraphRelations.getRuleAddedEdgesChannels().put(v2, sendVertex); } } } @@ -4327,35 +4261,40 @@ public class DirectedGraphTranslator extends JApplet { } public Boolean edgeExists(int vID1, int vID2) { - vertex v1 = getvertexFromID(vID1); - vertex v2 = getvertexFromID(vID2); + Vertex v1 = getvertexFromID(vID1); + Vertex v2 = getvertexFromID(vID2); if (g.containsEdge(v1, v2)) { return true; } return false; } - public HashMap<vertex, List<vertex>> getRuleAddedEdges() { - return ruleAddedEdges; - } - - public void setRuleAddedEdges(HashMap<vertex, List<vertex>> ruleAddedEdges) { - this.ruleAddedEdges = ruleAddedEdges; - } - - public void setRuleAddedEdgesChannels(HashMap<vertex, List<vertex>> ruleAddedEdgesChannels) { - this.ruleAddedEdgesChannels = ruleAddedEdgesChannels; - } - - public HashMap<vertex, List<vertex>> getRuleAddedEdgesChannels() { - return ruleAddedEdgesChannels; + public Vector<SimulationTransaction> parseFile(File file2) { + SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); + SAXParser saxParser = null; + try { + saxParser = saxParserFactory.newSAXParser(); + } catch (ParserConfigurationException e) { + e.getMessage(); + } catch (SAXException e) { + e.getMessage(); + } + SimulationTransactionParser handler = new SimulationTransactionParser(); + try { + saxParser.parse(file2, handler); + } catch (SAXException e) { + e.getMessage(); + } catch (IOException e) { + e.getMessage(); + } + return handler.getStList(); } - public Graph<vertex, DefaultEdge> getG() { + public Graph<Vertex, DefaultEdge> getG() { return g; } - public void setG(Graph<vertex, DefaultEdge> g) { + public void setG(Graph<Vertex, DefaultEdge> g) { this.g = g; } @@ -4386,4 +4325,25 @@ public class DirectedGraphTranslator extends JApplet { public void setOffPathDelay(List<SimulationTransaction> offPathDelay) { this.offPathDelay = offPathDelay; } + + @Override + protected Void doInBackground() throws Exception { + return null; + } + + public int getNodeNbProgressBar() { + return nodeNbProgressBar; + } + + public List<String> getErrors() { + return errors; + } + + public void setErrors(List<String> errors) { + this.errors = errors; + } + + public DependencyGraphRelations getDependencyGraphRelations() { + return dependencyGraphRelations; + } } \ No newline at end of file diff --git a/src/main/java/simulationtraceanalysis/PlanArrays.java b/src/main/java/simulationtraceanalysis/PlanArrays.java new file mode 100644 index 0000000000000000000000000000000000000000..8601a07ed2108d922c04826c9ba5a0089a7494c6 --- /dev/null +++ b/src/main/java/simulationtraceanalysis/PlanArrays.java @@ -0,0 +1,312 @@ +package simulationtraceanalysis; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.Vector; +import ui.interactivesimulation.SimulationTransaction; + +public class PlanArrays { + private List<String> onPathBehavior = new ArrayList<String>(); + private List<String> offPathBehavior = new ArrayList<String>(); + private List<String> offPathBehaviorCausingDelay = new ArrayList<String>(); + private static final String ZERO = "0"; + private static final String DEVICE_NAME = "Device Name"; + private String[] columnNames; + private Object[][] dataDetailedByTask; + + public void fillArrays(DependencyGraphTranslator dgraph, int row, boolean firstTable, Boolean taint) { + int maxTime = -1; + int minTime = Integer.MAX_VALUE; + int tmpEnd, tmpStart, length; + Vector<String> deviceNames1 = new Vector<String>(); + if (firstTable) { + for (SimulationTransaction st : dgraph.getRowDetailsTaks(row)) { + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + tmpEnd = Integer.parseInt(st.endTime); + if (tmpEnd > maxTime) { + maxTime = tmpEnd; + } + tmpStart = Integer.parseInt(st.startTime); + if (tmpStart < minTime) { + minTime = tmpStart; + } + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (!deviceNames1.contains(deviceNameandcore)) { + deviceNames1.add(deviceNameandcore); + } + } + for (SimulationTransaction st : dgraph.getRowDetailsByHW(row)) { + tmpEnd = Integer.parseInt(st.endTime); + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + if (tmpEnd > maxTime) { + maxTime = tmpEnd; + } + tmpStart = Integer.parseInt(st.startTime); + if (tmpStart < minTime) { + minTime = tmpStart; + } + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (!deviceNames1.contains(deviceNameandcore)) { + deviceNames1.add(deviceNameandcore); + } + } + int timeInterval = 0; + if (maxTime > -1 && minTime < Integer.MAX_VALUE) { + timeInterval = (maxTime - minTime); + } + columnNames = new String[timeInterval + 1]; + columnNames[0] = DEVICE_NAME; + for (int i = 0; i < timeInterval; i++) { + columnNames[i + 1] = Integer.toString(minTime + i); + } + dataDetailedByTask = new Object[deviceNames1.size()][timeInterval + 1]; + for (SimulationTransaction st : dgraph.getRowDetailsTaks(row)) { + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + for (String dName : deviceNames1) { + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (deviceNameandcore.equals(dName)) { + length = Integer.parseInt(st.length); + for (int i = 0; i < length; i++) { + int columnnmber = Integer.parseInt(st.endTime) - minTime - i; + dataDetailedByTask[deviceNames1.indexOf(dName)][columnnmber] = dgraph.getNameIDTaskList().get(st.id); + ; + onPathBehavior.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); + if (!dgraph.getOnPath().contains(st)) { + dgraph.getOnPath().add(st); + } + } + } + } + } + HashMap<String, ArrayList<ArrayList<Integer>>> delayTime = dgraph.getRowDelayDetailsByHW(row); + for (SimulationTransaction st : dgraph.getRowDetailsByHW(row)) { + int startTime = Integer.valueOf(st.startTime); + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + for (String dName : deviceNames1) { + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (deviceNameandcore.equals(dName)) { + length = Integer.parseInt(st.length); + for (int i = 0; i < length; i++) { + int columnnmber = Integer.parseInt(st.endTime) - minTime - i; + dataDetailedByTask[deviceNames1.indexOf(dName)][columnnmber] = dgraph.getNameIDTaskList().get(st.id); + ; + boolean causeDelay = false; + if (delayTime.containsKey(deviceNameandcore)) { + for (Entry<String, ArrayList<ArrayList<Integer>>> entry : delayTime.entrySet()) { + if (entry.getKey().equals(deviceNameandcore)) { + ArrayList<ArrayList<Integer>> timeList = entry.getValue(); + for (int j = 0; j < timeList.size(); j++) { + if (startTime >= timeList.get(j).get(0) && startTime <= timeList.get(j).get(1)) { + causeDelay = true; + } + } + } + } + } + if (causeDelay) { + offPathBehaviorCausingDelay.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); + if (!dgraph.getOffPathDelay().contains(st)) { + dgraph.getOffPathDelay().add(st); + } + } else { + offPathBehavior.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); + if (!dgraph.getOffPath().contains(st)) { + dgraph.getOffPath().add(st); + } + } + } + } + } + } + for (String dName : deviceNames1) { + dataDetailedByTask[deviceNames1.indexOf(dName)][0] = dName; + ; + } + } else { + Vector<SimulationTransaction> minMaxTasksByRow; + List<SimulationTransaction> minMaxHWByRowDetails; + HashMap<String, ArrayList<ArrayList<Integer>>> delayTime; + // min/max table row selected + if (taint) { + delayTime = dgraph.getTimeDelayedPerRowMinMaxTainted(row); + minMaxTasksByRow = dgraph.getMinMaxTasksByRowTainted(row); + minMaxHWByRowDetails = dgraph.getTaskMinMaxHWByRowDetailsTainted(row); + for (SimulationTransaction st : minMaxTasksByRow) { + tmpEnd = Integer.parseInt(st.endTime); + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + if (tmpEnd > maxTime) { + maxTime = tmpEnd; + } + tmpStart = Integer.parseInt(st.startTime); + if (tmpStart < minTime) { + minTime = tmpStart; + } + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (!deviceNames1.contains(deviceNameandcore)) { + deviceNames1.add(deviceNameandcore); + } + } + for (SimulationTransaction st : minMaxHWByRowDetails) { + tmpEnd = Integer.parseInt(st.endTime); + if (tmpEnd > maxTime) { + maxTime = tmpEnd; + } + tmpStart = Integer.parseInt(st.startTime); + if (tmpStart < minTime) { + minTime = tmpStart; + } + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (!deviceNames1.contains(deviceNameandcore)) { + deviceNames1.add(deviceNameandcore); + } + } + } else { + delayTime = dgraph.getRowDelayDetailsByHWMinMax(row); + minMaxTasksByRow = dgraph.getMinMaxTasksByRow(row); + minMaxHWByRowDetails = dgraph.getTaskMinMaxHWByRowDetails(row); + for (SimulationTransaction st : minMaxTasksByRow) { + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + tmpEnd = Integer.parseInt(st.endTime); + if (tmpEnd > maxTime) { + maxTime = tmpEnd; + } + tmpStart = Integer.parseInt(st.startTime); + if (tmpStart < minTime) { + minTime = tmpStart; + } + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (!deviceNames1.contains(deviceNameandcore)) { + deviceNames1.add(deviceNameandcore); + } + } + for (SimulationTransaction st : minMaxHWByRowDetails) { + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + tmpEnd = Integer.parseInt(st.endTime); + if (tmpEnd > maxTime) { + maxTime = tmpEnd; + } + tmpStart = Integer.parseInt(st.startTime); + if (tmpStart < minTime) { + minTime = tmpStart; + } + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (!deviceNames1.contains(deviceNameandcore)) { + deviceNames1.add(deviceNameandcore); + } + } + } + int timeInterval = 0; + if (maxTime > -1 && minTime < Integer.MAX_VALUE) { + timeInterval = (maxTime - minTime); + } + columnNames = new String[timeInterval + 1]; + columnNames[0] = DEVICE_NAME; + for (int i = 0; i < timeInterval; i++) { + columnNames[i + 1] = Integer.toString(minTime + i); + } + dataDetailedByTask = new Object[deviceNames1.size()][timeInterval + 1]; + for (SimulationTransaction st : minMaxTasksByRow) { + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + for (String dName : deviceNames1) { + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (deviceNameandcore.equals(dName)) { + length = Integer.parseInt(st.length); + for (int i = 0; i < length; i++) { + int columnnmber = Integer.parseInt(st.endTime) - minTime - i; + dataDetailedByTask[deviceNames1.indexOf(dName)][columnnmber] = dgraph.getNameIDTaskList().get(st.id); + ; + onPathBehavior.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); + if (!dgraph.getOnPath().contains(st)) { + dgraph.getOnPath().add(st); + } + } + } + } + } + for (SimulationTransaction st : minMaxHWByRowDetails) { + int startTime = Integer.valueOf(st.startTime); + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + for (String dName : deviceNames1) { + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (deviceNameandcore.equals(dName)) { + length = Integer.parseInt(st.length); + for (int i = 0; i < length; i++) { + int columnnmber = Integer.parseInt(st.endTime) - minTime - i; + dataDetailedByTask[deviceNames1.indexOf(dName)][columnnmber] = dgraph.getNameIDTaskList().get(st.id); + ; + boolean causeDelay = false; + if (delayTime.containsKey(deviceNameandcore)) { + for (Entry<String, ArrayList<ArrayList<Integer>>> entry : delayTime.entrySet()) { + if (entry.getKey().equals(deviceNameandcore)) { + ArrayList<ArrayList<Integer>> timeList = entry.getValue(); + for (int j = 0; j < timeList.size(); j++) { + if (startTime >= timeList.get(j).get(0) && startTime <= timeList.get(j).get(1)) { + causeDelay = true; + } + } + } + } + } + if (causeDelay) { + offPathBehaviorCausingDelay.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); + if (!dgraph.getOffPathDelay().contains(st)) { + dgraph.getOffPathDelay().add(st); + } + } else { + offPathBehavior.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); + if (!dgraph.getOffPath().contains(st)) { + dgraph.getOffPath().add(st); + } + } + } + } + } + } + for (String dName : deviceNames1) { + dataDetailedByTask[deviceNames1.indexOf(dName)][0] = dName; + ; + } + } + return; + } + + public Object[][] getDataDetailedByTask() { + return dataDetailedByTask; + } + + public List<String> getOnPathBehavior() { + return onPathBehavior; + } + + public List<String> getOffPathBehavior() { + return offPathBehavior; + } + + public List<String> getOffPathBehaviorCausingDelay() { + return offPathBehaviorCausingDelay; + } + + public String[] getColumnNames() { + return columnNames; + } +} diff --git a/src/main/java/ui/simulationtraceanalysis/vertex.java b/src/main/java/simulationtraceanalysis/Vertex.java similarity index 93% rename from src/main/java/ui/simulationtraceanalysis/vertex.java rename to src/main/java/simulationtraceanalysis/Vertex.java index 164e0f808ad13cbf671e335145c94bf31894be64..260e10841b44775b931eaa09b646799adfd8dced 100644 --- a/src/main/java/ui/simulationtraceanalysis/vertex.java +++ b/src/main/java/simulationtraceanalysis/Vertex.java @@ -1,11 +1,11 @@ -package ui.simulationtraceanalysis; +package simulationtraceanalysis; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -public class vertex { - protected static final int TYPE_CHANNEL = 11; +public class Vertex { + private static final int TYPE_CHANNEL = 11; protected static final int TYPE_FOR_EVER_LOOP = 1; protected static final int TYPE_STATIC_FOR_LOOP = 2; protected static final int TYPE_FOR_LOOP = 3; @@ -28,7 +28,7 @@ public class vertex { private HashMap<String, Integer> taintConsideredNumber = new HashMap<String, Integer>();; // the number of times the taint should be considered private HashMap<String, Integer> maxTaintFixedNumber = new HashMap<String, Integer>(); - public vertex(String name, int id) { + public Vertex(String name, int id) { this.name = name; this.id = id; this.label = this.getLabel(); @@ -65,7 +65,7 @@ public class vertex { } public boolean equals(Object o) { - return (o instanceof vertex) && (toString().equals(o.toString())); + return (o instanceof Vertex) && (toString().equals(o.toString())); } public List<String> getLabel() { @@ -81,6 +81,10 @@ public class vertex { this.getTaintConsideredNumber().put(l, 0); } + public static int getTypeChannel() { + return TYPE_CHANNEL; + } + public String getLastLabel() { for (int i = 0; i < this.getLabel().size(); i++) { if (this.getMaxTaintFixedNumber().get(this.label.get(i)) == 0) { diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java index 646ac40f7e18f9e57387580f3cd0d80c849ddb7b..80643aeb7fd16bde745a882b7a2f49ab133723e9 100644 --- a/src/main/java/ui/MainGUI.java +++ b/src/main/java/ui/MainGUI.java @@ -72,7 +72,6 @@ import ui.ebrdd.EBRDDPanel; import ui.eln.ELNDiagramPanel; import ui.file.*; import ui.ftd.FaultTreeDiagramPanel; -import ui.interactivesimulation.JFrameCompareSimulationTraces; import ui.interactivesimulation.JFrameInteractiveSimulation; import ui.interactivesimulation.SimulationTransaction; import ui.iod.InteractionOverviewDiagramPanel; @@ -81,7 +80,8 @@ import ui.osad.TURTLEOSActivityDiagramPanel; import ui.prosmd.ProactiveSMDPanel; import ui.req.Requirement; import ui.req.RequirementDiagramPanel; -import ui.simulationtraceanalysis.latencyDetailedAnalysisMain; +import ui.simulationtraceanalysis.JFrameCompareSimulationTraces; +import ui.simulationtraceanalysis.LatencyDetailedAnalysisMain; import ui.syscams.SysCAMSComponentTaskDiagramPanel; import ui.syscams.SysCAMSCompositeComponent; import ui.tmlad.TMLActivityDiagramPanel; @@ -341,7 +341,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per private JFrameCompareSimulationTraces cSimTrace; - private latencyDetailedAnalysisMain latencyDetailedAnalysisMain; + private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain; @@ -9684,7 +9684,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per public void compareLatencyForXML(SimulationTrace selectedST, boolean b) { try { - latencyDetailedAnalysisMain = new latencyDetailedAnalysisMain(1, this, selectedST, b, false, 0); + LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(1, this, selectedST, b, false, 0); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -9696,7 +9696,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per throws XPathExpressionException, ParserConfigurationException, SAXException, IOException { try { - latencyDetailedAnalysisMain = new latencyDetailedAnalysisMain(2, this, selectedST, b, compare, j); + LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(2, this, selectedST, b, compare, j); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/src/main/java/ui/interactivesimulation/JPanelCompareXmlGraph.java b/src/main/java/ui/interactivesimulation/JPanelCompareXmlGraph.java deleted file mode 100644 index 24bd5bda065ac4d793eba982f20258aa4b4533b6..0000000000000000000000000000000000000000 --- a/src/main/java/ui/interactivesimulation/JPanelCompareXmlGraph.java +++ /dev/null @@ -1,352 +0,0 @@ -/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille - * - * ludovic.apvrille AT enst.fr - * - * This software is a computer program whose purpose is to allow the - * edition of TURTLE analysis, design and deployment diagrams, to - * allow the generation of RT-LOTOS or Java code from this diagram, - * and at last to allow the analysis of formal validation traces - * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP - * from INRIA Rhone-Alpes. - * - * This software is governed by the CeCILL license under French law and - * abiding by the rules of distribution of free software. You can use, - * modify and/ or redistribute the software under the terms of the CeCILL - * license as circulated by CEA, CNRS and INRIA at the following URL - * "http://www.cecill.info". - * - * As a counterpart to the access to the source code and rights to copy, - * modify and redistribute granted by the license, users are provided only - * with a limited warranty and the software's author, the holder of the - * economic rights, and the successive licensors have only limited - * liability. - * - * In this respect, the user's attention is drawn to the risks associated - * with loading, using, modifying and/or developing or reproducing the - * software by the user in light of its specific status of free software, - * that may mean that it is complicated to manipulate, and that also - * therefore means that it is reserved for developers and experienced - * professionals having in-depth computer knowledge. Users are therefore - * encouraged to load and test the software's suitability as regards their - * requirements in conditions enabling the security of their systems and/or - * data to be ensured and, more generally, to use and operate it in the - * same conditions as regards security. - * - * The fact that you are presently reading this means that you have had - * knowledge of the CeCILL license and that you accept its terms. - */ -package ui.interactivesimulation; - -import java.awt.GridLayout; -import java.util.Vector; - -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.event.TableModelEvent; -import javax.swing.event.TableModelListener; -import javax.swing.table.TableColumn; -import javax.swing.table.TableColumnModel; - -/** - * Class JPanelCompareXmlGraph : arranges the two simulation traces in a table - * and load the table to the compare pop up . It includes functionality to show - * the difference in the simulation traces and to load the drop down for latency - * compare later - * - * Creation: 19/07/2019 - * - * @author Maysam ZOOR - */ - -public class JPanelCompareXmlGraph extends JPanel implements TableModelListener { - - public static JTable table, tableUpdated; - - private String[] columnNames; - private Object[][] data; - static JScrollPane scrollPane = new JScrollPane(); - - public JPanelCompareXmlGraph(Vector<SimulationTransaction> transFile1, Vector<SimulationTransaction> transFile2) { - - super(new GridLayout(1, 0)); - - if (transFile1.isEmpty() || transFile2.isEmpty()) { - return; - } - - int maxTime = -1; - - Vector<String> deviceNames1 = new Vector<String>(); - Vector<String> deviceNames2 = new Vector<String>(); - - for (SimulationTransaction st : transFile1) { - if (Integer.parseInt(st.endTime) > maxTime) { - maxTime = Integer.parseInt(st.endTime); - } - if (!deviceNames1.contains(st.deviceName)) { - deviceNames1.add(st.deviceName); - - } - - } - - for (SimulationTransaction st : transFile2) { - if (Integer.parseInt(st.endTime) > maxTime) { - maxTime = Integer.parseInt(st.endTime); - } - if (!deviceNames2.contains(st.deviceName)) { - deviceNames2.add(st.deviceName); - - } - } - - Vector<String> allDevices = new Vector<String>(); - - for (String device : deviceNames1) { - if (!deviceNames2.contains(device)) { - allDevices.add(device.concat("1")); - } else { - allDevices.add(device.concat("1")); - allDevices.add(device.concat("2")); - - } - } - for (String device : deviceNames2) { - if (!deviceNames1.contains(device)) { - allDevices.add(device.concat("2")); - } - - } - - columnNames = new String[maxTime + 2]; - data = new Object[deviceNames1.size() + deviceNames2.size()][maxTime + 2]; - - columnNames[0] = "Device Name"; - columnNames[1] = "Trace Name"; - - for (SimulationTransaction st : transFile1) { - - for (String dName : deviceNames1) { - - if (st.deviceName.equals(dName)) { - - for (int i = 0; i < Integer.parseInt(st.length); i++) { - - String[] sentences2 = null; - - sentences2 = st.command.split("__"); - - if (sentences2[0].contains(",") && sentences2.length > 1) - - { - - String[] writeCommand = sentences2[0].split(","); - - st.command = writeCommand[0] + " " + sentences2[1]; - - } else if (sentences2[0].contains(" ") && sentences2.length > 1) - - { - - String[] writeCommand = sentences2[0].split(" "); - - st.command = writeCommand[0] + " " + sentences2[1]; - - } - - data[allDevices.indexOf(dName.concat("1"))][Integer.parseInt(st.startTime) + i - + 2] = st.command; - ; - data[allDevices.indexOf(dName.concat("1"))][1] = "transFile 1"; - } - } - - } - - } - - for (SimulationTransaction st : transFile2) { - - for (String dName : deviceNames2) { - - if (st.deviceName.equals(dName)) { - - for (int i = 0; i < Integer.parseInt(st.length); i++) { - - String[] sentences2 = null; - - sentences2 = st.command.split("__"); - - if (sentences2[0].contains(",") && sentences2.length > 1) - - { - - String[] writeCommand = sentences2[0].split(","); - - st.command = writeCommand[0] + " " + sentences2[1]; - - } else if (sentences2[0].contains(" ") && sentences2.length > 1) - - { - - String[] writeCommand = sentences2[0].split(" "); - - st.command = writeCommand[0] + " " + sentences2[1]; - - } - - data[allDevices.indexOf(dName.concat("2"))][Integer.parseInt(st.startTime) + i - + 2] = st.command; - data[allDevices.indexOf(dName.concat("2"))][1] = "transFile 2"; - } - } - - } - - } - - for (String dName : allDevices) { - data[allDevices.indexOf(dName)][0] = dName.substring(0, dName.length() - 1); - ; - } - - for (int i = 2; i < maxTime + 2; i++) { - - columnNames[i] = Integer.toString(i - 2); - - } - - table = new JTable(data, columnNames); - - table.setFillsViewportHeight(true); - - table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - TableRenderer tr = new TableRenderer(); - int ncols = table.getColumnCount(); - - table.getModel().addTableModelListener(this); - - TableColumnModel tcm = table.getColumnModel(); - - for (int c = 0; c < ncols; c++) { - TableColumn tc = tcm.getColumn(c); - tc.setCellRenderer(tr); - } - - } - - public void showDifference() { - - int numRows = table.getRowCount(); - int numCols = table.getColumnCount(); - - for (int j = 2; j < numCols; j++) { - - for (int i = 0; i < numRows; i++) { - for (int k = 0; k < numRows; k++) { - - if (table.getValueAt(i, 0).equals(table.getValueAt(k, 0))) - - { - - if (i != k && table.getValueAt(i, j) != null && table.getValueAt(k, j) != null - && table.getValueAt(i, j).equals(table.getValueAt(k, j))) { - - table.setValueAt(null, k, j); - table.setValueAt(null, i, j); - - } - } - - } - - } - - } - - numRows = table.getRowCount(); - numCols = table.getColumnCount(); - - table.repaint(); - table.revalidate(); - scrollPane.setViewportView(table); - - scrollPane.setVisible(true); - - scrollPane.revalidate(); - scrollPane.repaint(); - - } - - public void drawTable() { - - scrollPane.setViewportView(table); - - scrollPane.setVisible(true); - add(scrollPane); - - } - - public void updateTable() { - - scrollPane.setViewportView(table); - - scrollPane.setVisible(true); - - scrollPane.revalidate(); - scrollPane.repaint(); - - } - - @Override - public void tableChanged(TableModelEvent e) { - - } - - public Vector<Object> loadTransacationsDropDown(Object object) { - - Vector<Object> allTransacions = new Vector<Object>(); - ; - - int numRows = table.getRowCount(); - int numCols = table.getColumnCount(); - - for (int i = 0; i < numRows; i++) { - for (int j = 2; j < numCols; j++) { - - if (table.getValueAt(i, j) != null && !allTransacions.contains(table.getValueAt(i, j)) - && table.getValueAt(i, 0).equals(object)) { - allTransacions.add(table.getValueAt(i, j)); - } - } - - } - - return allTransacions; - } - - public Vector<Object> loadDevicesDropDown() { - Vector<Object> allDevices = new Vector<Object>(); - ; - - int numRows = table.getRowCount(); - - for (int i = 0; i < numRows; i++) { - - if (table.getValueAt(i, 0) != null && !allDevices.contains(table.getValueAt(i, 0))) { - allDevices.add(table.getValueAt(i, 0)); - - } - - } - - return allDevices; - } - - public JTable getTable() { - return table; - - } - -} diff --git a/src/main/java/ui/interactivesimulation/TableRenderer.java b/src/main/java/ui/interactivesimulation/TableRenderer.java deleted file mode 100644 index 5fb197f325051053f313de57eea0a3b23d096908..0000000000000000000000000000000000000000 --- a/src/main/java/ui/interactivesimulation/TableRenderer.java +++ /dev/null @@ -1,67 +0,0 @@ -package ui.interactivesimulation; - -import java.awt.Color; -import java.awt.Component; -import java.util.Random; -import java.util.Vector; - -import javax.swing.JTable; -import javax.swing.UIManager; -import javax.swing.table.DefaultTableCellRenderer; - -class TableRenderer extends DefaultTableCellRenderer { - - private int row, col; - - private Vector<Object> allCommands = new Vector<Object>(); - private Vector<Color> allColors = new Vector<Color>(); - - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, - int row, int column) { - - this.row = row; - this.col = column; - - // Allow superclass to return rendering component. - - return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); - } - - protected void setValue(Object v) { - - super.setValue(v); - - if (v == null) { - setForeground(UIManager.getColor("Table.foreground")); - setBackground(UIManager.getColor("Table.background")); - return; - } else if (!allCommands.contains(v)) { - allCommands.add(v); - boolean x = true; - while (x) { - - Random randomGenerator = new Random(); - int red = randomGenerator.nextInt(256); - int green = randomGenerator.nextInt(256); - int blue = randomGenerator.nextInt(256); - - Color randomColour = new Color(red, green, blue); - - if (!allColors.contains(randomColour)) { - allColors.add(randomColour); - x = false; - - } - } - - } - - if (allCommands.contains(v)) { - setForeground(Color.yellow); - setBackground(allColors.get(allCommands.indexOf(v))); - } else { - setForeground(UIManager.getColor("Table.foreground")); - setBackground(UIManager.getColor("Table.background")); - } - } -} diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameCompareLatencyDetail.java b/src/main/java/ui/simulationtraceanalysis/JFrameCompareLatencyDetail.java index d69bee65f0f5bd66d1bff0be724e7968a1f63c1e..e970d28a58efb57ec1b8d18e1f69b428a74f8da5 100644 --- a/src/main/java/ui/simulationtraceanalysis/JFrameCompareLatencyDetail.java +++ b/src/main/java/ui/simulationtraceanalysis/JFrameCompareLatencyDetail.java @@ -10,9 +10,10 @@ import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; -import java.util.HashMap; import java.util.List; import java.util.Vector; import javax.swing.BorderFactory; @@ -44,6 +45,7 @@ import common.ConfigurationTTool; import myutil.GraphicLib; import myutil.ScrolledJTextArea; import myutil.TraceManager; +import simulationtraceanalysis.DependencyGraphTranslator; import tmltranslator.TMLMapping; import ui.ColorManager; import ui.MainGUI; @@ -56,7 +58,7 @@ import ui.interactivesimulation.SimulationTransactionParser; public class JFrameCompareLatencyDetail extends JFrame implements ActionListener { private JButton buttonClose, buttonShowDGraph1, buttonShowDGraph2, buttonDetailedAnalysis, buttonCompareInDetails; private LatencyDetailedAnalysisActions[] actions; - private DirectedGraphTranslator dgraph1, dgraph2; + private DependencyGraphTranslator dgraph1, dgraph2; private JPanel loadxml, commandTab, jp05, graphAnalysisResult, jp03, jp04, loadmodel, progressBarpanel; private JTextArea jta; private JScrollPane jsp; @@ -89,7 +91,7 @@ public class JFrameCompareLatencyDetail extends JFrame implements ActionListener private JLabel pBarLabel; private TMLMapping<TGComponent> map; private List<TMLComponentDesignPanel> cpanels; - private DirectedGraphTranslator dgraph; + private DependencyGraphTranslator dgraph; private LatencyAnalysisParallelAlgorithms tc; private JCheckBox taintFirstOp, considerRules; private static final String START_TIME_COL_NAME = "Start Time "; @@ -102,7 +104,7 @@ public class JFrameCompareLatencyDetail extends JFrame implements ActionListener public JFrameCompareLatencyDetail(latencyDetailedAnalysisMain latencyDetailedAnaly, MainGUI mgui, final Vector<String> checkedTransactionsFile1, TMLMapping<TGComponent> map1, List<TMLComponentDesignPanel> cpanels1, final SimulationTrace selectedST1, boolean b, LatencyAnalysisParallelAlgorithms tc1) throws InterruptedException { - super("Latency Comparision"); + super("Latency Comparison"); this.setVisible(b); tc = tc1; mainGUI = mgui; @@ -358,7 +360,26 @@ public class JFrameCompareLatencyDetail extends JFrame implements ActionListener protected void generateDirectedGraph1(TMLMapping<TGComponent> map, List<TMLComponentDesignPanel> cpanels) { try { - dgraph = new DirectedGraphTranslator(jFrameLatencyDetailedAnalysis, this, map, cpanels, 1); + dgraph = new DependencyGraphTranslator(map); + dgraph.addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent e) { + if (e.getPropertyName().equals("progress")) { + int progress = (Integer) e.getNewValue(); + // Update the progress bar's value with the value of the progress property. + if (pbar.getValue() == pbar.getMaximum()) { + updateBar(0); + } else { + updateBar(progress); + } + pack(); + revalidate(); + repaint(); + } + } + }); + dgraph.DrawDirectedGraph(); + pbar.setMaximum(dgraph.getNodeNbProgressBar()); + pbar.setMinimum(0); dgraph1 = dgraph; jta.append("A directed graph with " + dgraph.getGraphsize() + " vertices and " + dgraph.getGraphEdgeSet() + " edges has been successfully generated.\n"); @@ -531,7 +552,7 @@ public class JFrameCompareLatencyDetail extends JFrame implements ActionListener } } - private void showgraphFrame(DirectedGraphTranslator dgraph) { + private void showgraphFrame(DependencyGraphTranslator dgraph) { try { dgraph.showGraph(dgraph); // jta.append("Refer to the generatd dialog to view the graph.\n"); @@ -668,11 +689,11 @@ public class JFrameCompareLatencyDetail extends JFrame implements ActionListener return tableData; } - public DirectedGraphTranslator getDgraph2() { + public DependencyGraphTranslator getDgraph2() { return dgraph2; } - public void setDgraph2(DirectedGraphTranslator dgraph2) { + public void setDgraph2(DependencyGraphTranslator dgraph2) { this.dgraph2 = dgraph2; } @@ -688,11 +709,11 @@ public class JFrameCompareLatencyDetail extends JFrame implements ActionListener this.pbar = pbar; } - public DirectedGraphTranslator getDgraph() { + public DependencyGraphTranslator getDgraph() { return dgraph; } - public void setDgraph(DirectedGraphTranslator dgraph) { + public void setDgraph(DependencyGraphTranslator dgraph) { this.dgraph = dgraph; } // public Thread getT() { diff --git a/src/main/java/ui/interactivesimulation/JFrameCompareSimulationTraces.java b/src/main/java/ui/simulationtraceanalysis/JFrameCompareSimulationTraces.java similarity index 100% rename from src/main/java/ui/interactivesimulation/JFrameCompareSimulationTraces.java rename to src/main/java/ui/simulationtraceanalysis/JFrameCompareSimulationTraces.java diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java index 058c266e9b0e1cdf2feb1a08aef0fb20160bf9ed..644b84f9d25b6e9024b5cf80dee516d7d0a5236f 100644 --- a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java +++ b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java @@ -38,6 +38,7 @@ package ui.simulationtraceanalysis; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.GridBagConstraints; @@ -48,6 +49,7 @@ import java.util.List; import java.util.Map.Entry; import java.util.Vector; import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; @@ -57,6 +59,7 @@ import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; +import simulationtraceanalysis.DependencyGraphTranslator; import ui.interactivesimulation.SimulationTransaction; /** @@ -85,9 +88,20 @@ public class JFrameLatencyComparedDetailedPopup extends JFrame implements TableM private static final String END_TIME = "End Time "; private static final String TASKS_SAME_DEVICE = "Tasks on Same device"; private static final String DEVICE_NAME = "Device Name"; + private static final String MANDATORY_TRANSACTIONS_ST1 = "Mandatory Transactions Trace 1 "; + private static final String MANDATORY_TRANSACTIONS_ST2 = "Mandatory Transactions Trace 2"; + private static final String TASKS_ON_SAME_DEVICE = "Tasks on the Same Device "; + private static final String NON_MANDATORY_TRANSACTIONS_ST1 = "Non-Mandatory Transactions Trace 1"; + private static final String NON_MANDATORY_TRANSACTIONS_ST2 = "Non-Mandatory Transactions Trace 2"; + private static final String NON_MAND_NO_CONT_TRAN = "Non-Mandatory Transactions No-Contention"; + private static final String ST1 = "Trace 1"; + private static final String ST2 = "Trace 2"; + private static final String NON_MAND_CONT_TRAN = "Non-Mandatory Transactions Causing Contention"; + private static final String TABLE_LENGED = "Table Lenged: "; + private static final String MANDATORY_TRANSACTIONS = "Mandatory Transactions "; - public JFrameLatencyComparedDetailedPopup(DirectedGraphTranslator dgraph1, DirectedGraphTranslator dgraph2, int row, int row2, boolean firstTable, - LatencyAnalysisParallelAlgorithms tc2) throws InterruptedException { + public JFrameLatencyComparedDetailedPopup(DependencyGraphTranslator dgraph1, DependencyGraphTranslator dgraph2, int row, int row2, + boolean firstTable, LatencyAnalysisParallelAlgorithms tc2) throws InterruptedException { super("Detailed Latency By Row"); tc = tc2; GridBagLayout gridbagmain = new GridBagLayout(); @@ -108,7 +122,6 @@ public class JFrameLatencyComparedDetailedPopup extends JFrame implements TableM columnByTaskNames[2] = HARDWARE; columnByTaskNames[3] = START_TIME; columnByTaskNames[4] = END_TIME; - JPanel jp04 = new JPanel(new BorderLayout()); tc.setDgraph1(dgraph1); tc.setDgraph2(dgraph2); tc.setRow(row); @@ -151,10 +164,13 @@ public class JFrameLatencyComparedDetailedPopup extends JFrame implements TableM } }; // taskNames = new JTable(dataDetailedByTask, columnByTaskNames); + JPanel jp02 = new JPanel(new BorderLayout()); + jp02.setBorder(new javax.swing.border.TitledBorder(MANDATORY_TRANSACTIONS_ST1)); JTable taskNames = new JTable(model); taskNames.setAutoCreateRowSorter(true); scrollPane11 = new JScrollPane(taskNames, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane11.setVisible(true); + jp02.add(scrollPane11); c02.gridheight = 1; c02.weighty = 1.0; c02.weightx = 1.0; @@ -163,7 +179,7 @@ public class JFrameLatencyComparedDetailedPopup extends JFrame implements TableM c02.gridy = 0; c02.fill = GridBagConstraints.BOTH; // c02.fill = GridBagConstraints.BOTH; - framePanel.add(scrollPane11, c02); + framePanel.add(jp02, c02); DefaultTableModel model12 = new DefaultTableModel(dataDetailedByTask2, columnByTaskNames) { @Override public boolean isCellEditable(int row, int column) { @@ -194,8 +210,10 @@ public class JFrameLatencyComparedDetailedPopup extends JFrame implements TableM scrollPane12.setVisible(true); c02.gridx = 1; c02.gridy = 0; - c02.fill = GridBagConstraints.BOTH; - framePanel.add(scrollPane12, c02); + JPanel jp03 = new JPanel(new BorderLayout()); + jp03.setBorder(new javax.swing.border.TitledBorder(MANDATORY_TRANSACTIONS_ST2)); + jp03.add(scrollPane12); + framePanel.add(jp03, c02); columnByHWNames[0] = TASKS_SAME_DEVICE; columnByHWNames[1] = TRANSACTION_DIAGRAM_NAME; columnByHWNames[2] = HARDWARE; @@ -244,8 +262,10 @@ public class JFrameLatencyComparedDetailedPopup extends JFrame implements TableM scrollPane13.setVisible(true); c02.gridx = 0; c02.gridy = 1; - c02.fill = GridBagConstraints.BOTH; - framePanel.add(scrollPane13, c02); + JPanel jp04 = new JPanel(new BorderLayout()); + jp04.setBorder(new javax.swing.border.TitledBorder(NON_MANDATORY_TRANSACTIONS_ST1)); + jp04.add(scrollPane13); + framePanel.add(jp04, c02); DefaultTableModel model3 = new DefaultTableModel(dataHWDelayByTask2, columnByHWNames) { @Override public boolean isCellEditable(int row, int column) { @@ -276,23 +296,79 @@ public class JFrameLatencyComparedDetailedPopup extends JFrame implements TableM scrollPane14.setVisible(true); c02.gridx = 1; c02.gridy = 1; - c02.fill = GridBagConstraints.BOTH; - framePanel.add(scrollPane14, c02); + JPanel jp05 = new JPanel(new BorderLayout()); + jp05.setBorder(new javax.swing.border.TitledBorder(NON_MANDATORY_TRANSACTIONS_ST2)); + jp05.add(scrollPane14); + framePanel.add(jp05, c02); scrollPane15 = new JScrollPane(LatencyTable(dgraph1, row, firstTable), JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane15.setVisible(true); - c02.gridwidth = 2; c02.gridx = 0; c02.gridy = 3; + c02.gridwidth = 2; c02.fill = GridBagConstraints.BOTH; - framePanel.add(scrollPane15, c02); + JPanel jp06 = new JPanel(new BorderLayout()); + jp06.setBorder(new javax.swing.border.TitledBorder(ST1)); + jp06.add(scrollPane15); + framePanel.add(jp06, c02); + // framePanel.add(scrollPane15, c02); scrollPane16 = new JScrollPane(LatencyTable(dgraph2, row2, firstTable), JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane16.setVisible(true); c02.gridx = 0; c02.gridy = 4; - c02.fill = GridBagConstraints.BOTH; - framePanel.add(scrollPane16, c02); + c02.gridwidth = 2; + JPanel jp07 = new JPanel(new BorderLayout()); + jp07.setBorder(new javax.swing.border.TitledBorder(ST2)); + jp07.add(scrollPane16); + framePanel.add(jp07, c02); + c02.gridx = 0; + c02.gridy = 5; + c02.gridwidth = 2; + // framePanel.add(scrollPane16, c02); + GridBagLayout gridbag01 = new GridBagLayout(); + GridBagConstraints c01 = new GridBagConstraints(); + c01.gridheight = 1; + c01.weighty = 1.0; + c01.weightx = 1.0; + c01.gridwidth = 1; + c02.gridwidth = 2; + c01.gridx = 0; + c01.gridy = 0; + JLabel pBarLabel0 = new JLabel(TABLE_LENGED); + JPanel lengedpanel = new JPanel(gridbag01); + lengedpanel.add(pBarLabel0, c01); + c01.gridx = 2; + c01.gridy = 0; + JLabel pBarLabel = new JLabel(MANDATORY_TRANSACTIONS, JLabel.RIGHT); + lengedpanel.add(pBarLabel, c01); + c01.gridx = 1; + c01.gridy = 0; + JLabel pBarLabel2 = new JLabel(" ", JLabel.LEFT); + pBarLabel2.setOpaque(true); + pBarLabel2.setBackground(Color.GREEN); + lengedpanel.add(pBarLabel2, c01); + c01.gridx = 4; + c01.gridy = 0; + JLabel pBarLabel3 = new JLabel(NON_MAND_CONT_TRAN, JLabel.RIGHT); + lengedpanel.add(pBarLabel3, c01); + c01.gridx = 3; + c01.gridy = 0; + JLabel pBarLabel4 = new JLabel(" ", JLabel.LEFT); + pBarLabel4.setOpaque(true); + pBarLabel4.setBackground(Color.RED); + lengedpanel.add(pBarLabel4, c01); + c01.gridx = 6; + c01.gridy = 0; + JLabel pBarLabel5 = new JLabel(NON_MAND_NO_CONT_TRAN, JLabel.RIGHT); + lengedpanel.add(pBarLabel5, c01); + c01.gridx = 5; + c01.gridy = 0; + JLabel pBarLabel6 = new JLabel(" ", JLabel.LEFT); + pBarLabel6.setOpaque(true); + pBarLabel6.setBackground(Color.ORANGE); + lengedpanel.add(pBarLabel6, c01); + this.add(lengedpanel, c02); this.pack(); this.setVisible(true); } @@ -301,7 +377,7 @@ public class JFrameLatencyComparedDetailedPopup extends JFrame implements TableM public void tableChanged(TableModelEvent e) { } - public JTable LatencyTable(DirectedGraphTranslator dgraph, int row, boolean firstTable) { + public JTable LatencyTable(DependencyGraphTranslator dgraph, int row, boolean firstTable) { List<String> onPathBehavior = new ArrayList<String>(); List<String> offPathBehavior = new ArrayList<String>(); List<String> offPathBehaviorCausingDelay = new ArrayList<String>(); diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java index 9f89020c79dc9baa052b0b71cc8d8b0c4578663d..7d3589c298ad1b02bfd6fe18f95a65c37b58e003 100644 --- a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java +++ b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java @@ -51,16 +51,16 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; -import java.lang.Thread.State; import java.util.HashMap; -import java.util.Iterator; import java.util.List; -import java.util.Vector; import java.util.Map.Entry; +import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; @@ -101,7 +101,7 @@ import common.ConfigurationTTool; import common.SpecConfigTTool; import myutil.GraphicLib; import myutil.ScrolledJTextArea; -import myutil.TraceManager; +import simulationtraceanalysis.DependencyGraphTranslator; import tmltranslator.TMLActivity; import tmltranslator.TMLMapping; import tmltranslator.TMLTask; @@ -159,7 +159,7 @@ public class JFrameLatencyDetailedAnalysis extends JFrame implements ActionListe private File file; private static Vector<SimulationTransaction> transFile1; private JLabel task2, taskL; - private DirectedGraphTranslator dgraph; + private DependencyGraphTranslator dgraph; private JScrollPane scrollPane11, scrollPane12;// , scrollPane13; private LatencyAnalysisParallelAlgorithms tc; private Boolean allop = false; @@ -504,13 +504,32 @@ public class JFrameLatencyDetailedAnalysis extends JFrame implements ActionListe pbar.setValue(newValue); } - public DirectedGraphTranslator getDgraph() { + public DependencyGraphTranslator getDgraph() { return dgraph; } protected void generateDirectedGraph(TMLMapping<TGComponent> tmap, List<TMLComponentDesignPanel> cpanels) { try { - dgraph = new DirectedGraphTranslator(this, jframeCompareLatencyDetail, tmap, cpanels, 0); + dgraph = new DependencyGraphTranslator(tmap); + pbar.setMaximum(dgraph.getNodeNbProgressBar()); + pbar.setMinimum(0); + dgraph.addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent e) { + if (e.getPropertyName().equals("progress")) { + int progress = (Integer) e.getNewValue(); + // Update the progress bar's value with the value of the progress property. + if (pbar.getValue() == pbar.getMaximum()) { + updateBar(0); + } else { + updateBar(progress); + } + pack(); + revalidate(); + repaint(); + } + } + }); + dgraph.DrawDirectedGraph(); jta.append("A directed graph with " + dgraph.getGraphsize() + " vertices and " + dgraph.getGraphEdgeSet() + " edges has been successfully generated.\n"); // buttonSaveDGraph.setEnabled(true); @@ -520,6 +539,11 @@ public class JFrameLatencyDetailedAnalysis extends JFrame implements ActionListe jta.append(" - " + dgraph.getWarnings().get(i) + ".\n "); } } + if (dgraph.getErrors().size() > 0) { + for (int i = 0; i < dgraph.getErrors().size(); i++) { + error(dgraph.getErrors().get(i)); + } + } buttonShowDGraph.setEnabled(true); readChannelTransactions.addAll(dgraph.getreadChannelNodes()); writeChannelTransactions.addAll(dgraph.getwriteChannelNodes()); @@ -692,14 +716,22 @@ public class JFrameLatencyDetailedAnalysis extends JFrame implements ActionListe if (selectedIndex == 0) { row1 = table11.getSelectedRow(); if (row1 > -1) { - noLatValue = table11.getValueAt(row1, 4).toString(); + if (table12.getValueAt(row1, 4) != null) { + noLatValue = table11.getValueAt(row1, 4).toString(); + } else { + jta.append("Invaid latency value.\n"); + } } else { jta.append("Please select a row before precise analysis.\n"); } } else if (selectedIndex == 1) { row1 = table12.getSelectedRow(); if (row1 > -1) { - noLatValue = table12.getValueAt(row1, 4).toString(); + if (table12.getValueAt(row1, 4) != null) { + noLatValue = table12.getValueAt(row1, 4).toString(); + } else { + jta.append("Invaid latency value.\n"); + } } else { jta.append("Please select a row before precise analysis.\n"); } diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java index 48ec9ec85afb8dc8c0febe7fffa68937f264dcec..c66757fb740742bf4e068bfb94a11d990bd08fd8 100644 --- a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java +++ b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java @@ -44,14 +44,10 @@ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map.Entry; -import java.util.Vector; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.JProgressBar; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.event.TableModelEvent; @@ -60,7 +56,8 @@ import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; -import ui.interactivesimulation.SimulationTransaction; +import simulationtraceanalysis.DependencyGraphTranslator; +import simulationtraceanalysis.PlanArrays; /** * Class JFrameLatencyDetailedPopup: this class opens the frame showing the @@ -76,7 +73,6 @@ public class JFrameLatencyDetailedPopup extends JFrame implements TableModelList private JScrollPane scrollPane12, scrollPane13, scrollPane14; private static JTable taskNames, hardwareNames; private Object[][] dataDetailedByTask; - private String[] columnNames; private List<String> onPathBehavior = new ArrayList<String>(); private List<String> offPathBehavior = new ArrayList<String>(); private List<String> offPathBehaviorCausingDelay = new ArrayList<String>(); @@ -93,8 +89,10 @@ public class JFrameLatencyDetailedPopup extends JFrame implements TableModelList private static final String NON_MAND_NO_CONT_TRAN = "Non-Mandatory Transactions No-Contention"; private static final String DEVICE_NAME = "Device Name"; private static final String ZERO = "0"; + private static final String NON_MAND_CONT_TRAN = "Non-Mandatory Transactions Causing Contention"; + private static final String TABLE_LENGED = "Table Lenged: "; - public JFrameLatencyDetailedPopup(DirectedGraphTranslator dgraph, int row, boolean firstTable, Boolean taint, + public JFrameLatencyDetailedPopup(DependencyGraphTranslator dgraph, int row, boolean firstTable, Boolean taint, LatencyAnalysisParallelAlgorithms th, boolean visible) throws InterruptedException { super("Precise Latency By Row"); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); @@ -218,277 +216,9 @@ public class JFrameLatencyDetailedPopup extends JFrame implements TableModelList scrollPane13.setVisible(visible); jp05.add(scrollPane13); this.add(jp05); - int maxTime = -1; - int minTime = Integer.MAX_VALUE; - int tmpEnd, tmpStart, length; - Vector<String> deviceNames1 = new Vector<String>(); - if (firstTable) { - for (SimulationTransaction st : dgraph.getRowDetailsTaks(row)) { - if (st.coreNumber == null) { - st.coreNumber = ZERO; - } - tmpEnd = Integer.parseInt(st.endTime); - if (tmpEnd > maxTime) { - maxTime = tmpEnd; - } - tmpStart = Integer.parseInt(st.startTime); - if (tmpStart < minTime) { - minTime = tmpStart; - } - String deviceNameandcore = st.deviceName + "_" + st.coreNumber; - if (!deviceNames1.contains(deviceNameandcore)) { - deviceNames1.add(deviceNameandcore); - } - } - for (SimulationTransaction st : dgraph.getRowDetailsByHW(row)) { - tmpEnd = Integer.parseInt(st.endTime); - if (st.coreNumber == null) { - st.coreNumber = ZERO; - } - if (tmpEnd > maxTime) { - maxTime = tmpEnd; - } - tmpStart = Integer.parseInt(st.startTime); - if (tmpStart < minTime) { - minTime = tmpStart; - } - String deviceNameandcore = st.deviceName + "_" + st.coreNumber; - if (!deviceNames1.contains(deviceNameandcore)) { - deviceNames1.add(deviceNameandcore); - } - } - int timeInterval = 0; - if (maxTime > -1 && minTime < Integer.MAX_VALUE) { - timeInterval = (maxTime - minTime); - } - columnNames = new String[timeInterval + 1]; - columnNames[0] = DEVICE_NAME; - for (int i = 0; i < timeInterval; i++) { - columnNames[i + 1] = Integer.toString(minTime + i); - } - dataDetailedByTask = new Object[deviceNames1.size()][timeInterval + 1]; - for (SimulationTransaction st : dgraph.getRowDetailsTaks(row)) { - if (st.coreNumber == null) { - st.coreNumber = ZERO; - } - for (String dName : deviceNames1) { - String deviceNameandcore = st.deviceName + "_" + st.coreNumber; - if (deviceNameandcore.equals(dName)) { - length = Integer.parseInt(st.length); - for (int i = 0; i < length; i++) { - int columnnmber = Integer.parseInt(st.endTime) - minTime - i; - dataDetailedByTask[deviceNames1.indexOf(dName)][columnnmber] = dgraph.getNameIDTaskList().get(st.id); - ; - onPathBehavior.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); - if (!dgraph.getOnPath().contains(st)) { - dgraph.getOnPath().add(st); - } - } - } - } - } - HashMap<String, ArrayList<ArrayList<Integer>>> delayTime = dgraph.getRowDelayDetailsByHW(row); - for (SimulationTransaction st : dgraph.getRowDetailsByHW(row)) { - int startTime = Integer.valueOf(st.startTime); - if (st.coreNumber == null) { - st.coreNumber = ZERO; - } - for (String dName : deviceNames1) { - String deviceNameandcore = st.deviceName + "_" + st.coreNumber; - if (deviceNameandcore.equals(dName)) { - length = Integer.parseInt(st.length); - for (int i = 0; i < length; i++) { - int columnnmber = Integer.parseInt(st.endTime) - minTime - i; - dataDetailedByTask[deviceNames1.indexOf(dName)][columnnmber] = dgraph.getNameIDTaskList().get(st.id); - ; - boolean causeDelay = false; - if (delayTime.containsKey(deviceNameandcore)) { - for (Entry<String, ArrayList<ArrayList<Integer>>> entry : delayTime.entrySet()) { - if (entry.getKey().equals(deviceNameandcore)) { - ArrayList<ArrayList<Integer>> timeList = entry.getValue(); - for (int j = 0; j < timeList.size(); j++) { - if (startTime >= timeList.get(j).get(0) && startTime <= timeList.get(j).get(1)) { - causeDelay = true; - } - } - } - } - } - if (causeDelay) { - offPathBehaviorCausingDelay.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); - if (!dgraph.getOffPathDelay().contains(st)) { - dgraph.getOffPathDelay().add(st); - } - } else { - offPathBehavior.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); - if (!dgraph.getOffPath().contains(st)) { - dgraph.getOffPath().add(st); - } - } - } - } - } - } - for (String dName : deviceNames1) { - dataDetailedByTask[deviceNames1.indexOf(dName)][0] = dName; - ; - } - } else { - Vector<SimulationTransaction> minMaxTasksByRow; - List<SimulationTransaction> minMaxHWByRowDetails; - HashMap<String, ArrayList<ArrayList<Integer>>> delayTime; - // min/max table row selected - if (taint) { - delayTime = dgraph.getTimeDelayedPerRowMinMaxTainted(row); - minMaxTasksByRow = dgraph.getMinMaxTasksByRowTainted(row); - minMaxHWByRowDetails = dgraph.getTaskMinMaxHWByRowDetailsTainted(row); - for (SimulationTransaction st : minMaxTasksByRow) { - tmpEnd = Integer.parseInt(st.endTime); - if (st.coreNumber == null) { - st.coreNumber = ZERO; - } - if (tmpEnd > maxTime) { - maxTime = tmpEnd; - } - tmpStart = Integer.parseInt(st.startTime); - if (tmpStart < minTime) { - minTime = tmpStart; - } - String deviceNameandcore = st.deviceName + "_" + st.coreNumber; - if (!deviceNames1.contains(deviceNameandcore)) { - deviceNames1.add(deviceNameandcore); - } - } - for (SimulationTransaction st : minMaxHWByRowDetails) { - tmpEnd = Integer.parseInt(st.endTime); - if (tmpEnd > maxTime) { - maxTime = tmpEnd; - } - tmpStart = Integer.parseInt(st.startTime); - if (tmpStart < minTime) { - minTime = tmpStart; - } - String deviceNameandcore = st.deviceName + "_" + st.coreNumber; - if (!deviceNames1.contains(deviceNameandcore)) { - deviceNames1.add(deviceNameandcore); - } - } - } else { - delayTime = dgraph.getRowDelayDetailsByHWMinMax(row); - minMaxTasksByRow = dgraph.getMinMaxTasksByRow(row); - minMaxHWByRowDetails = dgraph.getTaskMinMaxHWByRowDetails(row); - for (SimulationTransaction st : minMaxTasksByRow) { - if (st.coreNumber == null) { - st.coreNumber = ZERO; - } - tmpEnd = Integer.parseInt(st.endTime); - if (tmpEnd > maxTime) { - maxTime = tmpEnd; - } - tmpStart = Integer.parseInt(st.startTime); - if (tmpStart < minTime) { - minTime = tmpStart; - } - String deviceNameandcore = st.deviceName + "_" + st.coreNumber; - if (!deviceNames1.contains(deviceNameandcore)) { - deviceNames1.add(deviceNameandcore); - } - } - for (SimulationTransaction st : minMaxHWByRowDetails) { - if (st.coreNumber == null) { - st.coreNumber = ZERO; - } - tmpEnd = Integer.parseInt(st.endTime); - if (tmpEnd > maxTime) { - maxTime = tmpEnd; - } - tmpStart = Integer.parseInt(st.startTime); - if (tmpStart < minTime) { - minTime = tmpStart; - } - String deviceNameandcore = st.deviceName + "_" + st.coreNumber; - if (!deviceNames1.contains(deviceNameandcore)) { - deviceNames1.add(deviceNameandcore); - } - } - } - int timeInterval = 0; - if (maxTime > -1 && minTime < Integer.MAX_VALUE) { - timeInterval = (maxTime - minTime); - } - columnNames = new String[timeInterval + 1]; - columnNames[0] = DEVICE_NAME; - for (int i = 0; i < timeInterval; i++) { - columnNames[i + 1] = Integer.toString(minTime + i); - } - dataDetailedByTask = new Object[deviceNames1.size()][timeInterval + 1]; - for (SimulationTransaction st : minMaxTasksByRow) { - if (st.coreNumber == null) { - st.coreNumber = ZERO; - } - for (String dName : deviceNames1) { - String deviceNameandcore = st.deviceName + "_" + st.coreNumber; - if (deviceNameandcore.equals(dName)) { - length = Integer.parseInt(st.length); - for (int i = 0; i < length; i++) { - int columnnmber = Integer.parseInt(st.endTime) - minTime - i; - dataDetailedByTask[deviceNames1.indexOf(dName)][columnnmber] = dgraph.getNameIDTaskList().get(st.id); - ; - onPathBehavior.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); - if (!dgraph.getOnPath().contains(st)) { - dgraph.getOnPath().add(st); - } - } - } - } - } - for (SimulationTransaction st : minMaxHWByRowDetails) { - int startTime = Integer.valueOf(st.startTime); - if (st.coreNumber == null) { - st.coreNumber = ZERO; - } - for (String dName : deviceNames1) { - String deviceNameandcore = st.deviceName + "_" + st.coreNumber; - if (deviceNameandcore.equals(dName)) { - length = Integer.parseInt(st.length); - for (int i = 0; i < length; i++) { - int columnnmber = Integer.parseInt(st.endTime) - minTime - i; - dataDetailedByTask[deviceNames1.indexOf(dName)][columnnmber] = dgraph.getNameIDTaskList().get(st.id); - ; - boolean causeDelay = false; - if (delayTime.containsKey(deviceNameandcore)) { - for (Entry<String, ArrayList<ArrayList<Integer>>> entry : delayTime.entrySet()) { - if (entry.getKey().equals(deviceNameandcore)) { - ArrayList<ArrayList<Integer>> timeList = entry.getValue(); - for (int j = 0; j < timeList.size(); j++) { - if (startTime >= timeList.get(j).get(0) && startTime <= timeList.get(j).get(1)) { - causeDelay = true; - } - } - } - } - } - if (causeDelay) { - offPathBehaviorCausingDelay.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); - if (!dgraph.getOffPathDelay().contains(st)) { - dgraph.getOffPathDelay().add(st); - } - } else { - offPathBehavior.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); - if (!dgraph.getOffPath().contains(st)) { - dgraph.getOffPath().add(st); - } - } - } - } - } - } - for (String dName : deviceNames1) { - dataDetailedByTask[deviceNames1.indexOf(dName)][0] = dName; - ; - } - } - DefaultTableModel model3 = new DefaultTableModel(dataDetailedByTask, columnNames) { + PlanArrays arrays = new PlanArrays(); + arrays.fillArrays(dgraph, row, firstTable, taint); + DefaultTableModel model3 = new DefaultTableModel(arrays.getDataDetailedByTask(), arrays.getColumnNames()) { @Override public boolean isCellEditable(int row, int column) { return false; @@ -498,7 +228,7 @@ public class JFrameLatencyDetailedPopup extends JFrame implements TableModelList table.setFillsViewportHeight(true); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setAutoCreateRowSorter(true); - TableRenderer tr = new TableRenderer(onPathBehavior, offPathBehaviorCausingDelay, offPathBehavior); + TableRenderer tr = new TableRenderer(arrays.getOnPathBehavior(), arrays.getOffPathBehaviorCausingDelay(), arrays.getOffPathBehavior()); int ncols = table.getColumnCount(); table.getModel().addTableModelListener(this); TableColumnModel tcm = table.getColumnModel(); @@ -540,12 +270,12 @@ public class JFrameLatencyDetailedPopup extends JFrame implements TableModelList c01.gridwidth = 1; c01.gridx = 0; c01.gridy = 0; - JLabel pBarLabel0 = new JLabel("Table Lenged: "); + JLabel pBarLabel0 = new JLabel(TABLE_LENGED); JPanel lengedpanel = new JPanel(gridbag01); lengedpanel.add(pBarLabel0, c01); c01.gridx = 2; c01.gridy = 0; - JLabel pBarLabel = new JLabel("Mandatory Transaction", JLabel.RIGHT); + JLabel pBarLabel = new JLabel(MANDATORY_TRANSACTIONS, JLabel.RIGHT); lengedpanel.add(pBarLabel, c01); c01.gridx = 1; c01.gridy = 0; @@ -555,7 +285,7 @@ public class JFrameLatencyDetailedPopup extends JFrame implements TableModelList lengedpanel.add(pBarLabel2, c01); c01.gridx = 4; c01.gridy = 0; - JLabel pBarLabel3 = new JLabel("Non-Mandatory Transactions Causing Contention", JLabel.RIGHT); + JLabel pBarLabel3 = new JLabel(NON_MAND_CONT_TRAN, JLabel.RIGHT); lengedpanel.add(pBarLabel3, c01); c01.gridx = 3; c01.gridy = 0; diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameListOfRules.java b/src/main/java/ui/simulationtraceanalysis/JFrameListOfRules.java index 65bbbda1f597b848501284d6cd408945727aa9f9..c0f85d8f7b21661ec45a2a2d17dc1c517ebf6323 100644 --- a/src/main/java/ui/simulationtraceanalysis/JFrameListOfRules.java +++ b/src/main/java/ui/simulationtraceanalysis/JFrameListOfRules.java @@ -38,17 +38,14 @@ package ui.simulationtraceanalysis; import java.awt.BorderLayout; -import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; -import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; @@ -66,6 +63,8 @@ import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; import org.jgrapht.Graphs; import myutil.ScrolledJTextArea; +import simulationtraceanalysis.DependencyGraphTranslator; +import simulationtraceanalysis.Vertex; import ui.ColorManager; /** @@ -79,8 +78,8 @@ import ui.ColorManager; */ public class JFrameListOfRules extends JFrame implements TableModelListener, ActionListener { private String[] columnByTaskNames = new String[3]; - private HashMap<vertex, List<vertex>> ruleAddedEdges = new HashMap<vertex, List<vertex>>(); - private HashMap<vertex, List<vertex>> ruleAddedEdgesChannels = new HashMap<vertex, List<vertex>>(); + private HashMap<Vertex, List<Vertex>> ruleAddedEdges = new HashMap<Vertex, List<Vertex>>(); + private HashMap<Vertex, List<Vertex>> ruleAddedEdgesChannels = new HashMap<Vertex, List<Vertex>>(); private Object[][] tableData; private JScrollPane scrollPane12; private JButton buttonClose, buttonDeleteRule, buttonDeleteALLRules; @@ -88,11 +87,11 @@ public class JFrameListOfRules extends JFrame implements TableModelListener, Act private JTextArea jta; private JPanel jp, jp05, commands, rulesList, rulesList1; private JScrollPane jsp; - private DirectedGraphTranslator directedGraph; + private DependencyGraphTranslator directedGraph; private JTable taskNames; private DefaultTableModel model; - public JFrameListOfRules(DirectedGraphTranslator dgraph) { + public JFrameListOfRules(DependencyGraphTranslator dgraph) { super("All Added Rules"); initActions(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); @@ -122,7 +121,7 @@ public class JFrameListOfRules extends JFrame implements TableModelListener, Act columnByTaskNames[0] = "Operator 2"; columnByTaskNames[1] = "After "; columnByTaskNames[2] = "Operator 1 "; - ruleAddedEdgesChannels = dgraph.getRuleAddedEdgesChannels(); + ruleAddedEdgesChannels = dgraph.getDependencyGraphRelations().getRuleAddedEdgesChannels(); fillRuleTables(); scrollPane12 = new JScrollPane(taskNames, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane12.setVisible(true); @@ -179,16 +178,16 @@ public class JFrameListOfRules extends JFrame implements TableModelListener, Act // fill table with prevously created rules in the same session private void fillRuleTables() { int size = 0; - for (Entry<vertex, List<vertex>> v : ruleAddedEdgesChannels.entrySet()) { - vertex v1 = v.getKey(); - List<vertex> lv = v.getValue(); + for (Entry<Vertex, List<Vertex>> v : ruleAddedEdgesChannels.entrySet()) { + Vertex v1 = v.getKey(); + List<Vertex> lv = v.getValue(); size = size + lv.size(); } tableData = new Object[size][3]; int j = 0; - for (Entry<vertex, List<vertex>> v : ruleAddedEdgesChannels.entrySet()) { - vertex v1 = v.getKey(); - List<vertex> lv = v.getValue(); + for (Entry<Vertex, List<Vertex>> v : ruleAddedEdgesChannels.entrySet()) { + Vertex v1 = v.getKey(); + List<Vertex> lv = v.getValue(); for (int i = 0; i < lv.size(); i++) { tableData[j][0] = lv.get(i).getName(); tableData[j][1] = "After"; @@ -247,8 +246,8 @@ public class JFrameListOfRules extends JFrame implements TableModelListener, Act dispose(); setVisible(false); } else if (command.equals(actions[LatencyDetailedAnalysisActions.ACT_DELETE_ALL_RULE].getActionCommand())) { - directedGraph.setRuleAddedEdges(new HashMap<vertex, List<vertex>>()); - directedGraph.setRuleAddedEdgesChannels(new HashMap<vertex, List<vertex>>()); + directedGraph.getDependencyGraphRelations().setRuleAddedEdges(new HashMap<Vertex, List<Vertex>>()); + directedGraph.getDependencyGraphRelations().setRuleAddedEdgesChannels(new HashMap<Vertex, List<Vertex>>()); model.setRowCount(0); taskNames.setModel(model); jta.append("All Rules are deleted \n"); @@ -263,9 +262,9 @@ public class JFrameListOfRules extends JFrame implements TableModelListener, Act this.setVisible(true); } else if (command.equals(actions[LatencyDetailedAnalysisActions.ACT_DELETE_SELECTED_RULE].getActionCommand())) { int i = taskNames.getSelectedRow(); - vertex v1 = directedGraph.getvertex(model.getValueAt(i, 0).toString()); - vertex v2 = directedGraph.getvertex(model.getValueAt(i, 2).toString()); - ruleAddedEdges = directedGraph.getRuleAddedEdges(); + Vertex v1 = directedGraph.getvertex(model.getValueAt(i, 0).toString()); + Vertex v2 = directedGraph.getvertex(model.getValueAt(i, 2).toString()); + ruleAddedEdges = directedGraph.getDependencyGraphRelations().getRuleAddedEdges(); // remove rule and its channel removeRule(v1, v2, i); model.removeRow(i); @@ -284,19 +283,19 @@ public class JFrameListOfRules extends JFrame implements TableModelListener, Act } } - private void removeRule(vertex v1, vertex v2, int i) { - vertex v1Channel = null, v2Channel = null; + private void removeRule(Vertex v1, Vertex v2, int i) { + Vertex v1Channel = null, v2Channel = null; if (v2Channel == null && Graphs.vertexHasSuccessors(directedGraph.getG(), v2)) { - for (vertex n : Graphs.successorListOf(directedGraph.getG(), v2)) { - if (n.getType() == vertex.TYPE_CHANNEL) { + for (Vertex n : Graphs.successorListOf(directedGraph.getG(), v2)) { + if (n.getType() == Vertex.getTypeChannel()) { v2Channel = n; break; } } } if (Graphs.vertexHasPredecessors(directedGraph.getG(), v1)) { - for (vertex n : Graphs.predecessorListOf(directedGraph.getG(), v1)) { - if (n.getType() == vertex.TYPE_CHANNEL) { + for (Vertex n : Graphs.predecessorListOf(directedGraph.getG(), v1)) { + if (n.getType() == Vertex.getTypeChannel()) { v1Channel = n; break; } diff --git a/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java b/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java index 3c62599b3881e155465b6e6b03b644184c7c03ec..a2af5cf6a6790592767f8dd979c9c574564b3200 100644 --- a/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java +++ b/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java @@ -6,6 +6,7 @@ import java.util.Vector; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPathExpressionException; import org.xml.sax.SAXException; +import simulationtraceanalysis.DependencyGraphTranslator; import tmltranslator.TMLMapping; import ui.MainGUI; import ui.SimulationTrace; @@ -21,7 +22,7 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable { private JFrameCompareLatencyDetail cld; private TMLMapping<TGComponent> tmap; private List<TMLComponentDesignPanel> cpanels; - private DirectedGraphTranslator dgraph, dgraph1, dgraph2; + private DependencyGraphTranslator dgraph, dgraph1, dgraph2; private int row, row1, row2, row3, row4, selectedIndex; private Object[][] dataDetailedByTask, dataDetailedByTask2; private latencyDetailedAnalysisMain main; @@ -84,7 +85,8 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable { } else if (algorithmId == 14) { dgraph.showGraph(dgraph); } else if (algorithmId == 15) { - dgraph = new DirectedGraphTranslator(jFrameLDA, cld, map, cpanels, 1); + dgraph = new DependencyGraphTranslator(map); + dgraph.DrawDirectedGraph(); generateDirectedGraph2(map, cpanels); } else if (algorithmId == 16) { cld.generateDirectedGraph2(map, cpanels); @@ -139,7 +141,7 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable { return t; } - public void setDgraph2(DirectedGraphTranslator dgraph2) { + public void setDgraph2(DependencyGraphTranslator dgraph2) { this.dgraph2 = dgraph2; } @@ -171,7 +173,7 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable { this.cpanels = cpanels; } - public void setDgraph(DirectedGraphTranslator dgraph) { + public void setDgraph(DependencyGraphTranslator dgraph) { this.dgraph = dgraph; } @@ -211,11 +213,11 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable { this.map = map; } - public DirectedGraphTranslator getDgraph() { + public DependencyGraphTranslator getDgraph() { return dgraph; } - public void setDgraph1(DirectedGraphTranslator dgraph1) { + public void setDgraph1(DependencyGraphTranslator dgraph1) { this.dgraph1 = dgraph1; } diff --git a/src/main/java/ui/simulationtraceanalysis/LatencyDetailedAnalysisActions.java b/src/main/java/ui/simulationtraceanalysis/LatencyDetailedAnalysisActions.java index 628e0ba5337b5461fccee07d509c2c1e18d55058..14e7a64dd56f58255ee5a4469bec50448f499c6a 100644 --- a/src/main/java/ui/simulationtraceanalysis/LatencyDetailedAnalysisActions.java +++ b/src/main/java/ui/simulationtraceanalysis/LatencyDetailedAnalysisActions.java @@ -76,7 +76,10 @@ public class LatencyDetailedAnalysisActions extends AbstractAction { public static final int ACT_SHOW_ALL_OP = 17; public static final int ACT_LOAD_ALL_OP = 18; public static final int ACT_LOAD_ALL_OP2 = 19; - public static final int NB_ACTION = 20; + public static final int ACT_COMPARE_PARSE = 20; + public static final int ACT_COMPARE_DIFF = 21; + public static final int ACT_COMPARE_CLOSE = 22; + public static final int NB_ACTION = 23; private static final TAction[] actions = new TAction[NB_ACTION]; private EventListenerList listeners; public static final String JLF_IMAGE_DIR = ""; @@ -145,6 +148,11 @@ public class LatencyDetailedAnalysisActions extends AbstractAction { "Load Task Operators", "Load Task Operators", 'T'); actions[ACT_LOAD_ALL_OP2] = new TAction("load-operators_list2", "Load Task Operators", IconManager.imgic29, IconManager.imgic29, "Load Task Operators", "Load Task Operators", 'T'); + actions[ACT_COMPARE_CLOSE] = new TAction("stop-and-close-all", "Terminate Compare", IconManager.imgic27, IconManager.imgic27, + "Terminate Compare", "Compare", 'T'); + actions[ACT_COMPARE_PARSE] = new TAction("parse", "Parse", IconManager.imgic53, IconManager.imgic53, "Parse", "Parse", 'C'); + actions[ACT_COMPARE_DIFF] = new TAction("difference", "View Difference", IconManager.imgic29, IconManager.imgic29, "View Difference", + "View Difference", 'T'); } public String getActionCommand() { diff --git a/src/main/java/ui/simulationtraceanalysis/latencyDetailedAnalysisMain.java b/src/main/java/ui/simulationtraceanalysis/LatencyDetailedAnalysisMain.java similarity index 98% rename from src/main/java/ui/simulationtraceanalysis/latencyDetailedAnalysisMain.java rename to src/main/java/ui/simulationtraceanalysis/LatencyDetailedAnalysisMain.java index 97f042e1e88a8623b78c422ce3aad0b795dab131..64a7115059f6ab29ce15e900bfc856aabef77f88 100644 --- a/src/main/java/ui/simulationtraceanalysis/latencyDetailedAnalysisMain.java +++ b/src/main/java/ui/simulationtraceanalysis/LatencyDetailedAnalysisMain.java @@ -6,8 +6,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Vector; import java.util.Map.Entry; +import java.util.Vector; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -19,6 +19,7 @@ import org.w3c.dom.Document; import org.xml.sax.SAXException; import myutil.GraphicLib; import myutil.TraceManager; +import simulationtraceanalysis.DependencyGraphTranslator; import tmltranslator.TMLMapping; import ui.MainGUI; import ui.SimulationTrace; @@ -31,7 +32,7 @@ import ui.tmldd.TMLArchiNode; import ui.util.IconManager; import ui.window.JDialogToChosePanel; -public class latencyDetailedAnalysisMain { +public class LatencyDetailedAnalysisMain { private Vector<String> checkedTransactionsFile1 = new Vector<String>(); private Vector<String> checkedTransactionsFile2 = new Vector<String>(); private Vector<String> checkedTransactionsFile = new Vector<String>(); @@ -47,7 +48,7 @@ public class latencyDetailedAnalysisMain { public static final String TML_COMP_TASK_DIAGRAM = "TML Component Task Diagram"; public static final String MODEL_PATH = "/siminfo/global/model"; - public latencyDetailedAnalysisMain(int callerId, MainGUI mainGUI, SimulationTrace selectedST, boolean b, boolean compare, int j) + public LatencyDetailedAnalysisMain(int callerId, MainGUI mainGUI, SimulationTrace selectedST, boolean b, boolean compare, int j) throws InterruptedException { try { setTc(new LatencyAnalysisParallelAlgorithms(this)); @@ -199,7 +200,7 @@ public class latencyDetailedAnalysisMain { } public void compareLatencyForXML(MainGUI mainGUI, SimulationTrace selectedST, boolean b) throws InterruptedException { - final DirectedGraphTranslator dgraph1, dgraph2; + final DependencyGraphTranslator dgraph1, dgraph2; try { checkedTransactionsFile = new Vector<String>(); latencyDetailedAnalysisForXML(mainGUI, selectedST, false, true, 1); diff --git a/src/main/java/ui/simulationtraceanalysis/SimulationTraceTableRenderer.java b/src/main/java/ui/simulationtraceanalysis/SimulationTraceTableRenderer.java new file mode 100644 index 0000000000000000000000000000000000000000..c2e383be5cd77499979c7dff3c1f6f239a4d5f84 --- /dev/null +++ b/src/main/java/ui/simulationtraceanalysis/SimulationTraceTableRenderer.java @@ -0,0 +1,52 @@ +package ui.simulationtraceanalysis; + +import java.awt.Color; +import java.awt.Component; +import java.util.Random; +import java.util.Vector; +import javax.swing.JTable; +import javax.swing.UIManager; +import javax.swing.table.DefaultTableCellRenderer; + +public class SimulationTraceTableRenderer extends DefaultTableCellRenderer { + private int row, col; + private Vector<Object> allCommands = new Vector<Object>(); + private Vector<Color> allColors = new Vector<Color>(); + + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + this.row = row; + this.col = column; + // Allow superclass to return rendering component. + return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + } + + protected void setValue(Object v) { + super.setValue(v); + if (v == null) { + setForeground(UIManager.getColor("Table.foreground")); + setBackground(UIManager.getColor("Table.background")); + return; + } else if (!allCommands.contains(v)) { + allCommands.add(v); + boolean x = true; + while (x) { + Random randomGenerator = new Random(); + int red = randomGenerator.nextInt(256); + int green = randomGenerator.nextInt(256); + int blue = randomGenerator.nextInt(256); + Color randomColour = new Color(red, green, blue); + if (!allColors.contains(randomColour)) { + allColors.add(randomColour); + x = false; + } + } + } + if (allCommands.contains(v)) { + setForeground(Color.yellow); + setBackground(allColors.get(allCommands.indexOf(v))); + } else { + setForeground(UIManager.getColor("Table.foreground")); + setBackground(UIManager.getColor("Table.background")); + } + } +} diff --git a/ttool/src/test/java/ui/ComparisonOfsimulationTracesInXML/ComparisonOfsimulationTraces.java b/ttool/src/test/java/ui/ComparisonOfsimulationTracesInXML/ComparisonOfsimulationTraces.java index 19746511f645744f850a31a53f0f237e23ccdb9e..db8173ba7908736482835727004b1b9b929c21fc 100644 --- a/ttool/src/test/java/ui/ComparisonOfsimulationTracesInXML/ComparisonOfsimulationTraces.java +++ b/ttool/src/test/java/ui/ComparisonOfsimulationTracesInXML/ComparisonOfsimulationTraces.java @@ -1,84 +1,60 @@ package ui.ComparisonOfsimulationTracesInXML; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; -import static org.junit.Assert.*; - -import java.awt.event.ActionEvent; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; -import org.junit.*; +import org.junit.BeforeClass; +import org.junit.Test; import org.xml.sax.SAXException; +import simulationtraceanalysis.CompareSimulationTrace; import ui.AbstractUITest; import ui.SimulationTrace; -import ui.interactivesimulation.JFrameCompareSimulationTraces; import ui.interactivesimulation.JFrameShowLatencyDetails; -import ui.interactivesimulation.JPanelCompareXmlGraph; - +import ui.simulationtraceanalysis.JFrameCompareSimulationTraces; public class ComparisonOfsimulationTraces extends AbstractUITest { - protected static SimulationTrace selectedST1; protected static SimulationTrace selectedST2; - protected static String STfilePath1; protected static String STfilePath2; - private static JFrameCompareSimulationTraces cSimTrace; - private static JPanelCompareXmlGraph newContentPane; + private static CompareSimulationTrace newContentPane; private static JFrameShowLatencyDetails showLatencyDetails; private static final String PATH1 = "/ui/xmlCompare/input/simple.xml"; private static final String PATH2 = "/ui/xmlCompare/input/simplifiedWithSecurity.xml"; - @BeforeClass public static void setUpBeforeClass() throws Exception { - STfilePath1 = getBaseResourcesDir() + PATH1; STfilePath2 = getBaseResourcesDir() + PATH2; - selectedST1 = new SimulationTrace("simple.xml", 6, STfilePath1); selectedST2 = new SimulationTrace("simplifiedWithSecurity.xml", 6, STfilePath2); - } - @Test public void loadTest() { assertNotNull(selectedST1); assertNotNull(selectedST2); - } - @Test public void parseXMLTest() throws SAXException, IOException, ParserConfigurationException { - cSimTrace = new JFrameCompareSimulationTraces(mainGUI, "Compare Simulation simulation", selectedST1, false); cSimTrace.setVisible(false); cSimTrace.parseXML(STfilePath1, STfilePath2); - assertNotNull(cSimTrace.getTransFile1()); assertNotNull(cSimTrace.getTransFile2()); - - newContentPane = new JPanelCompareXmlGraph(cSimTrace.getTransFile1(), cSimTrace.getTransFile2()); - newContentPane.setVisible(false); - } - @Test public void diffTest() throws SAXException, IOException, ParserConfigurationException { - + newContentPane = new CompareSimulationTrace(); + newContentPane.JPanelCompareXmlGraph(cSimTrace.getTransFile1(), cSimTrace.getTransFile2()); assertTrue(newContentPane.getTable().getRowCount() > 0); - } - - @Test - public void latencyTest() throws SAXException, IOException, ParserConfigurationException { + /* public void latencyTest() throws SAXException, IOException, ParserConfigurationException { JFrameShowLatencyDetails showLatencyDetails = new JFrameShowLatencyDetails(cSimTrace.getTransFile1(), cSimTrace.getTransFile2(), "CPU1_1", "Request SmartCard", "CPU1_1", "Send end", false); - showLatencyDetails.setVisible(false); - assertTrue(showLatencyDetails.getTable11().getRowCount() > 0); - - } - + }*/ } \ No newline at end of file diff --git a/ttool/src/test/java/ui/GraphLatencyAnalysis/CompareLatencyInSimulationTraces.java b/ttool/src/test/java/ui/GraphLatencyAnalysis/CompareLatencyInSimulationTraces.java index df611dd38742c5eb3ba4c737d6b9451e6fc17e3e..6bc3b0a250f42ec590c01979396db627ec72cbac 100644 --- a/ttool/src/test/java/ui/GraphLatencyAnalysis/CompareLatencyInSimulationTraces.java +++ b/ttool/src/test/java/ui/GraphLatencyAnalysis/CompareLatencyInSimulationTraces.java @@ -5,8 +5,8 @@ import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.util.HashMap; -import java.util.Vector; import java.util.Map.Entry; +import java.util.Vector; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPathExpressionException; @@ -15,210 +15,148 @@ import org.junit.Before; import org.junit.Test; import org.xml.sax.SAXException; +import simulationtraceanalysis.DependencyGraphTranslator; import ui.AbstractUITest; import ui.SimulationTrace; import ui.TMLArchiPanel; import ui.interactivesimulation.SimulationTransaction; -import ui.simulationtraceanalysis.DirectedGraphTranslator; import ui.simulationtraceanalysis.JFrameCompareLatencyDetail; import ui.simulationtraceanalysis.JFrameLatencyDetailedAnalysis; import ui.simulationtraceanalysis.LatencyAnalysisParallelAlgorithms; -import ui.simulationtraceanalysis.latencyDetailedAnalysisMain; +import ui.simulationtraceanalysis.LatencyDetailedAnalysisMain; public class CompareLatencyInSimulationTraces extends AbstractUITest { - private static final String INPUT_PATH = "/ui/graphLatencyAnalysis/input"; - private static final String simulationTracePathFile1 = INPUT_PATH + "/graphTestSimulationTrace.xml"; - private static final String simulationTracePathFile2 = INPUT_PATH + "/testFunc.xml"; private static final String modelPath = INPUT_PATH + "/GraphTestModel.xml"; - private static final String mappingDiagName = "Architecture2"; - private Vector<String> checkedTransactionsFile1 = new Vector<String>(); private Vector<String> checkedTransactionsFile2 = new Vector<String>(); - private static final int operator1ID = 44; private static final int operator2ID = 26; private static final int operator3ID = 40; private static final int operator4ID = 28; - private DirectedGraphTranslator dgraph1, dgraph2; + private DependencyGraphTranslator dgraph1, dgraph2; private static String task1, task2, task3, task4; private JFrameCompareLatencyDetail cld; - private latencyDetailedAnalysisMain latencyDetailedAnalysisMain; + private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain; private JFrameLatencyDetailedAnalysis jFrameLatencyDetailedAnalysis; - private Vector<SimulationTransaction> transFile1, transFile2; private SimulationTrace simT1, simT2; private File file1, file2; private int row, row2; - private HashMap<String, Integer> checkedT1 = new HashMap<String, Integer>(); private HashMap<String, Integer> checkedT2 = new HashMap<String, Integer>(); - // protected MainGUI mainGUI1 = null; - private static Object[][] dataDetailedByTask, dataDetailedByTask2, dataHWDelayByTask, dataHWDelayByTask2; public CompareLatencyInSimulationTraces() { - super(); - } @Before public void GraphLatencyAnalysis() throws XPathExpressionException, ParserConfigurationException, SAXException, IOException, InterruptedException { - mainGUI.openProjectFromFile(new File(getBaseResourcesDir() + modelPath)); - final TMLArchiPanel panel = findArchiPanel(mappingDiagName); - simT1 = new SimulationTrace("graphTestSimulationTrace", 6, (getBaseResourcesDir() + simulationTracePathFile1)); - - latencyDetailedAnalysisMain = new latencyDetailedAnalysisMain(3, mainGUI, simT1, false, false, 3); - latencyDetailedAnalysisMain.setCheckedTransactionsFile(new Vector<String>()); - + LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, simT1, false, false, 3); + LatencyDetailedAnalysisMain.setCheckedTransactionsFile(new Vector<String>()); try { - latencyDetailedAnalysisMain.latencyDetailedAnalysisForXML(mainGUI, simT1, false, true, 1); - latencyDetailedAnalysisMain.setTc(new LatencyAnalysisParallelAlgorithms(latencyDetailedAnalysisMain)); - - cld = new JFrameCompareLatencyDetail(latencyDetailedAnalysisMain, mainGUI, checkedTransactionsFile1, - latencyDetailedAnalysisMain.getMap1(), latencyDetailedAnalysisMain.getCpanels1(), simT1, false, - latencyDetailedAnalysisMain.getTc()); - + LatencyDetailedAnalysisMain.latencyDetailedAnalysisForXML(mainGUI, simT1, false, true, 1); + LatencyDetailedAnalysisMain.setTc(new LatencyAnalysisParallelAlgorithms(LatencyDetailedAnalysisMain)); + cld = new JFrameCompareLatencyDetail(LatencyDetailedAnalysisMain, mainGUI, checkedTransactionsFile1, + LatencyDetailedAnalysisMain.getMap1(), LatencyDetailedAnalysisMain.getCpanels1(), simT1, false, + LatencyDetailedAnalysisMain.getTc()); if (cld == null) { System.out.println("NULL Panel"); } else { cld.setVisible(false); } - } catch (XPathExpressionException | ParserConfigurationException | SAXException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } - - latencyDetailedAnalysisMain.getTc().getT().join(); + LatencyDetailedAnalysisMain.getTc().getT().join(); if (cld.getDgraph().getGraphsize() > 0) { dgraph1 = cld.getDgraph(); - checkedTransactionsFile1 = latencyDetailedAnalysisMain.getCheckedTransactionsFile(); - checkedT1 = latencyDetailedAnalysisMain.getCheckedT1(); + checkedTransactionsFile1 = LatencyDetailedAnalysisMain.getCheckedTransactionsFile(); + checkedT1 = LatencyDetailedAnalysisMain.getCheckedT1(); cld.setDgraph(null); - - latencyDetailedAnalysisMain.setCheckedTransactionsFile(new Vector<String>()); + LatencyDetailedAnalysisMain.setCheckedTransactionsFile(new Vector<String>()); simT2 = new SimulationTrace("graphTestSimulationTrace", 6, (getBaseResourcesDir() + simulationTracePathFile2)); - try { - - latencyDetailedAnalysisMain.latencyDetailedAnalysisForXML(mainGUI, simT2, false, true, 1); - + LatencyDetailedAnalysisMain.latencyDetailedAnalysisForXML(mainGUI, simT2, false, true, 1); } catch (XPathExpressionException | ParserConfigurationException | SAXException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } - - dgraph2 = new DirectedGraphTranslator(jFrameLatencyDetailedAnalysis, cld, latencyDetailedAnalysisMain.getMap1(), - latencyDetailedAnalysisMain.getCpanels1(), 3); - - checkedTransactionsFile2 = latencyDetailedAnalysisMain.getCheckedTransactionsFile(); - checkedT2 = latencyDetailedAnalysisMain.getCheckedT2(); - + dgraph2 = new DependencyGraphTranslator(LatencyDetailedAnalysisMain.getMap1()); + dgraph2.DrawDirectedGraph(); + checkedTransactionsFile2 = LatencyDetailedAnalysisMain.getCheckedTransactionsFile(); + checkedT2 = LatencyDetailedAnalysisMain.getCheckedT2(); } - } @Test public void parseFile() { - int graphsize = dgraph1.getGraphsize(); - assertTrue(1 > 0); - graphsize = dgraph2.getGraphsize(); - assertTrue(graphsize > 0); - assertTrue(checkedT1.size() == 3); - assertTrue(checkedT2.size() == 3); - for (Entry<String, Integer> cT : checkedT1.entrySet()) { - int id = cT.getValue(); String taskName = cT.getKey(); if (id == operator1ID) { task1 = taskName; - } else if (id == operator2ID) { task2 = taskName; - } } - for (Entry<String, Integer> cT : checkedT2.entrySet()) { - int id = cT.getValue(); String taskName = cT.getKey(); if (id == operator3ID) { task3 = taskName; - } else if (id == operator4ID) { task4 = taskName; - } } - file1 = new File(simT1.getFullPath()); file2 = new File(simT2.getFullPath()); - transFile1 = cld.parseFile(file1); transFile2 = cld.parseFile(file2); - cld.setDgraph2(dgraph2); - cld.latencyDetailedAnalysis(task1, task2, task3, task4, transFile1, transFile2, false, false, false); - cld.setVisible(false); - assertTrue(cld.getTableData().length > 0); assertTrue(cld.getTableData2().length > 0); assertTrue(cld.getTableData1MinMax().length > 0); assertTrue(cld.getTableData2MinMax().length > 0); - // test row 1 table 1 and row 1 table 2 - row = 1; row2 = 1; - dataDetailedByTask = dgraph1.getTaskByRowDetails(row); - dataDetailedByTask2 = dgraph2.getTaskByRowDetails(row2); - dataHWDelayByTask = dgraph1.getTaskHWByRowDetails(row); dataHWDelayByTask2 = dgraph2.getTaskHWByRowDetails(row2); - assertTrue(dataDetailedByTask.length > 0); assertTrue(dataDetailedByTask2.length > 0); assertTrue(dataHWDelayByTask.length > 0); assertTrue(dataHWDelayByTask2.length > 0); - // test max table 1 and max table 2 - dgraph1.getRowDetailsMinMax(row); dataDetailedByTask = dgraph1.getTasksByRowMinMax(row); - dgraph2.getRowDetailsMinMax(row2); dataDetailedByTask2 = dgraph2.getTasksByRowMinMax(row2); - dataHWDelayByTask = dgraph1.getTaskHWByRowDetailsMinMax(row); dataHWDelayByTask2 = dgraph2.getTaskHWByRowDetailsMinMax(row2); - assertTrue(dataDetailedByTask.length > 0); assertTrue(dataDetailedByTask2.length > 0); assertTrue(dataHWDelayByTask.length > 0); assertTrue(dataHWDelayByTask2.length > 0); - } - } \ No newline at end of file diff --git a/ttool/src/test/java/ui/GraphLatencyAnalysis/GraphLatencyAnalysis.java b/ttool/src/test/java/ui/GraphLatencyAnalysis/GraphLatencyAnalysis.java index b3ae083d4711e11bffa98423afdd642e08fc03ae..b81072a68bdb77fdd6d92b69f50f191b0b910ae8 100644 --- a/ttool/src/test/java/ui/GraphLatencyAnalysis/GraphLatencyAnalysis.java +++ b/ttool/src/test/java/ui/GraphLatencyAnalysis/GraphLatencyAnalysis.java @@ -2,19 +2,22 @@ package ui.GraphLatencyAnalysis; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; + import java.io.File; import java.util.HashMap; -import java.util.Vector; import java.util.Map.Entry; +import java.util.Vector; + import org.junit.Before; import org.junit.Test; + +import simulationtraceanalysis.DependencyGraphTranslator; import ui.AbstractUITest; import ui.SimulationTrace; import ui.TMLArchiPanel; import ui.interactivesimulation.SimulationTransaction; -import ui.simulationtraceanalysis.DirectedGraphTranslator; import ui.simulationtraceanalysis.JFrameLatencyDetailedAnalysis; -import ui.simulationtraceanalysis.latencyDetailedAnalysisMain; +import ui.simulationtraceanalysis.LatencyDetailedAnalysisMain; public class GraphLatencyAnalysis extends AbstractUITest { private static final String INPUT_PATH = "/ui/graphLatencyAnalysis/input"; @@ -28,10 +31,10 @@ public class GraphLatencyAnalysis extends AbstractUITest { private static final int OPERATOR2_ID = 26; private static String task1; private static String task2; - private static DirectedGraphTranslator dgt; + private static DependencyGraphTranslator dgt; private static Object[][] allLatencies, minMaxArray, taskHWByRowDetails, detailedLatency; private JFrameLatencyDetailedAnalysis latencyDetailedAnalysis; - private latencyDetailedAnalysisMain latencyDetailedAnalysisMain; + private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain; @Before public void GraphLatencyAnalysis() throws InterruptedException { @@ -45,10 +48,10 @@ public class GraphLatencyAnalysis extends AbstractUITest { } mainGUI.checkModelingSyntax(panel, true); SimulationTrace file2 = new SimulationTrace("graphTestSimulationTrace", 6, SIMULATIONTRACE_PATH); - latencyDetailedAnalysisMain = new latencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3); - latencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI); - latencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI); - latencyDetailedAnalysis = latencyDetailedAnalysisMain.getLatencyDetailedAnalysis(); + LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3); + LatencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI); + LatencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI); + latencyDetailedAnalysis = LatencyDetailedAnalysisMain.getLatencyDetailedAnalysis(); if (latencyDetailedAnalysis != null) { latencyDetailedAnalysis.setVisible(false); try { @@ -68,7 +71,7 @@ public class GraphLatencyAnalysis extends AbstractUITest { assertTrue(graphsize == 40); checkedDropDown = latencyDetailedAnalysis.getCheckedT(); assertTrue(checkedDropDown.size() == 3); - transFile1 = latencyDetailedAnalysisMain.getLatencyDetailedAnalysis().parseFile(new File(getBaseResourcesDir() + SIMULATIONTRACE_PATH)); + transFile1 = LatencyDetailedAnalysisMain.getLatencyDetailedAnalysis().parseFile(new File(getBaseResourcesDir() + SIMULATIONTRACE_PATH)); assertTrue(transFile1.size() == 175); for (Entry<String, Integer> cT : checkedDropDown.entrySet()) { int id = cT.getValue(); diff --git a/ttool/src/test/java/ui/GraphLatencyAnalysis/NestedStructurePLAN.java b/ttool/src/test/java/ui/GraphLatencyAnalysis/NestedStructurePLAN.java index a723594ff0971f1a4494a45fc029b579c419445f..ae2678b2dcd3ac09307ad5847d7433638a3c1167 100644 --- a/ttool/src/test/java/ui/GraphLatencyAnalysis/NestedStructurePLAN.java +++ b/ttool/src/test/java/ui/GraphLatencyAnalysis/NestedStructurePLAN.java @@ -3,28 +3,31 @@ package ui.GraphLatencyAnalysis; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; + import java.io.File; import java.util.HashMap; -import java.util.Vector; import java.util.Map.Entry; +import java.util.Vector; + import org.junit.Before; import org.junit.Test; + +import simulationtraceanalysis.DependencyGraphTranslator; +import ui.AbstractUITest; +import ui.SimulationTrace; import ui.TMLArchiPanel; import ui.interactivesimulation.SimulationTransaction; -import ui.simulationtraceanalysis.DirectedGraphTranslator; import ui.simulationtraceanalysis.JFrameLatencyDetailedAnalysis; -import ui.simulationtraceanalysis.latencyDetailedAnalysisMain; -import ui.AbstractUITest; -import ui.SimulationTrace; +import ui.simulationtraceanalysis.LatencyDetailedAnalysisMain; public class NestedStructurePLAN extends AbstractUITest { private static final String mapping_Diag_Name = "Architecture"; private static final String INPUT_PATH = "/ui/graphLatencyAnalysis/input"; private static final String SIMULATIONTRACE_PATH_FILE = INPUT_PATH + "/loopseqTrace.xml"; private static final String MODEL_PATH = INPUT_PATH + "/loopseqgraph.xml"; - private latencyDetailedAnalysisMain latencyDetailedAnalysisMain; + private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain; private JFrameLatencyDetailedAnalysis latencyDetailedAnalysis; - private static DirectedGraphTranslator dgt; + private static DependencyGraphTranslator dgt; private Vector<SimulationTransaction> transFile1; private HashMap<String, Integer> checkedDropDown = new HashMap<String, Integer>(); private static final int OPERATOR1_ID = 69; @@ -45,10 +48,10 @@ public class NestedStructurePLAN extends AbstractUITest { } mainGUI.checkModelingSyntax(panel, true); SimulationTrace file2 = new SimulationTrace("graphTestSimulationTrace", 6, SIMULATIONTRACE_PATH_FILE); - latencyDetailedAnalysisMain = new latencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3); - latencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI); - latencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI); - latencyDetailedAnalysis = latencyDetailedAnalysisMain.getLatencyDetailedAnalysis(); + LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3); + LatencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI); + LatencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI); + latencyDetailedAnalysis = LatencyDetailedAnalysisMain.getLatencyDetailedAnalysis(); if (latencyDetailedAnalysis != null) { latencyDetailedAnalysis.setVisible(false); try { @@ -120,7 +123,7 @@ public class NestedStructurePLAN extends AbstractUITest { assertTrue(dgt.edgeExists(52, 54)); assertFalse(dgt.edgeExists(40, 54)); assertFalse(dgt.edgeExists(40, 42)); - transFile1 = latencyDetailedAnalysisMain.getLatencyDetailedAnalysis().parseFile(new File(getBaseResourcesDir() + SIMULATIONTRACE_PATH_FILE)); + transFile1 = LatencyDetailedAnalysisMain.getLatencyDetailedAnalysis().parseFile(new File(getBaseResourcesDir() + SIMULATIONTRACE_PATH_FILE)); assertTrue(transFile1.size() == 38); checkedDropDown = latencyDetailedAnalysis.getCheckedT(); for (Entry<String, Integer> cT : checkedDropDown.entrySet()) { diff --git a/ttool/src/test/java/ui/GraphLatencyTainting/GraphLatencyAnalysisTainting.java b/ttool/src/test/java/ui/GraphLatencyTainting/GraphLatencyAnalysisTainting.java index 53ab5ad41de051287e8d3f904016071fc8595ab2..703674200babf91e37515c6fb8298410142fe9d1 100644 --- a/ttool/src/test/java/ui/GraphLatencyTainting/GraphLatencyAnalysisTainting.java +++ b/ttool/src/test/java/ui/GraphLatencyTainting/GraphLatencyAnalysisTainting.java @@ -5,68 +5,55 @@ import static org.junit.Assert.assertTrue; import java.io.File; import java.util.HashMap; -import java.util.Vector; import java.util.Map.Entry; +import java.util.Vector; import org.junit.Before; import org.junit.Test; +import simulationtraceanalysis.DependencyGraphTranslator; import ui.AbstractUITest; import ui.SimulationTrace; import ui.TMLArchiPanel; import ui.interactivesimulation.SimulationTransaction; -import ui.simulationtraceanalysis.DirectedGraphTranslator; import ui.simulationtraceanalysis.JFrameLatencyDetailedAnalysis; -import ui.simulationtraceanalysis.latencyDetailedAnalysisMain; +import ui.simulationtraceanalysis.LatencyDetailedAnalysisMain; public class GraphLatencyAnalysisTainting extends AbstractUITest { - // private static final String INPUT_PATH = "/ui/graphLatencyAnalysis/input"; - private static final String INPUT_PATH = "/ui/graphLatencyAnalysis/input"; private static final String simulationTracePath = INPUT_PATH + "/tainting.xml"; - private static final String modelPath = INPUT_PATH + "/GraphLatencyAnalysisTainting.xml"; - private static final String mappingDiagName = "Architecture"; private Vector<SimulationTransaction> transFile1; private Vector<String> dropDown; - private static final int operator1ID = 47; private static final int operator2ID = 37; private static String task1; private static String task2; - private static DirectedGraphTranslator dgt; - + private static DependencyGraphTranslator dgt; private static Object[][] allLatencies, minMaxArray, taskHWByRowDetails, detailedLatency; private JFrameLatencyDetailedAnalysis latencyDetailedAnalysis; - private latencyDetailedAnalysisMain latencyDetailedAnalysisMain; + private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain; private HashMap<String, Integer> checkedDropDown = new HashMap<String, Integer>(); @Before public void GraphLatencyAnalysis() throws InterruptedException { - mainGUI.openProjectFromFile(new File(getBaseResourcesDir() + modelPath)); - final TMLArchiPanel panel = findArchiPanel(mappingDiagName); - if (panel == null) { System.out.println("NULL Panel"); } else { System.out.println("Non NULL Panel"); } - mainGUI.checkModelingSyntax(panel, true); SimulationTrace file2 = new SimulationTrace("tainting", 6, simulationTracePath); - latencyDetailedAnalysisMain = new latencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3); - latencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI); - latencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI); - - latencyDetailedAnalysis = latencyDetailedAnalysisMain.getLatencyDetailedAnalysis(); - + LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3); + LatencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI); + LatencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI); + latencyDetailedAnalysis = LatencyDetailedAnalysisMain.getLatencyDetailedAnalysis(); if (latencyDetailedAnalysis != null) { latencyDetailedAnalysis.setVisible(false); - try { latencyDetailedAnalysis.getT().join(); } catch (InterruptedException e) { @@ -74,63 +61,40 @@ public class GraphLatencyAnalysisTainting extends AbstractUITest { e.printStackTrace(); } dgt = latencyDetailedAnalysis.getDgraph(); - } - } @Test public void parseFile() { - assertNotNull(latencyDetailedAnalysis); - int graphsize = dgt.getGraphsize(); - assertTrue(graphsize == 34); - checkedDropDown = latencyDetailedAnalysis.getCheckedT(); - assertTrue(checkedDropDown.size() == 2); - - transFile1 = latencyDetailedAnalysisMain.getLatencyDetailedAnalysis().parseFile(new File(getBaseResourcesDir() + simulationTracePath)); - + transFile1 = LatencyDetailedAnalysisMain.getLatencyDetailedAnalysis().parseFile(new File(getBaseResourcesDir() + simulationTracePath)); assertTrue(transFile1.size() > 0); - for (Entry<String, Integer> cT : checkedDropDown.entrySet()) { - int id = cT.getValue(); String taskName = cT.getKey(); if (id == operator1ID) { task1 = taskName; - } else if (id == operator2ID) { task2 = taskName; - } } - allLatencies = dgt.latencyDetailedAnalysis(task1, task2, transFile1, true, false); - assertTrue(allLatencies.length == 1); - assertTrue(allLatencies[0][4] == Integer.valueOf(105)); - minMaxArray = dgt.latencyMinMaxAnalysis(task1, task2, transFile1); dgt.getRowDetailsMinMax(1); taskHWByRowDetails = dgt.getTasksByRowMinMax(0); - assertTrue(minMaxArray.length > 0); - assertTrue(taskHWByRowDetails.length == 12); taskHWByRowDetails = dgt.getTaskHWByRowDetailsMinMax(0); assertTrue(taskHWByRowDetails.length == 6); - detailedLatency = dgt.getTaskByRowDetails(0); assertTrue(detailedLatency.length == 12); - detailedLatency = dgt.getTaskHWByRowDetails(0); assertTrue(detailedLatency.length == 3); - } - } \ No newline at end of file