diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java index 0dddf69761d69a844e064b10394253d5f828c638..b2c2e529202c4efc2584a3291674e71453852d44 100644 --- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java +++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java @@ -240,7 +240,7 @@ public class Avatar2SysML { } void attribute2SysML(AvatarAttribute aa, String prefix){ - avsysml.append(indent + prefix + "attribute " + attributeSysMLname(aa.getName() + " : ")); + avsysml.append(indent + prefix + "attribute " + attributeSysMLname(aa.getName()) + " : "); if (aa.isInt()) avsysml.append("Integer;\n"); else avsysml.append("Boolean;\n"); } @@ -248,8 +248,13 @@ public class Avatar2SysML { void method2SysML(AvatarMethod am){ // "return tuple" not handled String returnType = null; - if(am.getListOfReturnAttributes().size() == 1) - returnType = am.getListOfReturnAttributes().get(0).getType().getStringType(); + if(am.getListOfReturnAttributes().size() == 1){ + String avatarType = am.getListOfReturnAttributes().get(0).getType().getStringType(); + if (avatarType.equals("int")) + returnType = "Integer"; + else + returnType = "Boolean"; + } if (returnType == null) { avsysml.append(indent + "action " + methodSysMLname(am.getName()) + ": '#AvatarVoidMethod' {\n"); indent += indentStep; @@ -298,6 +303,7 @@ public class Avatar2SysML { if (block.getFather() == null) block2SysML(block); } + Boolean stopState; void statemachine2SysML(AvatarStateMachine asm) { stateList.clear(); // associate names to future SysML states @@ -334,6 +340,7 @@ public class Avatar2SysML { indent + "exhibit state '@statemachine' : '#AvatarStateMachine' {\n\n"); indent += indentStep; // generate SysML states with associated transitions + stopState = false; for (AvatarStateMachineElement asme : stateList) state2SysML(asme); indent = indent.substring(indentStepSize); avsysml.append(indent + "}\n"); @@ -393,7 +400,7 @@ public class Avatar2SysML { if (requests.equals("")) avsysml.append(";\n\n"); else - avsysml.append(" = '#AvatarSenddState'(\n" + requests + indent + ");\n\n"); + avsysml.append(" = '#AvatarSendState'(\n" + requests + indent + ");\n\n"); } else { avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarReceiveState'"); if (requests.equals("")) @@ -412,11 +419,9 @@ public class Avatar2SysML { } else if(asme instanceof AvatarStopState){ - avsysml.append(indent + "state " + stateMap.get(asme).getName() + " :'#AvatarStopState'"); - if (requests.equals("")) - avsysml.append(";\n\n"); - else - avsysml.append(" = '#AvatarStopState'(\n" + requests + indent + ");\n\n"); + if(! stopState) + avsysml.append(indent + "state " + stateMap.get(asme).getName() + " :'#AvatarStopState';\n\n"); + stopState = true; } // Transition descriptions @@ -433,29 +438,29 @@ public class Avatar2SysML { indent += indentStep; avsysml.append(indent + "request =\n"); indent += indentStep; - avsysml.append(sendRequest2SysML(1, "0", "0", signalinfo, aos.getValues())); + avsysml.append(sendRequest2SysML(1, "0", "0", signalinfo, aos.getValues()) + "\n"); indent = indent.substring(2 * indentStepSize); - avsysml.append(indent + ");\n"); + avsysml.append(indent + ");\n\n"); // its transition - sysMLtransitions.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + - " then " + stateinfo.getName() + ";\n"); + avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + + " then " + stateinfo.getName() + ";\n\n"); } else { avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreReceiveState' = '#AvatarPreReceiveState' (\n"); indent += indentStep; avsysml.append(indent + "request =\n"); indent += indentStep; - avsysml.append(receiveRequest2SysML(1, "0", "0", signalinfo)); + avsysml.append(receiveRequest2SysML(1, "0", "0", signalinfo) + "\n"); indent = indent.substring(2 * indentStepSize); - avsysml.append(indent + ");\n"); + avsysml.append(indent + ");\n\n"); // its transition - sysMLtransitions.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + "\n"); + avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + "\n"); indent += indentStep; String doAction = receiveActions2SysM(signalinfo, aos.getValues()); if (doAction.length() == 0) - sysMLtransitions.append(indent + "then " + stateinfo.getName() + ";\n"); + avsysml.append(indent + "then " + stateinfo.getName() + ";\n\n"); else { - sysMLtransitions.append(doAction); - sysMLtransitions.append(" then " + stateinfo.getName() + ";\n"); + avsysml.append(doAction); + avsysml.append(" then " + stateinfo.getName() + ";\n\n"); } indent = indent.substring(indentStepSize); } @@ -590,7 +595,7 @@ public class Avatar2SysML { } String sendRequest2SysML(int index, String min, String max, ChannelInfo chinfo, List<String> values) { - StringBuffer result = new StringBuffer(indent + "’#SendRequest’(\n"); + StringBuffer result = new StringBuffer(indent + "'#SendRequest'(\n"); indent += indentStep; result.append(indent + "transition_index= " + index + ",\n" + indent + "channel= " + chinfo.getName() + ",\n"); @@ -616,7 +621,7 @@ public class Avatar2SysML { } String receiveRequest2SysML(int index, String min, String max, ChannelInfo chinfo) { - StringBuffer result = new StringBuffer(indent + "’#ReceiveRequest’(\n"); + StringBuffer result = new StringBuffer(indent + "'#ReceiveRequest'(\n"); indent += indentStep; result.append(indent + "transition_index= " + index + ",\n" + indent + "channel= " + chinfo.getName()); @@ -634,7 +639,7 @@ public class Avatar2SysML { String transitionActions2SysM(List<AvatarAction> aas) { StringBuffer result; if (aas == null || aas.size() == 0) return ""; - result = new StringBuffer(indent + "do action (\n" + indent + indentStep + "first start;\n"); + result = new StringBuffer(indent + "do action {\n" + indent + indentStep + "first start;\n"); indent += indentStep; for(AvatarAction aa : aas) { if(aa instanceof AvatarActionAssignment) { @@ -649,7 +654,7 @@ public class Avatar2SysML { } } indent = indent.substring(indentStepSize); - result.append(indent + ")"); + result.append(indent + "}"); return result.toString(); }