diff --git a/src/main/java/tmltranslator/TMLActivityElement.java b/src/main/java/tmltranslator/TMLActivityElement.java index d067adb925c69e6e0204b8f01ecb8d9fd166e6c6..d424e012436e0ad98ee0ffc3581e4f8d8d38f748 100755 --- a/src/main/java/tmltranslator/TMLActivityElement.java +++ b/src/main/java/tmltranslator/TMLActivityElement.java @@ -54,7 +54,10 @@ import java.util.Vector; public abstract class TMLActivityElement extends TMLElement { protected Vector<TMLActivityElement> nexts; public SecurityPattern securityPattern; - private String value=""; + private String value = ""; + private boolean canBeCheckedForAccessibility = false; + private boolean accessibility = false; + public TMLActivityElement(String _name, Object _referenceObject) { super(_name, _referenceObject); @@ -153,4 +156,19 @@ public abstract class TMLActivityElement extends TMLElement { return Objects.equals(value,tmlActEtls.getValue()) && comp.isTMLActivityEltListEquals(nexts,tmlActEtls.getNexts()); } + + public void setCheckableAccessibility(boolean b) { + canBeCheckedForAccessibility = b; + } + public boolean hasCheckableAccessibility() { + return canBeCheckedForAccessibility; + } + + public void setCheckAccessibility(boolean b) { + accessibility = b; + } + + public boolean hasCheckedAccessibility() { + return accessibility; + } } diff --git a/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java b/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java index 8bd1450be9dbdddf3c91c7b3c5eb7f9fdbab0a6f..03eca06892bd8f45bdda72167a5f17745a86a05f 100644 --- a/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java +++ b/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java @@ -40,8 +40,7 @@ package tmltranslator.toavatar; import avatartranslator.*; import myutil.TraceManager; import tmltranslator.*; -import ui.TGComponent; -//import ui.tmlcompd.TMLCPrimitivePort; +//import ui.TGComponent; import java.util.ArrayList; import java.util.HashMap; @@ -94,8 +93,11 @@ public class FullTML2Avatar { boolean mc = true; boolean security = false; - public FullTML2Avatar(TMLModeling<?> tmlmodel) { + private Object referenceObject; + + public FullTML2Avatar(TMLModeling<?> tmlmodel, Object _referenceObject) { this.tmlmodel = tmlmodel; + referenceObject = _referenceObject; allStates = new ArrayList<String>(); attrsToCheck = new ArrayList<String>(); @@ -110,7 +112,7 @@ public class FullTML2Avatar { //TODO: Put back numeric guards //TODO: Calculate for temp variable if (tmlmodel.getReference() != null) { - this.avspec = new AvatarSpecification("spec", ((TGComponent)((tmlmodel.getReference()))).getTDiagramPanel().tp); + this.avspec = new AvatarSpecification("spec", referenceObject); } else { this.avspec = new AvatarSpecification("spec", null); } @@ -866,14 +868,9 @@ public class FullTML2Avatar { TMLRequest req = sr.getRequest(); AvatarSignal sig; - boolean checkAcc = false; - if (ae.getReferenceObject() != null) { - checkAcc = ((TGComponent) ae.getReferenceObject()).getCheckableAccessibility(); - } - boolean checked = false; - if (ae.getReferenceObject() != null) { - checked = ((TGComponent) ae.getReferenceObject()).hasCheckedAccessibility(); - } + + boolean checkAcc = ae.hasCheckableAccessibility(); + boolean checked = ae.hasCheckedAccessibility(); AvatarState signalState = new AvatarState("signalstate_" + reworkStringName(ae.getName()) + "_" + reworkStringName(req.getName()), ae.getReferenceObject(), block, checkAcc, checked); @@ -1066,14 +1063,9 @@ public class FullTML2Avatar { } else if (ae instanceof TMLActivityElementEvent) { TMLActivityElementEvent aee = (TMLActivityElementEvent) ae; TMLEvent evt = aee.getEvent(); - boolean checkAcc = false; - if (ae.getReferenceObject() != null) { - checkAcc = ((TGComponent) ae.getReferenceObject()).getCheckableAccessibility(); - } - boolean checked = false; - if (ae.getReferenceObject() != null) { - checked = ((TGComponent) ae.getReferenceObject()).hasCheckedAccessibility(); - } + + boolean checkAcc = ae.hasCheckableAccessibility(); + boolean checked = ae.hasCheckedAccessibility(); AvatarState signalState = new AvatarState("signalstate_" + reworkStringName(ae.getName() + "_" + evt.getName()), ae.getReferenceObject(), block, checkAcc, checked); AvatarTransition signalTran = new AvatarTransition(block, "__after_signalstate_" + ae.getName() + "_" + evt.getName(), ae.getReferenceObject()); @@ -1598,15 +1590,8 @@ public class FullTML2Avatar { //String nv = getName(ch.getName()) + "_chData"; - - boolean checkAcc = false; - if (ae.getReferenceObject() != null) { - checkAcc = ((TGComponent) ae.getReferenceObject()).getCheckableAccessibility(); - } - boolean checked = false; - if (ae.getReferenceObject() != null) { - checked = ((TGComponent) ae.getReferenceObject()).hasCheckedAccessibility(); - } + boolean checkAcc = ae.hasCheckableAccessibility(); + boolean checked = ae.hasCheckedAccessibility(); AvatarState signalState = new AvatarState("signalstate_" + reworkStringName(ae.getName() + "_" + ch.getName()), ae.getReferenceObject(), block, checkAcc, checked); AvatarTransition signalTran = new AvatarTransition(block, "__after_signalstate_" + ae.getName() + "_" + ch.getName(), ae.getReferenceObject()); diff --git a/src/main/java/ui/ActivityDiagram2TMLTranslator.java b/src/main/java/ui/ActivityDiagram2TMLTranslator.java index 4bdec9e3399abe4e1ca2329cdcb7cc93a66cd089..33d77df48c7e692a145803649b649ccd4ece21a5 100644 --- a/src/main/java/ui/ActivityDiagram2TMLTranslator.java +++ b/src/main/java/ui/ActivityDiagram2TMLTranslator.java @@ -126,7 +126,7 @@ public class ActivityDiagram2TMLTranslator { tmp = ((TMLADActionState) (tgc)).getAction(); tmp = modifyActionString(tmp); tmlaction.setAction(tmp); - activity.addElement(tmlaction); + addElement(activity, tmlaction, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlaction, tgc); @@ -143,20 +143,20 @@ public class ActivityDiagram2TMLTranslator { tmp = modifyActionString(tmp); tmlrandom.setMaxValue(tmp); tmlrandom.setFunctionId(tmladrandom.getFunctionId()); - activity.addElement(tmlrandom); + addElement(activity, tmlrandom, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlrandom, tgc); } else if (tgc instanceof TMLADChoice) { tmlchoice = new TMLChoice("choice", tgc); // Guards are added at the same time as next activities - activity.addElement(tmlchoice); + addElement(activity, tmlchoice, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlchoice, tgc); } else if (tgc instanceof TMLADSelectEvt) { tmlselectevt = new TMLSelectEvt("select", tgc); - activity.addElement(tmlselectevt); + addElement(activity, tmlselectevt, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlselectevt, tgc); @@ -169,7 +169,7 @@ public class ActivityDiagram2TMLTranslator { tmlexeci.setAction("0"); tmlexeci.setValue("0"); } - activity.addElement(tmlexeci); + addElement(activity, tmlexeci, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlexeci, tgc); @@ -183,13 +183,13 @@ public class ActivityDiagram2TMLTranslator { tmlexecii.setMinDelay("0"); tmlexecii.setMaxDelay("0"); } - activity.addElement(tmlexecii); + addElement(activity, tmlexecii, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlexecii, tgc); } else if (tgc instanceof TMLADEncrypt) { tmlexecc = new TMLExecC("encrypt_" + ((TMLADEncrypt) tgc).securityContext, tgc); - activity.addElement(tmlexecc); + addElement(activity, tmlexecc, tgc); SecurityPattern sp = securityPatterns.get(((TMLADEncrypt) tgc).securityContext); if (sp == null) { //Throw error for missing security pattern @@ -207,7 +207,7 @@ public class ActivityDiagram2TMLTranslator { } } else if (tgc instanceof TMLADDecrypt) { tmlexecc = new TMLExecC("decrypt_" + ((TMLADDecrypt) tgc).securityContext, tgc); - activity.addElement(tmlexecc); + addElement(activity, tmlexecc, tgc); SecurityPattern sp = securityPatterns.get(((TMLADDecrypt) tgc).securityContext); if (sp == null) { //Throw error for missing security pattern @@ -234,7 +234,7 @@ public class ActivityDiagram2TMLTranslator { tmlexecc.setAction("0"); } - activity.addElement(tmlexecc); + addElement(activity, tmlexecc, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlexecc, tgc); @@ -247,7 +247,7 @@ public class ActivityDiagram2TMLTranslator { tmlexecci.setMinDelay("0"); tmlexecci.setMaxDelay("0"); } - activity.addElement(tmlexecci); + addElement(activity, tmlexecci, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlexecci, tgc); @@ -262,7 +262,7 @@ public class ActivityDiagram2TMLTranslator { } tmldelay.setUnit(((TMLADDelay) tgc).getUnit()); tmldelay.setActiveDelay(((TMLADDelay) tgc).getActiveDelayEnable()); - activity.addElement(tmldelay); + addElement(activity, tmldelay, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmldelay, tgc); @@ -277,7 +277,7 @@ public class ActivityDiagram2TMLTranslator { } tmldelay.setUnit(((TMLADDelayInterval) tgc).getUnit()); tmldelay.setActiveDelay(((TMLADDelayInterval) tgc).getActiveDelayEnableValue()); - activity.addElement(tmldelay); + addElement(activity, tmldelay, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmldelay, tgc); @@ -291,7 +291,7 @@ public class ActivityDiagram2TMLTranslator { tmlforloop.setCondition(modifyString(tmp)); tmlforloop.setIncrement(modifyActionString(((TMLADForLoop) tgc).getIncrement())); - activity.addElement(tmlforloop); + addElement(activity, tmlforloop, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlforloop, tgc); @@ -305,7 +305,7 @@ public class ActivityDiagram2TMLTranslator { tmlforloop.setInit(sl + " = 0"); tmlforloop.setCondition(sl + "<" + modifyString(tgc.getValue())); tmlforloop.setIncrement(sl + " = " + sl + " + 1"); - activity.addElement(tmlforloop); + addElement(activity, tmlforloop, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlforloop, tgc); staticLoopIndex++; @@ -321,23 +321,23 @@ public class ActivityDiagram2TMLTranslator { tmlforloop.setCondition(""); tmlforloop.setIncrement(""); tmlforloop.setInfinite(true); - activity.addElement(tmlforloop); + addElement(activity, tmlforloop, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlforloop, tgc); staticLoopIndex++; tmlstopstate = new TMLStopState("Stop after infinite loop", null); - activity.addElement(tmlstopstate); + addElement(activity, tmlstopstate, tgc); tmlforloop.addNext(tmlstopstate); } else if (tgc instanceof TMLADSequence) { tmlsequence = new TMLSequence("seq", tgc); - activity.addElement(tmlsequence); + addElement(activity, tmlsequence, tgc); corrTgElement.addCor(tmlsequence, tgc); } else if (tgc instanceof TMLADUnorderedSequence) { tmlrsequence = new TMLRandomSequence("rseq", tgc); - activity.addElement(tmlrsequence); + addElement(activity, tmlrsequence, tgc); corrTgElement.addCor(tmlrsequence, tgc); } else if (tgc instanceof TMLADReadChannel) { @@ -412,6 +412,7 @@ public class ActivityDiagram2TMLTranslator { tmlreadchannel.setAttacker(true); } activity.addElement(tmlreadchannel); + addElement(activity, tmlreadchannel, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlreadchannel, tgc); } @@ -466,7 +467,7 @@ public class ActivityDiagram2TMLTranslator { checkingErrors.add(ce); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.UNKNOWN); } else { - activity.addElement(tmlsendevent); + addElement(activity, tmlsendevent, tgc); corrTgElement.addCor(tmlsendevent, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); } @@ -524,7 +525,7 @@ public class ActivityDiagram2TMLTranslator { checkingErrors.add(ce); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.UNKNOWN); } else { - activity.addElement(tmlsendrequest); + addElement(activity, tmlsendrequest, tgc); corrTgElement.addCor(tmlsendrequest, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); } @@ -592,7 +593,7 @@ public class ActivityDiagram2TMLTranslator { } else if (tgc instanceof TMLADStopState) { tmlstopstate = new TMLStopState("stop state", tgc); - activity.addElement(tmlstopstate); + addElement(activity, tmlstopstate, tgc); corrTgElement.addCor(tmlstopstate, tgc); } else if (tgc instanceof TMLADNotifiedEvent) { @@ -655,7 +656,7 @@ public class ActivityDiagram2TMLTranslator { tmlnotifiedevent.setVariable(modifyString(((TMLADNotifiedEvent) tgc).getVariable())); - activity.addElement(tmlnotifiedevent); + addElement(activity, tmlnotifiedevent, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlnotifiedevent, tgc); } @@ -723,7 +724,7 @@ public class ActivityDiagram2TMLTranslator { checkingErrors.add(ce); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.UNKNOWN); } else { - activity.addElement(tmlwaitevent); + addElement(activity, tmlwaitevent, tgc); corrTgElement.addCor(tmlwaitevent, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); } @@ -815,7 +816,7 @@ public class ActivityDiagram2TMLTranslator { if (tmltask.isAttacker()) { tmlwritechannel.setAttacker(true); } - activity.addElement(tmlwritechannel); + addElement(activity, tmlwritechannel, tgc); ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK); corrTgElement.addCor(tmlwritechannel, tgc); } @@ -1006,6 +1007,14 @@ public class ActivityDiagram2TMLTranslator { //TraceManager.addDev("Activity:" + tmltask.getActivityDiagram().toXML() ); } + private void addElement(TMLActivity _activity, TMLActivityElement _elt, TGComponent _ref) { + _activity.addElement(_elt); + if (_ref != null) { + _elt.setCheckableAccessibility(_ref.hasCheckableAccessibility()); + _elt.setCheckAccessibility(_ref.hasCheckedAccessibility()); + } + } + private String modifyActionString(String _input) { int index = _input.indexOf("++"); boolean b1, b2; diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java index fd6b39b810008fd60c29f41d2ada9699c6aa4a41..ca58f4afceb943c0249ccd9cabbbe33066ee06ab 100644 --- a/src/main/java/ui/GTURTLEModeling.java +++ b/src/main/java/ui/GTURTLEModeling.java @@ -2210,7 +2210,11 @@ public class GTURTLEModeling { }*/ - FullTML2Avatar t2a = new FullTML2Avatar(tmlm); + Object o = null; + if (tmlm.getReference() instanceof TGComponent) { + o = ((TGComponent)(tmlm.getReference())).getTDiagramPanel().tp; + } + FullTML2Avatar t2a = new FullTML2Avatar(tmlm, o); TraceManager.addDev("Avatar spec generation"); avatarspec = t2a.generateAvatarSpec("1"); TraceManager.addDev("Avatar spec generated");