diff --git a/src/main/java/avatartranslator/AvatarActionOnSignal.java b/src/main/java/avatartranslator/AvatarActionOnSignal.java index 4cb75e176902b0fddf63176a92d894809e2c06d6..1b3787b9a95988c7bb11522c41e5a2b6ad481917 100644 --- a/src/main/java/avatartranslator/AvatarActionOnSignal.java +++ b/src/main/java/avatartranslator/AvatarActionOnSignal.java @@ -82,6 +82,7 @@ public class AvatarActionOnSignal extends AvatarStateMachineElement { public AvatarActionOnSignal(String _name, Object _referenceObject, AvatarStateMachineOwner _block) { super( _name, _referenceObject, _block, true, false ); values = new LinkedList<String>(); + originalValues = new LinkedList<>(); actionAttr = null; } public AvatarSignal getSignal() { diff --git a/src/main/java/avatartranslator/AvatarQueryOnSignal.java b/src/main/java/avatartranslator/AvatarQueryOnSignal.java index 321b1790d0d0b30dd3567e7ff5d508e52e8acd4a..b2504d82dafa245788be4e7371743c4d748439b0 100644 --- a/src/main/java/avatartranslator/AvatarQueryOnSignal.java +++ b/src/main/java/avatartranslator/AvatarQueryOnSignal.java @@ -91,7 +91,7 @@ public class AvatarQueryOnSignal extends AvatarStateMachineElement { public String getExtendedName() { if ((getSignal() == null) || (getAttribute() == null)) { - String s = getName() + " refobjt=" + referenceObject.toString(); + String s = getName() + " refobjt=" + referenceObject; TraceManager.addDev("Null signal" + " res=" + s); return s; } diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java index a8f718e1b17c64c52b0059888363df924adef710..f6ddc11ba83aef3aaad5818cefa2af7af5a7e745 100644 --- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java +++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java @@ -461,6 +461,7 @@ public class Avatar2SysML { avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Integer;\n"); methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.INTEGER, null); } + j++; } if (returnType != null) avsysml.append(indent + "return : " + returnType + ";\n"); @@ -878,6 +879,13 @@ public class Avatar2SysML { indent = indent.substring(indentStepSize); sysMLrequests.insert(0, indent + poolName + " = (\n"); sysMLrequests.append(indent + ")"); + } + private String clean_guard(String _guard) { + int open = _guard.indexOf('['); + int close = _guard.lastIndexOf(']'); + if (open != -1 && close != -1 && close > open) + return _guard.substring(open+1, close); + else return _guard; } // index is 0 if transition is alone void transitionAndRequest(String srcName, AvatarTransition at, int index){ @@ -912,7 +920,8 @@ public class Avatar2SysML { // computing request if (guarded) { - sysMLrequests.append(indent + "if " + expr2SysML(((AvatarTransition)at).getOriginalGuard()) + " ?\n"); + sysMLrequests.append(indent + "if " + + expr2SysML(clean_guard(((AvatarTransition)at).getOriginalGuard())) + " ?\n"); indent += indentStep; } String minDelay = ( at.getOriginalMinDelay().length()==0 ? "0" : expr2SysML(at.getOriginalMinDelay()) ); @@ -970,7 +979,7 @@ public class Avatar2SysML { else sysMLtransitions.append("\n"); indent += indentStep; - if (doAction.length() == 0) + if (doAction == null || doAction.length() == 0) sysMLtransitions.append(indent + "then " + tgtName + endTransition(at.getDelayDistributionLaw(), at.getDelayExtra1(), at.getDelayExtra2(), at.getProbability())); else { diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java index 570ff292d17f21c4f24a8365fa7547e3346d2202..0ba091a47aee1906c8916ab426c6737437c07b1d 100644 --- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java +++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java @@ -49,8 +49,9 @@ public class Avatar2SysMLNames { public static String attributeSysMLname(String _name){ if (_name == null) return null; String name = _name.trim(); - String[] list = name.split("."); - StringBuffer result = new StringBuffer("'$" + list[0] + "'"); + String[] list = name.split("\\."); + StringBuffer result = + ( list.length == 0 ? new StringBuffer("'$" + name + "'") : new StringBuffer("'$" + list[0] + "'")); int length = list.length; for(int i = 1; i < length; i++) result.append(".'" + list[i] + "'"); diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java index f647bde834c2a1ee815cb00a15c8084dba6190f0..84378fbeb7daf8c70e83fc73eaf03d555fd2b9cf 100644 --- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java +++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java @@ -85,6 +85,7 @@ public class AvatarFromSysML { e.printStackTrace(out); return new AvatarSpecification("DummySpec", null); } + if (stxSpec == null) return new AvatarSpecification("DummySpec", null); errors = stxSpec.getErrors(); avSpec = new AvatarSpecification("FromSysMLV2_EXAMPLE_SPECIFICATION",null); transitionList.clear(); @@ -118,7 +119,7 @@ public class AvatarFromSysML { return b; } private AvatarAttribute getAttributeByName(String _name, AvatarBlock _block) { - List<AvatarAttribute> l = _block.getAttributes(); + List<AvatarAttribute> l = _block.getOriginalAttributes(); int size = l.size(); for (int i = 0; i < size; i++) if(l.get(i).getName().equals(_name)) return l.get(i); diff --git a/src/main/java/ui/AvatarPanelDrawer.java b/src/main/java/ui/AvatarPanelDrawer.java index 176e17608ae15e2f23c5fc272de97d495c44c4fa..c81f55d018153b2e92bb3bd1d12a9d0a9bf1f935 100644 --- a/src/main/java/ui/AvatarPanelDrawer.java +++ b/src/main/java/ui/AvatarPanelDrawer.java @@ -259,12 +259,13 @@ public class AvatarPanelDrawer { p = new Point(p2.getX(), p2.getY() - 10); points.add(p); }*/ - - for (int i = 0; i < ar.getOtherReferenceObjects().size(); i++) { - Object o = ar.getOtherReferenceObjects().get(i); - if (o instanceof TGCPointOfConnector) { - TGCPointOfConnector op = (TGCPointOfConnector) o; - points.add(new Point(op.getX(), op.getY())); + if (ar.getOtherReferenceObjects() != null) { + for (int i = 0; i < ar.getOtherReferenceObjects().size(); i++) { + Object o = ar.getOtherReferenceObjects().get(i); + if (o instanceof TGCPointOfConnector) { + TGCPointOfConnector op = (TGCPointOfConnector) o; + points.add(new Point(op.getX(), op.getY())); + } } }