diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java index 68d72a945e76867ebb86ec6675b8da5cab5ae770..4f1573a6f3a68169e7b64e1132d2125aa05d8318 100644 --- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java +++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java @@ -39,6 +39,7 @@ package avatartranslator.tosysmlv2; import avatartranslator.*; +import static avatartranslator.AvatarTransition.*; import static avatartranslator.tosysmlv2.Avatar2SysMLNames.*; import java.util.HashMap; import java.util.HashSet; @@ -52,20 +53,6 @@ public class Avatar2SysML { /** * Memorized while declaring channels, to be reused for generating states */ - class ChannelInfo { - private String name; - private String msgtype; - private ArrayList<String> profile; - ChannelInfo(String _name, String _msgtype) { - name = _name; - msgtype = _msgtype; - profile = new ArrayList<String>(); - } - public void addField(String _fieldName){ profile.add(_fieldName); } - public String getName(){ return name; } - public String getMessageType(){ return msgtype; } - public List<String> getProfile(){ return profile; } - } class SignalInfo { private String name; private String msgtype; @@ -135,11 +122,14 @@ public class Avatar2SysML { int indentStepSize = 4; String indent = ""; String header = "package AvatarInstance {\n" + + indentStep + "import ScalarValues::String;\n" + indentStep + "import ScalarValues::Positive;\n" + indentStep + "import ScalarValues::Integer;\n" + indentStep + "import ScalarValues::Boolean;\n" + + indentStep + "import ScalarValues::Real;\n" + indentStep + "import AvatarBlockTypes::*;\n" + - indentStep + "import AvatarCommunication::*;\n\n"; + indentStep + "import AvatarCommunication::*;\n"; + StringBuffer avatar2SysML() { signalMap.clear(); @@ -153,7 +143,7 @@ public class Avatar2SysML { communications2SysML(); blocks2SysML(); avsysml.append(blockLinks); - avsysml.append("}\n\n"); + avsysml.append("}\n"); return avsysml; } void communications2SysML(){ @@ -161,8 +151,9 @@ public class Avatar2SysML { int bfiforelNumber = 0; int syncrelNumber = 0; - avsysml.append(indent + "// COMMUNICATIONS $$$$$$$$$$$$$$$$$$$$$$$$\n\n"); + if (avspec.getRelations() == null || avspec.getRelations().size() == 0) return; + avsysml.append("\n" + indent + "// COMMUNICATIONS $$$$$$$$$$$$$$$$$$$$$$$$\n"); for(AvatarRelation ar: avspec.getRelations()) { // parameters depending on relation type ============== @@ -226,11 +217,11 @@ public class Avatar2SysML { // relation declaration -------------------- - avsysml.append(indent + "// Relation " + relationSYSMLname + "=============\n"); + avsysml.append("\n" + indent + "// Relation " + relationSYSMLname + "=============\n"); avsysml.append(indent + "part " + relationSYSMLname + ": " + relationConstructor); if(relationParameters != null) avsysml.append(" = " + relationConstructor + relationParameters); - avsysml.append(";\n\n"); + avsysml.append(";\n"); // Channels and associated Messages declarations ---------------- @@ -255,16 +246,16 @@ public class Avatar2SysML { // Channel declaration ......................... - avsysml.append(indent + "// Channel " + channelName + "-------------\n"); + avsysml.append("\n" + indent + "// Channel " + channelName + "-------------\n"); avsysml.append(indent + "part " + channelSYSMLname + " : " + channelConstructor + " = " + channelConstructor + "(relation = " + relationSYSMLname + ");\n"); avsysml.append(indent + "bind " + blk1SysMLname + "." + sig1SYSMLname + " = " + channelSYSMLname + ";\n"); - avsysml.append(indent + "bind " + blk2SysMLname + "." + sig2SYSMLname + " = " + channelSYSMLname + ";\n\n"); + avsysml.append(indent + "bind " + blk2SysMLname + "." + sig2SYSMLname + " = " + channelSYSMLname + ";\n"); // Message declaration ......................... - StringBuffer msg1Buf = new StringBuffer(indent + "// Message of signal " + sig1SYSMLname + "----------\n"); - StringBuffer msg2Buf = new StringBuffer(indent + "// Message of signal " + sig2SYSMLname + "----------\n"); + StringBuffer msg1Buf = new StringBuffer(indent + "// Message of signal " + blk1SysMLname + "." + sig1SYSMLname + "----------\n"); + StringBuffer msg2Buf = new StringBuffer(indent + "// Message of signal " + blk2SysMLname + sig2SYSMLname + "----------\n"); if (in2out) { msg1Buf.append(indent + "part def " + message2SYSMLname + " :> '#DataMessage' {\n"); msg2Buf.append(indent + "part def " + message1SYSMLname + " :> " + message2SYSMLname + "{\n"); @@ -291,7 +282,7 @@ public class Avatar2SysML { } indent = indent.substring(indentStepSize); msg1Buf.append(indent + "}\n"); - msg2Buf.append(indent + "}\n\n"); + msg2Buf.append(indent + "}\n"); avsysml.append(msg1Buf); avsysml.append(msg2Buf); @@ -360,31 +351,39 @@ public class Avatar2SysML { blocklink(); // block header -------------------- - avsysml.append(indent + "// Block " + blockSYSMLname + "=============\n"); + avsysml.append("\n" + indent + "// Block " + blockSYSMLname + "=============\n"); avsysml.append(indent + "part " + blockSYSMLname + " : '#AvatarBlock' {\n"); indent += indentStep; // attributes -------------------- - avsysml.append(indent + "// Attributes ---------------------\n"); - for (AvatarAttribute aa : block.getAttributes()) attribute2SysML(aa); - avsysml.append("\n"); + if (block.getAttributes() != null && block.getAttributes().size() != 0) { + avsysml.append("\n" + indent + "// Attributes ---------------------\n"); + for (AvatarAttribute aa : block.getAttributes()) attribute2SysML(aa); + } // methods -------------------- - avsysml.append(indent + "// Methods ---------------------\n"); - for (AvatarMethod am : block.getMethods()) method2SysML(am); - avsysml.append("\n"); - avsysml.append(indent + "// Signals ---------------------\n"); - for (AvatarSignal as : block.getSignals()) signal2SysML(as); - avsysml.append("\n"); + if (block.getMethods() != null && block.getMethods().size() != 0) { + avsysml.append("\n" + indent + "// Methods ---------------------\n"); + for (AvatarMethod am : block.getMethods()) method2SysML(am); + } + if (block.getSignals() != null && block.getSignals().size() != 0) { + avsysml.append("\n" + indent + "// Signals ---------------------\n"); + for (AvatarSignal as : block.getSignals()) signal2SysML(as); + } // state-machine -------------------- + avsysml.append("\n" + indent + "// state-machine -------------------\n"); statemachine2SysML(block.getStateMachine()); - avsysml.append("\n"); // timers ------------------- - avsysml.append(indent + "// Timers ---------------------\n"); - for(AvatarAttribute timer: timerList) { timer2SysML(timer); } + if (timerList != null && timerList.size() != 0) { + avsysml.append("\n" + indent + "// Timers ---------------------\n"); + for (AvatarAttribute timer : timerList) timer2SysML(timer); + } // sub-blocks ------------------- - avsysml.append(indent + "// Sub-Blocks ---------------------\n"); - for(AvatarBlock blk: avspec.getListOfBlocks()) { if (blk.getFather() == block) block2SysML(blk); } - + List<AvatarBlock> subBlockList = new ArrayList<AvatarBlock>(); + for(AvatarBlock blk: avspec.getListOfBlocks()) { if (blk.getFather() == block) subBlockList.add(blk); } + if (subBlockList != null && subBlockList.size() != 0) { + avsysml.append("\n" + indent + "// Sub-Blocks øøøøøøøøøøøøøøøøøøøøøøø\n"); + for (AvatarBlock blk : subBlockList) if (blk.getFather() == block) block2SysML(blk); + } indent = indent.substring(indentStepSize); avsysml.append(indent + "}\n"); unchainBlock(); @@ -392,7 +391,7 @@ public class Avatar2SysML { // handling all blocks void blocks2SysML(){ - avsysml.append(indent + "// BLOCKS $$$$$$$$$$$$$$$$$$$$$$$$\n\n"); + avsysml.append("\n" + indent + "// BLOCKS $$$$$$$$$$$$$$$$$$$$$$$$\n"); for(AvatarBlock block: avspec.getListOfBlocks()) if (block.getFather() == null) block2SysML(block); } @@ -409,7 +408,7 @@ public class Avatar2SysML { avsysml.append(indent + "part " + timerblockname + ": '#AvatarTimer';\n"); avsysml.append(indent + "bind " + timerblockname + ".set = " + settimername + ";\n"); avsysml.append(indent + "bind " + timerblockname + ".reset = " + resettimername + ";\n"); - avsysml.append(indent + "bind " + timerblockname + ".expire = " + expiretimername + ";\n\n"); + avsysml.append(indent + "bind " + timerblockname + ".expire = " + expiretimername + ";\n"); } Boolean stopState; void statemachine2SysML(AvatarStateMachine asm) { @@ -460,8 +459,7 @@ public class Avatar2SysML { stateList.add(asme); stateMap.put(asme, stateinfo); } - avsysml.append(indent + "// state-machine description +++++\n" + - indent + "exhibit state '@statemachine' : '#AvatarStateMachine' {\n\n"); + avsysml.append(indent + "exhibit state '@statemachine' : '#AvatarStateMachine' {\n"); indent += indentStep; // generate SysML states with associated transitions stopState = false; @@ -483,15 +481,15 @@ public class Avatar2SysML { // State Description, depending on state type if(asme instanceof AvatarState){ - avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarStandardState'"); + avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarStandardState'"); if (requests.equals("")) - avsysml.append(";\n\n"); + avsysml.append(";\n"); else - avsysml.append(" = '#AvatarStandardState'(\n" + requests + indent + ");\n\n"); + avsysml.append(" = '#AvatarStandardState'(\n" + requests + indent + ");\n"); } else if(asme instanceof AvatarRandom){ - avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarRandomState' = '#AvatarRandomState'(\n"); + avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarRandomState' = '#AvatarRandomState'(\n"); if (!requests.equals("")) avsysml.append(requests); indent += indentStep; avsysml.append(indent + "state_action = '#Assignment'(\n"); @@ -501,11 +499,11 @@ public class Avatar2SysML { indent = indent.substring(indentStepSize); avsysml.append(indent + ")\n"); indent = indent.substring(indentStepSize); - avsysml.append(indent + ");\n\n"); + avsysml.append(indent + ");\n"); } else if(asme instanceof AvatarQueryOnSignal){ - avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarCountState' = '#AvatarCountState'(\n"); + avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarCountState' = '#AvatarCountState'(\n"); if (!requests.equals("")) avsysml.append(requests); indent += indentStep; avsysml.append(indent + "state_action = '#Assignment'(\n"); @@ -515,61 +513,61 @@ public class Avatar2SysML { indent = indent.substring(indentStepSize); avsysml.append(indent + ")\n"); indent = indent.substring(indentStepSize); - avsysml.append(indent + ");\n\n"); + avsysml.append(indent + ");\n"); } else if(asme instanceof AvatarActionOnSignal){ if(((AvatarActionOnSignal)asme).isSending()) { - avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarSendState'"); + avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarSendState'"); if (requests.equals("")) - avsysml.append(";\n\n"); + avsysml.append(";\n"); else - avsysml.append(" = '#AvatarSendState'(\n" + requests + indent + ");\n\n"); + avsysml.append(" = '#AvatarSendState'(\n" + requests + indent + ");\n"); } else { - avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarReceiveState'"); + avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarReceiveState'"); if (requests.equals("")) - avsysml.append(";\n\n"); + avsysml.append(";\n"); else - avsysml.append(" = '#AvatarReceiveState'(\n" + requests + indent + ");\n\n"); + avsysml.append(" = '#AvatarReceiveState'(\n" + requests + indent + ");\n"); } } else if(asme instanceof AvatarStartState){ - avsysml.append(indent + "entry action " + stateMap.get(asme).getName() + " :'#AvatarStartState'"); + avsysml.append("\n" + indent + "entry action " + stateMap.get(asme).getName() + " :'#AvatarStartState'"); if (requests.equals("")) - avsysml.append(";\n\n"); + avsysml.append(";\n"); else - avsysml.append(" = '#AvatarStartState'(\n" + requests + indent + ");\n\n"); + avsysml.append(" = '#AvatarStartState'(\n" + requests + indent + ");\n"); } else if(asme instanceof AvatarStopState){ if(! stopState) - avsysml.append(indent + "exit action " + stateMap.get(asme).getName() + " :'#AvatarStopState';\n\n"); + avsysml.append("\n" + indent + "exit action " + stateMap.get(asme).getName() + " :'#AvatarStopState';\n"); stopState = true; } else if(asme instanceof AvatarSetTimer){ - avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarSetTimerState'"); + avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarSetTimerState'"); if (requests.equals("")) - avsysml.append(";\n\n"); + avsysml.append(";\n"); else - avsysml.append(" = '#AvatarSetTimerState'(\n" + requests + indent + ");\n\n"); + avsysml.append(" = '#AvatarSetTimerState'(\n" + requests + indent + ");\n"); } else if(asme instanceof AvatarResetTimer){ - avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarResetTimerState'"); + avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarResetTimerState'"); if (requests.equals("")) - avsysml.append(";\n\n"); + avsysml.append(";\n"); else - avsysml.append(" = '#AvatarResetTimerState'(\n" + requests + indent + ");\n\n"); + avsysml.append(" = '#AvatarResetTimerState'(\n" + requests + indent + ");\n"); } else if(asme instanceof AvatarExpireTimer){ - avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarExpireTimerState'"); + avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarExpireTimerState'"); if (requests.equals("")) - avsysml.append(";\n\n"); + avsysml.append(";\n"); else - avsysml.append(" = '#AvatarExpireTimerState'(\n" + requests + indent + ");\n\n"); + avsysml.append(" = '#AvatarExpireTimerState'(\n" + requests + indent + ");\n"); } // Transition descriptions @@ -583,39 +581,42 @@ public class Avatar2SysML { if (((AvatarActionOnSignal)aos).isSending()) { // preComm State - avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n"); + avsysml.append("\n" + indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n"); indent += indentStep; avsysml.append(indent + "request =\n"); indent += indentStep; avsysml.append(sendRequest2SysML(1, "0", "0", signalinfo, ((AvatarActionOnSignal)aos).getValues()) + "\n"); indent = indent.substring(2 * indentStepSize); - avsysml.append(indent + ");\n\n"); + avsysml.append(indent + ");\n"); // its transition - avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + - " then " + stateinfo.getName() + ";\n\n"); + avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + + " then " + stateinfo.getName() + + endTransition(0,"","", 1)); } else { - avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreReceiveState' = '#AvatarPreReceiveState' (\n"); + avsysml.append("\n" + indent + "state " + stateinfo.getPreName() + " : '#AvatarPreReceiveState' = '#AvatarPreReceiveState' (\n"); indent += indentStep; avsysml.append(indent + "request =\n"); indent += indentStep; avsysml.append(receiveRequest2SysML(1, "0", "0", signalinfo) + "\n"); indent = indent.substring(2 * indentStepSize); - avsysml.append(indent + ");\n\n"); + avsysml.append(indent + ");\n"); // its transition - avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + "\n"); + avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + "\n"); indent += indentStep; String doAction = receiveActions2SysML(signalinfo, ((AvatarActionOnSignal)aos).getValues()); if (doAction.length() == 0) - avsysml.append(indent + "then " + stateinfo.getName() + ";\n\n"); + avsysml.append(indent + "then " + stateinfo.getName() + + endTransition(0,"","", 1)); else { avsysml.append(doAction); - avsysml.append(" then " + stateinfo.getName() + ";\n\n"); + avsysml.append(" then " + stateinfo.getName() + + endTransition(0,"","", 1)); } indent = indent.substring(indentStepSize); } } else if (aos instanceof AvatarSetTimer) { // preComm State - avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n"); + avsysml.append("\n" + indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n"); indent += indentStep; avsysml.append(indent + "request =\n"); indent += indentStep; @@ -623,42 +624,63 @@ public class Avatar2SysML { setTimerChannelSysMLname(((AvatarSetTimer) aos).getTimer().getName()), ((AvatarSetTimer)aos).getTimerValue()) + "\n"); indent = indent.substring(2 * indentStepSize); - avsysml.append(indent + ");\n\n"); + avsysml.append(indent + ");\n"); // its transition - avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + - " then " + stateinfo.getName() + ";\n\n"); + avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + + " then " + stateinfo.getName() + + endTransition(0,"","", 1)); } else if (aos instanceof AvatarResetTimer) { // preComm State - avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n"); + avsysml.append("\n" + indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n"); indent += indentStep; avsysml.append(indent + "request =\n"); indent += indentStep; avsysml.append(resetTimerRequest2SysML(1, "0", "0", resetTimerChannelSysMLname(((AvatarResetTimer) aos).getTimer().getName())) + "\n"); indent = indent.substring(2 * indentStepSize); - avsysml.append(indent + ");\n\n"); + avsysml.append(indent + ");\n"); // its transition - avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + - " then " + stateinfo.getName() + ";\n\n"); + avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + + " then " + stateinfo.getName() + + endTransition(0,"","", 1)); } else if (aos instanceof AvatarExpireTimer) { - avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreReceiveState' = '#AvatarPreReceiveState' (\n"); + avsysml.append("\n" + indent + "state " + stateinfo.getPreName() + " : '#AvatarPreReceiveState' = '#AvatarPreReceiveState' (\n"); indent += indentStep; avsysml.append(indent + "request =\n"); indent += indentStep; avsysml.append(expireTimerRequest2SysML(1, "0", "0", expireTimerChannelSysMLname(((AvatarExpireTimer) aos).getTimer().getName())) + "\n"); indent = indent.substring(2 * indentStepSize); - avsysml.append(indent + ");\n\n"); + avsysml.append(indent + ");\n"); // its transition - avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + "\n"); + avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + + endTransition(0,"","", 1)); indent += indentStep; - avsysml.append(indent + "then " + stateinfo.getName() + ";\n\n"); + avsysml.append(indent + "then " + stateinfo.getName() + ";\n"); indent = indent.substring(indentStepSize); } } } + + String endTransition(int delayDistributionLaw, String delayExtra1, String delayExtra2, double probability){ + if (delayDistributionLaw == DELAY_UNIFORM_LAW && probability == 1) return ";\n"; + StringBuffer result = new StringBuffer(" {\n"); + indent += indentStep; + result.append(indent + "attribute delayDistributionLaw : String = \"" + DISTRIBUTION_LAWS[delayDistributionLaw] + "\";\n"); + if (probability != 1) + result.append(indent + "attribute weight : Real = " + probability + ";\n"); + if (NB_OF_EXTRA_ATTRIBUTES[delayDistributionLaw] > 0) + result.append(indent + "attribute '" + LABELS_OF_EXTRA_ATTRIBUTES_1[delayDistributionLaw] + "' : String = \"" + + delayExtra1 + "\";\n"); + if (NB_OF_EXTRA_ATTRIBUTES[delayDistributionLaw] > 1) + result.append(indent + "attribute '" + LABELS_OF_EXTRA_ATTRIBUTES_2[delayDistributionLaw] + "' : String = \"" + + delayExtra2 + "\";\n"); + indent = indent.substring(indentStepSize); + result.append(indent + "}\n"); + return result.toString(); + } void transitionsAndRequests(String srcName, List<AvatarStateMachineElement> nexts, String poolName) { requirePreCom.clear(); sysMLtransitions.delete(0, sysMLtransitions.length()); @@ -777,17 +799,19 @@ public class Avatar2SysML { doAction = transitionActions2SysM(at.getActions()); indent = indent.substring(indentStepSize); - sysMLtransitions.append(indent + "transition : '#AvatarTransition' first " + srcName); + sysMLtransitions.append("\n" + indent + "transition : '#AvatarTransition' first " + srcName); if(index > 0) sysMLtransitions.append(" if response.transition_index == " + index + "\n"); else sysMLtransitions.append("\n"); indent += indentStep; if (doAction.length() == 0) - sysMLtransitions.append(indent + "then " + tgtName + ";\n\n"); + sysMLtransitions.append(indent + "then " + tgtName + + endTransition(at.getDelayDistributionLaw(), at.getDelayExtra1(), at.getDelayExtra2(), at.getProbability())); else { sysMLtransitions.append(doAction); - sysMLtransitions.append(" then " + tgtName + ";\n\n"); + sysMLtransitions.append(" then " + tgtName + + endTransition(at.getDelayDistributionLaw(),at.getDelayExtra1(),at.getDelayExtra2(), at.getProbability())); } indent += indentStep; } @@ -818,8 +842,9 @@ public class Avatar2SysML { String sendRequest2SysML(int index, String min, String max, SignalInfo chinfo, List<String> values) { StringBuffer result = new StringBuffer(indent + "'#SendRequest'(\n"); indent += indentStep; - result.append(indent + "transition_index= " + index + ",\n" + - indent + "channel= " + chinfo.getName() + ",\n"); + if (index != 1) + result.append(indent + "transition_index= " + index + ",\n"); + result.append(indent + "channel= " + chinfo.getName() + ",\n"); if (max.equals("0")) { if (!min.equals("0")) result.append(indent + "delay= " + min + ",\n"); @@ -846,8 +871,9 @@ public class Avatar2SysML { String setTimerRequest2SysML(int index, String min, String max, String chname, String value) { StringBuffer result = new StringBuffer(indent + "'#AvatarSetTimerRequest'(\n"); indent += indentStep; - result.append(indent + "transition_index= " + index + ",\n" + - indent + "channel= " + chname + ",\n"); + if (index != 1) + result.append(indent + "transition_index= " + index + ",\n"); + result.append(indent + "channel= " + chname + ",\n"); if (max.equals("0")) { if (!min.equals("0")) result.append(indent + "delay= " + min + ",\n"); @@ -866,8 +892,9 @@ public class Avatar2SysML { String resetTimerRequest2SysML(int index, String min, String max, String chname) { StringBuffer result = new StringBuffer(indent + "'#AvatarResetTimerRequest'(\n"); indent += indentStep; - result.append(indent + "transition_index= " + index + ",\n" + - indent + "channel= " + chname + ",\n"); + if (index != 1) + result.append(indent + "transition_index= " + index + ",\n"); + result.append(indent + "channel= " + chname + ",\n"); if (max.equals("0")) { if (!min.equals("0")) result.append(indent + "delay= " + min + ",\n"); @@ -887,8 +914,9 @@ public class Avatar2SysML { String receiveRequest2SysML(int index, String min, String max, SignalInfo chinfo) { StringBuffer result = new StringBuffer(indent + "'#ReceiveRequest'(\n"); indent += indentStep; - result.append(indent + "transition_index= " + index + ",\n" + - indent + "channel= " + chinfo.getName()); + if (index != 1) + result.append(indent + "transition_index= " + index + ",\n"); + result.append(indent + "channel= " + chinfo.getName()); if (max.equals("0")) if (!min.equals("0")) result.append(",\n" + indent + "delay= " + min + "\n"); @@ -905,8 +933,9 @@ public class Avatar2SysML { String expireTimerRequest2SysML(int index, String min, String max, String chname) { StringBuffer result = new StringBuffer(indent + "'#AvatarExpireTimerRequest'(\n"); indent += indentStep; - result.append(indent + "transition_index= " + index + ",\n" + - indent + "channel= " + chname); + if (index != 1) + result.append(indent + "transition_index= " + index + ",\n"); + result.append(indent + "channel= " + chname); if (max.equals("0")) if (!min.equals("0")) result.append(",\n" + indent + "delay= " + min + "\n"); diff --git a/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml b/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml index 966a1956107b2e33192b7cae69c91b480ebd5b93..353e724216ca354abf4bee313ea8ae661912ef7e 100644 --- a/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml +++ b/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml @@ -1,5 +1,5 @@ // GENERAL TOOLS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - package AvatarGeneral { +package AvatarGeneral { import Base::Anything; import ScalarValues::Positive; import ScalarValues::Integer;