diff --git a/src/main/java/tmltranslator/TMLSyntaxChecking.java b/src/main/java/tmltranslator/TMLSyntaxChecking.java index 354bd16f924f258c3ae942c34a401385a2088531..90308819a428f7fc9c3c7cc82ba246648ccf623f 100755 --- a/src/main/java/tmltranslator/TMLSyntaxChecking.java +++ b/src/main/java/tmltranslator/TMLSyntaxChecking.java @@ -123,6 +123,9 @@ public class TMLSyntaxChecking { checkPortName(); + //added by minh hiep + checkAValidPortName(); + } // Mapping or architecture @@ -199,6 +202,28 @@ public class TMLSyntaxChecking { } } + //added by minh hiep + public void checkAValidPortName() { + List<TMLChannel> tmlChannels = tmlm.getChannels(); + List<TMLEvent> tmlEvents = tmlm.getEvents(); + List<TMLRequest> tmlRequests = tmlm.getRequests(); + + for (TMLChannel channel : tmlChannels) { + if (!TMLTextSpecification.isAValidId(channel.getName())) + addError(null, null, WRONG_VARIABLE_IDENTIFIER + ": invalid port name", TMLError.ERROR_STRUCTURE); + } + + for (TMLEvent event : tmlEvents) { + if (!TMLTextSpecification.isAValidId(event.getName())) + addError(null, null, WRONG_VARIABLE_IDENTIFIER + ": invalid port name", TMLError.ERROR_STRUCTURE); + } + + for (TMLRequest request: tmlRequests) { + if (!TMLTextSpecification.isAValidId(request.getName())) + addError(null, null, WRONG_VARIABLE_IDENTIFIER + ": invalid port name", TMLError.ERROR_STRUCTURE); + } + } + public void checkPortName() { // checks if two ports with the same type (origin, destination) have the same name HashMap<String, TMLPort> origin = new HashMap<String, TMLPort>(); @@ -387,7 +412,6 @@ public class TMLSyntaxChecking { } } - int n = tactivity.nElements(); //TraceManager.addDev("Task" + t.getName()); for (int i = 0; i < n; i++) { diff --git a/src/main/java/ui/TAttribute.java b/src/main/java/ui/TAttribute.java index f5ff90c3033cd4c06f893dc7b1a4effc22385d2c..498e4155be691e320989b578552300a0e91bba2e 100644 --- a/src/main/java/ui/TAttribute.java +++ b/src/main/java/ui/TAttribute.java @@ -226,6 +226,23 @@ public class TAttribute { return (b1 && b2 && b3 && b4 && b5 && b6 && b7); } + //checking port name + //author : minh hiep + public static boolean isAValidPortName(String id, boolean checkKeyword, boolean checkUPPAALKeyword, boolean checkJavaKeyword, + boolean checkTMLKeyword) { + // test whether _id is a word + if (id.contains(",")) { + String [] splitName = id.split("\\s*,\\s*"); + for (int i = 0; i < splitName.length; i ++) { + if(!isAValidId(splitName[i],checkKeyword,checkUPPAALKeyword, checkJavaKeyword,checkTMLKeyword)) { + return false; + } + } + }else { + return isAValidId(id,checkKeyword,checkUPPAALKeyword, checkJavaKeyword,checkTMLKeyword); + } + return true; + } public static boolean isAValidInitialValue(int type, String value) { //boolean b; int val; diff --git a/src/main/java/ui/tmlcompd/TMLCPrimitivePort.java b/src/main/java/ui/tmlcompd/TMLCPrimitivePort.java index 29cbe118e509cfcdf5b552507bba79423467f377..63f8c97269b324d70d34504965d6c7eacd60f349 100755 --- a/src/main/java/ui/tmlcompd/TMLCPrimitivePort.java +++ b/src/main/java/ui/tmlcompd/TMLCPrimitivePort.java @@ -73,6 +73,8 @@ import ui.interactivesimulation.JFrameSimulationSDPanel; import javax.swing.*; import java.awt.*; +import java.util.ArrayList; +import java.util.List; import java.util.Vector; /** @@ -159,6 +161,7 @@ public abstract class TMLCPrimitivePort extends TGCScalableWithInternalComponent public int verification; + public String oldName; public TMLCPrimitivePort(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp) { super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp); @@ -610,6 +613,9 @@ public abstract class TMLCPrimitivePort extends TGCScalableWithInternalComponent TraceManager.addDev( "The Data flow type is: " + dataFlowType ); TraceManager.addDev( "The Associated event is: " + associatedEvent ); + oldName = getPortName(); + //TraceManager.addDev("old port name : " + oldName); + if (jda.hasNewData()) { try { maxSamples = Integer.decode(jda.getMaxSamples()).intValue(); @@ -622,8 +628,39 @@ public abstract class TMLCPrimitivePort extends TGCScalableWithInternalComponent isOrigin = jda.isOrigin(); isFinite = jda.isFinite(); isBlocking = jda.isBlocking(); - setPortName(jda.getParamName()); - commName = jda.getParamName(); + + /* is port name valid ? + * author : minh hiep + */ + String s = jda.getParamName(); + //TraceManager.addDev("port name : " + s); + + if ((s != null) && (s.length() > 0)) { + // Check whether this name is already in use, or not + + if (!TAttribute.isAValidPortName(s, false, true, false,false)) { + JOptionPane.showMessageDialog(frame, + "Could not change the name of the port: the new name (" + s + ") is not a valid name", + "Error", + JOptionPane.INFORMATION_MESSAGE); + return false; + } + + if (oldName.compareTo(s) != 0) { + if (((TMLComponentTaskDiagramPanel) tdp).namePrimitivePortInUse(this, s)) { + JOptionPane.showMessageDialog(frame, + "Error: the name (" + s + ") is already in use", + "Name modification", + JOptionPane.ERROR_MESSAGE); + return false; + } + } + setPortName(s); + commName = s; + } + + //setPortName(jda.getParamName()); + //commName = jda.getParamName(); isLossy = jda.isLossy(); lossPercentage = jda.getLossPercentage(); maxNbOfLoss = jda.getMaxNbOfLoss(); @@ -807,7 +844,20 @@ public abstract class TMLCPrimitivePort extends TGCScalableWithInternalComponent } if (elt.getTagName().equals("Prop")) { - commName = elt.getAttribute("commName"); + // checking the valid port name + oldName = getPortName(); + String s = elt.getAttribute("commName"); + //TraceManager.addDev("port name : " + s); + + if ((s != null) && (s.length() > 0)) { + // Check whether this name is already in use, or not + + if (!TAttribute.isAValidPortName(s, false, true, false,false)) { + throw new MalformedModelingException(); + } + + commName = s; + } try { // typep = Integer.decode(elt.getAttribute("commType")).intValue(); @@ -1149,7 +1199,4 @@ public abstract class TMLCPrimitivePort extends TGCScalableWithInternalComponent typePort = 2; return typePort; } - - - } diff --git a/src/main/java/ui/tmlcompd/TMLComponentTaskDiagramPanel.java b/src/main/java/ui/tmlcompd/TMLComponentTaskDiagramPanel.java index 6bff4804513d6b57b5b737269471195772b21e89..d67cda68855a90ebb9a4c44adbe7b58590d3b9f4 100755 --- a/src/main/java/ui/tmlcompd/TMLComponentTaskDiagramPanel.java +++ b/src/main/java/ui/tmlcompd/TMLComponentTaskDiagramPanel.java @@ -213,6 +213,43 @@ public class TMLComponentTaskDiagramPanel extends TDiagramPanel implements TDPWi return false; } + /* method created for checking valid port name + * author : minh hiep + * */ + public boolean namePrimitivePortInUse(TMLCPrimitivePort tmlcpp, String newName) { + List<TMLCPrimitiveComponent> pcompList = getPrimitiveComponentList(); + List<TMLCPrimitivePort> originPPorts = new ArrayList<>(); + List<TMLCPrimitivePort> destinationPPorts = new ArrayList<>(); + + for (TMLCPrimitiveComponent tmlcpc : pcompList) { + originPPorts.addAll(tmlcpc.getAllChannelsOriginPorts()); + originPPorts.addAll(tmlcpc.getAllEventsOriginPorts()); + originPPorts.addAll(tmlcpc.getAllRequestsOriginPorts()); + } + + for (TMLCPrimitiveComponent tmlcpc : pcompList) { + destinationPPorts.addAll(tmlcpc.getAllChannelsDestinationPorts()); + destinationPPorts.addAll(tmlcpc.getAllEventsDestinationPorts()); + destinationPPorts.addAll(tmlcpc.getAllRequestsDestinationPorts()); + } + + if (tmlcpp.isOrigin) { + for (TMLCPrimitivePort op : originPPorts) { + if (op.getPortName().equalsIgnoreCase(newName)) { + return true; + } + } + }else { + for (TMLCPrimitivePort dp : destinationPPorts) { + if (dp.getPortName().equalsIgnoreCase(newName)) { + return true; + } + } + } + return false; + } + + public List<TMLCRecordComponent> getRecordComponentList() { List<TMLCRecordComponent> ll = new LinkedList<TMLCRecordComponent>(); TGComponent tgc; diff --git a/ttool/src/test/java/ui/tmlcompd/TMLCPrimitivePortTest.java b/ttool/src/test/java/ui/tmlcompd/TMLCPrimitivePortTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4a659eb9fa51c626c4e7402102d5b0716353ad67 --- /dev/null +++ b/ttool/src/test/java/ui/tmlcompd/TMLCPrimitivePortTest.java @@ -0,0 +1,165 @@ +package ui.tmlcompd; + +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import tmltranslator.TMLSyntaxChecking; +import tmltranslator.TMLTextSpecification; +import ui.*; +import java.io.File; + +import static org.junit.Assert.*; + +public class TMLCPrimitivePortTest extends AbstractUITest { + static TDiagramPanel diagramPanel; + static TMLCChannelOutPort eventPortIn; + static TMLCChannelOutPort channelPortIn; + static TMLCChannelOutPort requestPortIn; + + static TMLCChannelOutPort eventPortOut; + static TMLCChannelOutPort channelPortOut; + static TMLCChannelOutPort requestPortOut; + + static TMLCPrimitiveComponent primitiveComponent1; + static TMLCPrimitiveComponent primitiveComponent2; + final String VALID_NAME_1 = "valid_name"; + final String VALID_NAME_2 = "valid_name_1, valid_name_2, valid_name_3"; + final String INVALID_NAME_1 = "1_name"; //name begins by number + final String INVALID_NAME_2 = "name 2"; // name with whitespace + final String INVALID_NAME_3 = "clock"; //one of UPPAAL keywords + final String INVALID_NAME_4 = "name?"; //name with specialized characters + final String INVALID_NAME_5 = ""; + final String INVALID_NAME_6 = "protected"; //one of java keywords + final String INVALID_NAME_7 = "exit"; //one of RTLOTOS keywords + final String INVALID_NAME_8 = "Natural"; //one of String type + final String INVALID_NAME_9 = "ENDTASK"; // one of TMLkeywords + final String INVALID_NAME_10 = "name1, 2name, name3"; //fault at "2name" + + final String CHANNEL_IN = "channel_in"; + final String CHANNEL_OUT = "channel_out"; + final String EVENT_IN = "event_in"; + final String EVENT_OUT = "event_out"; + final String REQUEST_IN = "request_in"; + final String REQUEST_OUT = "request_out"; + + + + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + RESOURCES_DIR = getBaseResourcesDir() + "/ui/tmlcompd/input/TestPortName.xml"; + //RESOURCES_DIR = "/home/pham/Documents/TToolDev/TTool/ttool/src/test/resources/ui/tmlcompd/input/TestPortName.xml"; + + } + + public TMLCPrimitivePortTest() { + super(); + mainGUI.openProjectFromFile(new File(RESOURCES_DIR)); + } + + @Before + public void setUp() throws Exception { + diagramPanel = null; + for(TURTLEPanel _tab : mainGUI.getTabs()) { + if(_tab instanceof TMLComponentDesignPanel) { + for (TDiagramPanel tdp : _tab.getPanels()) { + if (tdp instanceof TMLComponentTaskDiagramPanel) { + diagramPanel = tdp; + mainGUI.selectTab(tdp); + break; + } + } + break; + } + } + + + for (TGComponent tgc : diagramPanel.getComponentList()) { + if (tgc.getValue().equals("CompositeComponent")) { + for (TMLCPrimitiveComponent tmlcpp : ((TMLCCompositeComponent) tgc).getAllPrimitiveComponents()) { + if (tmlcpp.getValue().equals("PrimitiveComp1")) { + primitiveComponent1 = tmlcpp; + } + if (tmlcpp.getValue().equals("PrimitiveComp2")) { + primitiveComponent2 = tmlcpp; + } + } + } + } + + + if (diagramPanel != null && primitiveComponent1 != null && primitiveComponent2 != null) { + eventPortOut = new TMLCChannelOutPort(509, 672, -13, 187, -13, 583,true, primitiveComponent1, diagramPanel); + eventPortOut.isOrigin = true; + eventPortOut.typep = 1; + eventPortIn = new TMLCChannelOutPort(708, 694, -13, 187, -13, 578,true, primitiveComponent2, diagramPanel); + eventPortIn.isOrigin = false; + eventPortIn.typep = 1; + + channelPortOut = new TMLCChannelOutPort(509, 625, -13, 187, -13, 583,true, primitiveComponent1, diagramPanel); + channelPortOut.isOrigin = true; + channelPortOut.typep = 0; + channelPortIn = new TMLCChannelOutPort(708, 630, -13, 187, -13, 578,true, primitiveComponent2, diagramPanel); + channelPortIn.isOrigin = false; + channelPortIn.typep = 0; + + requestPortOut = new TMLCChannelOutPort(509, 730, -13, 187, -13, 583,true, primitiveComponent1, diagramPanel); + requestPortOut.isOrigin = true; + requestPortOut.typep = 2; + requestPortIn = new TMLCChannelOutPort(708, 747, -13, 187, -13, 578,true, primitiveComponent2, diagramPanel); + requestPortIn.isOrigin = false; + requestPortIn.typep = 2; + } + } + + + @Test + public void testEventPortName() throws Exception { + assertTrue("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(eventPortIn,EVENT_IN)); + assertTrue("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(eventPortOut,EVENT_OUT)); + assertFalse("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(eventPortOut,EVENT_IN)); + assertFalse("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(eventPortIn,EVENT_OUT)); + } + + @Test + public void testChannelPortName() throws Exception { + assertTrue("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(channelPortIn,CHANNEL_IN)); + assertTrue("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(channelPortOut,CHANNEL_OUT)); + assertFalse("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(channelPortOut,CHANNEL_IN)); + assertFalse("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(channelPortIn,CHANNEL_OUT)); + } + + @Test + public void tesRequestPortName() throws Exception { + assertTrue("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(requestPortIn,EVENT_IN)); + assertTrue("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(requestPortOut,EVENT_OUT)); + assertFalse("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(requestPortOut,REQUEST_IN)); + assertFalse("Test : Port name in use",((TMLComponentTaskDiagramPanel) diagramPanel).namePrimitivePortInUse(requestPortIn,REQUEST_OUT)); + } + + @Test + public void testIsAValidName()throws Exception { + assertTrue("valid name",TAttribute.isAValidPortName(VALID_NAME_1,true,true, true,true)); + assertTrue("valid name",TAttribute.isAValidPortName(VALID_NAME_2,true,true, true,true)); + assertFalse("name begins by number",TAttribute.isAValidPortName(INVALID_NAME_1,true,true, true,true)); + assertFalse("name with whitespace",TAttribute.isAValidPortName(INVALID_NAME_2,true,true, true,true)); + assertFalse("UPPAAL keyword",TAttribute.isAValidPortName(INVALID_NAME_3,false,true, false,false)); + assertFalse("name with specialized character",TAttribute.isAValidPortName(INVALID_NAME_4,true,true, true,true)); + assertFalse("empty name",TAttribute.isAValidPortName(INVALID_NAME_5,true,true, true,true)); + assertFalse("java keyword",TAttribute.isAValidPortName(INVALID_NAME_6,false,false, true,false)); + assertFalse("RTLOTOS keyword",TAttribute.isAValidPortName(INVALID_NAME_7,true,false, false,false)); + assertFalse("String type",TAttribute.isAValidPortName(INVALID_NAME_8,true,true, true,true)); + assertFalse("TML keyword",TAttribute.isAValidPortName(INVALID_NAME_9,false,false, false,true)); + assertFalse("fault at one of the port names",TAttribute.isAValidPortName(INVALID_NAME_10,true,true, true,true)); + } + + @Test + public void testIsAvalidId() throws Exception { + assertFalse("name begins by number",TMLTextSpecification.isAValidId(INVALID_NAME_1)); + assertFalse("name with whitespace",TMLTextSpecification.isAValidId(INVALID_NAME_2)); + assertFalse("name with specialized character",TMLTextSpecification.isAValidId(INVALID_NAME_4)); + assertFalse("empty name",TMLTextSpecification.isAValidId(INVALID_NAME_5)); + assertFalse("TML keyword",TMLTextSpecification.isAValidId(INVALID_NAME_9)); + assertTrue("valid name",TMLTextSpecification.isAValidId(VALID_NAME_1)); + } +} \ No newline at end of file diff --git a/ttool/src/test/resources/ui/tmlcompd/input/TestPortName.xml b/ttool/src/test/resources/ui/tmlcompd/input/TestPortName.xml new file mode 100644 index 0000000000000000000000000000000000000000..cb637a74e21458b52b754fed56f5a48868be53e7 --- /dev/null +++ b/ttool/src/test/resources/ui/tmlcompd/input/TestPortName.xml @@ -0,0 +1,612 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<TURTLEGMODELING version="1.0beta"> + +<Modeling type="TML Component Design" nameTab="DIPLODOCUS_C_Design" > +<TMLComponentTaskDiagramPanel name="TML Component Task Diagram" minX="10" maxX="2500" minY="10" maxY="1500" channels="true" events="true" requests="true" zoom="1.0" > +<CONNECTOR type="126" id="1" > +<cdparam x="535" y="658" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="Connector between ports" /> +<P1 x="535" y="557" id="38" /> +<P2 x="708" y="557" id="17" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="126" id="2" > +<cdparam x="535" y="593" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="Connector between ports" /> +<P1 x="535" y="492" id="36" /> +<P2 x="708" y="492" id="15" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="126" id="3" > +<cdparam x="535" y="526" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="Connector between ports" /> +<P1 x="535" y="414" id="34" /> +<P2 x="708" y="413" id="13" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="126" id="4" > +<cdparam x="449" y="468" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="Connector between ports" /> +<P1 x="535" y="356" id="32" /> +<P2 x="708" y="356" id="11" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="126" id="5" > +<cdparam x="878" y="469" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="Connector between ports" /> +<P1 x="535" y="317" id="30" /> +<P2 x="708" y="317" id="9" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="126" id="6" > +<cdparam x="1021" y="460" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="Connector between ports" /> +<P1 x="708" y="268" id="7" /> +<P2 x="535" y="268" id="28" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<COMPONENT type="1200" id="63" > +<cdparam x="294" y="149" /> +<sizeparam width="672" height="717" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="Composite component" value="CompositeComponent" /> +<TGConnectingPoint num="0" id="55" /> +<TGConnectingPoint num="1" id="56" /> +<TGConnectingPoint num="2" id="57" /> +<TGConnectingPoint num="3" id="58" /> +<TGConnectingPoint num="4" id="59" /> +<TGConnectingPoint num="5" id="60" /> +<TGConnectingPoint num="6" id="61" /> +<TGConnectingPoint num="7" id="62" /> +<extraparam> +<info hiddeni="false" /> +</extraparam> +</COMPONENT> +<SUBCOMPONENT type="1202" id="27" > +<father id="63" num="0" /> +<cdparam x="721" y="220" /> +<sizeparam width="200" height="591" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="472" minY="0" maxY="126" /> +<infoparam name="Primitive component" value="PrimitiveComp2" /> +<TGConnectingPoint num="0" id="19" /> +<TGConnectingPoint num="1" id="20" /> +<TGConnectingPoint num="2" id="21" /> +<TGConnectingPoint num="3" id="22" /> +<TGConnectingPoint num="4" id="23" /> +<TGConnectingPoint num="5" id="24" /> +<TGConnectingPoint num="6" id="25" /> +<TGConnectingPoint num="7" id="26" /> +<extraparam> +<Data isAttacker="No" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="8" > +<father id="27" num="0" /> +<cdparam x="708" y="255" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="578" /> +<infoparam name="Primitive port" value="Channel channel_in" /> +<TGConnectingPoint num="0" id="7" /> +<extraparam> +<Prop commName="channel_in" commType="0" origin="false" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="10" > +<father id="27" num="1" /> +<cdparam x="708" y="304" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="578" /> +<infoparam name="Primitive port" value="Event event_in" /> +<TGConnectingPoint num="0" id="9" /> +<extraparam> +<Prop commName="event_in" commType="1" origin="false" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="12" > +<father id="27" num="2" /> +<cdparam x="708" y="343" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="578" /> +<infoparam name="Primitive port" value="Request request_in" /> +<TGConnectingPoint num="0" id="11" /> +<extraparam> +<Prop commName="request_in" commType="2" origin="false" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="14" > +<father id="27" num="3" /> +<cdparam x="708" y="400" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="578" /> +<infoparam name="Primitive port" value="Channel channel_in_1" /> +<TGConnectingPoint num="0" id="13" /> +<extraparam> +<Prop commName="channel_in_1" commType="0" origin="false" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="16" > +<father id="27" num="4" /> +<cdparam x="708" y="479" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="578" /> +<infoparam name="Primitive port" value="Event event_in_1" /> +<TGConnectingPoint num="0" id="15" /> +<extraparam> +<Prop commName="event_in_1" commType="1" origin="false" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="18" > +<father id="27" num="5" /> +<cdparam x="708" y="544" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="578" /> +<infoparam name="Primitive port" value="Request request_in_1" /> +<TGConnectingPoint num="0" id="17" /> +<extraparam> +<Prop commName="request_in_1" commType="2" origin="false" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1202" id="54" > +<father id="63" num="1" /> +<cdparam x="322" y="221" /> +<sizeparam width="200" height="596" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="472" minY="0" maxY="121" /> +<infoparam name="Primitive component" value="PrimitiveComp1" /> +<TGConnectingPoint num="0" id="46" /> +<TGConnectingPoint num="1" id="47" /> +<TGConnectingPoint num="2" id="48" /> +<TGConnectingPoint num="3" id="49" /> +<TGConnectingPoint num="4" id="50" /> +<TGConnectingPoint num="5" id="51" /> +<TGConnectingPoint num="6" id="52" /> +<TGConnectingPoint num="7" id="53" /> +<extraparam> +<Data isAttacker="No" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="29" > +<father id="54" num="0" /> +<cdparam x="509" y="255" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="583" /> +<infoparam name="Primitive port" value="Channel channel_out" /> +<TGConnectingPoint num="0" id="28" /> +<extraparam> +<Prop commName="channel_out" commType="0" origin="true" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="31" > +<father id="54" num="1" /> +<cdparam x="509" y="304" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="583" /> +<infoparam name="Primitive port" value="Event event_out" /> +<TGConnectingPoint num="0" id="30" /> +<extraparam> +<Prop commName="event_out" commType="1" origin="true" finite="true" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="33" > +<father id="54" num="2" /> +<cdparam x="509" y="343" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="583" /> +<infoparam name="Primitive port" value="Request request_out" /> +<TGConnectingPoint num="0" id="32" /> +<extraparam> +<Prop commName="request_out" commType="2" origin="true" finite="false" blocking="false" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="35" > +<father id="54" num="3" /> +<cdparam x="509" y="401" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="583" /> +<infoparam name="Primitive port" value="Channel channel_in_1" /> +<TGConnectingPoint num="0" id="34" /> +<extraparam> +<Prop commName="channel_in_1" commType="0" origin="true" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="37" > +<father id="54" num="4" /> +<cdparam x="509" y="479" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="583" /> +<infoparam name="Primitive port" value="Event event_out_1" /> +<TGConnectingPoint num="0" id="36" /> +<extraparam> +<Prop commName="event_out_1" commType="1" origin="true" finite="true" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="39" > +<father id="54" num="5" /> +<cdparam x="509" y="544" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="583" /> +<infoparam name="Primitive port" value="Request request_out_1" /> +<TGConnectingPoint num="0" id="38" /> +<extraparam> +<Prop commName="request_out_1" commType="2" origin="true" finite="false" blocking="false" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> + + +</TMLComponentTaskDiagramPanel> + +<TMLActivityDiagramPanel name="PrimitiveComp1" minX="10" maxX="2500" minY="10" maxY="1500" > +<COMPONENT type="1001" id="65" > +<cdparam x="397" y="440" /> +<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="stop state" value="null" /> +<TGConnectingPoint num="0" id="64" /> +</COMPONENT> + +<COMPONENT type="1001" id="67" > +<cdparam x="302" y="444" /> +<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="stop state" value="null" /> +<TGConnectingPoint num="0" id="66" /> +</COMPONENT> + +<COMPONENT type="1008" id="70" > +<cdparam x="271" y="326" /> +<sizeparam width="82" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<enabled value="true" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="send event" value="event_out()" /> +<TGConnectingPoint num="0" id="68" /> +<TGConnectingPoint num="1" id="69" /> +<extraparam> +<Data eventName="event_out" nbOfParams="5" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1006" id="73" > +<cdparam x="355" y="324" /> +<sizeparam width="105" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<enabled value="true" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="write channel" value="channel_out(1)" /> +<TGConnectingPoint num="0" id="71" /> +<TGConnectingPoint num="1" id="72" /> +<extraparam> +<Data channelName="channel_out" nbOfSamples="1" secPattern="" isAttacker="No" isEncForm="Yes" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1012" id="81" > +<cdparam x="392" y="183" /> +<sizeparam width="30" height="30" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="choice" value="null" /> +<TGConnectingPoint num="0" id="77" /> +<TGConnectingPoint num="1" id="78" /> +<TGConnectingPoint num="2" id="79" /> +<TGConnectingPoint num="3" id="80" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="74" > +<father id="81" num="0" /> +<cdparam x="367" y="193" /> +<sizeparam width="14" height="15" minWidth="10" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-75" maxX="-20" minY="10" maxY="35" /> +<infoparam name="guard 1" value="[ ]" /> +</SUBCOMPONENT> +<SUBCOMPONENT type="-1" id="75" > +<father id="81" num="1" /> +<cdparam x="427" y="193" /> +<sizeparam width="14" height="15" minWidth="10" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="35" maxX="55" minY="10" maxY="35" /> +<infoparam name="guard 2" value="[ ]" /> +</SUBCOMPONENT> +<SUBCOMPONENT type="-1" id="76" > +<father id="81" num="2" /> +<cdparam x="412" y="228" /> +<sizeparam width="14" height="15" minWidth="10" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="20" maxX="40" minY="45" maxY="70" /> +<infoparam name="guard 3" value="[ ]" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="83" > +<cdparam x="400" y="50" /> +<sizeparam width="15" height="15" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="start state" value="null" /> +<TGConnectingPoint num="0" id="82" /> +</COMPONENT> + +<CONNECTOR type="115" id="85" > +<cdparam x="367" y="198" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="367" y="198" id="78" /> +<P2 x="312" y="321" id="68" /> +<Point x="312" y="198" /> +<AutomaticDrawing data="true" /> +</CONNECTOR><SUBCOMPONENT type="-1" id="84" > +<father id="85" num="0" /> +<cdparam x="312" y="198" /> +<sizeparam width="1" height="1" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="point " value="null" /> +</SUBCOMPONENT> + +<CONNECTOR type="115" id="86" > +<cdparam x="407" y="65" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="407" y="65" id="82" /> +<P2 x="407" y="173" id="77" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="87" > +<cdparam x="407" y="238" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="407" y="238" id="80" /> +<P2 x="407" y="319" id="71" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="88" > +<cdparam x="312" y="351" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="312" y="351" id="69" /> +<P2 x="312" y="439" id="66" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="89" > +<cdparam x="407" y="349" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="407" y="349" id="72" /> +<P2 x="407" y="435" id="64" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="PrimitiveComp2" minX="10" maxX="2500" minY="10" maxY="1500" > +<COMPONENT type="1001" id="91" > +<cdparam x="520" y="416" /> +<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="stop state" value="null" /> +<TGConnectingPoint num="0" id="90" /> +</COMPONENT> + +<COMPONENT type="1001" id="93" > +<cdparam x="397" y="418" /> +<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="stop state" value="null" /> +<TGConnectingPoint num="0" id="92" /> +</COMPONENT> + +<COMPONENT type="1010" id="96" > +<cdparam x="492" y="302" /> +<sizeparam width="76" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<enabled value="true" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="wait event" value="event_in() " /> +<TGConnectingPoint num="0" id="94" /> +<TGConnectingPoint num="1" id="95" /> +<extraparam> +<Data eventName="event_in" nbOfParams="5" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1009" id="99" > +<cdparam x="358" y="296" /> +<sizeparam width="99" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<enabled value="true" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="read channel" value="channel_in(1) " /> +<TGConnectingPoint num="0" id="97" /> +<TGConnectingPoint num="1" id="98" /> +<extraparam> +<Data channelName="channel_in" nbOfSamples="1" secPattern="" isAttacker="No" isEncForm="Yes" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1012" id="107" > +<cdparam x="392" y="175" /> +<sizeparam width="30" height="30" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="choice" value="null" /> +<TGConnectingPoint num="0" id="103" /> +<TGConnectingPoint num="1" id="104" /> +<TGConnectingPoint num="2" id="105" /> +<TGConnectingPoint num="3" id="106" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="100" > +<father id="107" num="0" /> +<cdparam x="367" y="185" /> +<sizeparam width="14" height="15" minWidth="10" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-75" maxX="-20" minY="10" maxY="35" /> +<infoparam name="guard 1" value="[ ]" /> +</SUBCOMPONENT> +<SUBCOMPONENT type="-1" id="101" > +<father id="107" num="1" /> +<cdparam x="427" y="185" /> +<sizeparam width="14" height="15" minWidth="10" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="35" maxX="55" minY="10" maxY="35" /> +<infoparam name="guard 2" value="[ ]" /> +</SUBCOMPONENT> +<SUBCOMPONENT type="-1" id="102" > +<father id="107" num="2" /> +<cdparam x="412" y="220" /> +<sizeparam width="14" height="15" minWidth="10" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="20" maxX="40" minY="45" maxY="70" /> +<infoparam name="guard 3" value="[ ]" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="109" > +<cdparam x="400" y="50" /> +<sizeparam width="15" height="15" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="start state" value="null" /> +<TGConnectingPoint num="0" id="108" /> +</COMPONENT> + +<CONNECTOR type="115" id="111" > +<cdparam x="447" y="190" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="447" y="190" id="105" /> +<P2 x="530" y="297" id="94" /> +<Point x="530" y="190" /> +<AutomaticDrawing data="true" /> +</CONNECTOR><SUBCOMPONENT type="-1" id="110" > +<father id="111" num="0" /> +<cdparam x="530" y="190" /> +<sizeparam width="1" height="1" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="point " value="null" /> +</SUBCOMPONENT> + +<CONNECTOR type="115" id="112" > +<cdparam x="407" y="65" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="407" y="65" id="108" /> +<P2 x="407" y="165" id="103" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="113" > +<cdparam x="407" y="230" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="407" y="230" id="106" /> +<P2 x="407" y="291" id="97" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="114" > +<cdparam x="407" y="321" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="407" y="321" id="98" /> +<P2 x="407" y="413" id="92" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="115" > +<cdparam x="530" y="327" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="530" y="327" id="95" /> +<P2 x="530" y="411" id="90" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +</Modeling> + + + + +</TURTLEGMODELING> \ No newline at end of file