diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java index f1c959ddde1b074e4af2a9291bcd5e663d3d2eb0..dd36682fd2dd1e8d813cb2cff7d0679833556a74 100644 --- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java +++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java @@ -55,17 +55,27 @@ import java.util.ArrayList; * @version 0.1 20/06/2024 */ public class Avatar2SysML { + public Avatar2SysML(AvatarSpecification _avspec) { avspec = _avspec; } + StringBuffer avsysml; + HashSet<AvatarSignal> fifoSet = new HashSet<AvatarSignal>(); + HashMap<AvatarMethod, MethodInfo> methodMap = new HashMap<AvatarMethod, MethodInfo>(); + HashMap<AvatarStateMachineElement, StateInfo> stateMap = new HashMap<AvatarStateMachineElement, StateInfo>(); + ArrayList<AvatarStateMachineElement> stateList = new ArrayList<AvatarStateMachineElement>(); + ArrayList<AvatarAttribute> timerList = new ArrayList<AvatarAttribute>(); + + private AvatarSpecification avspec; - class MethodInfo { - private String name; + /** to collect infos used later (for example when handling ActionsOnSignal) */ + static private class MethodInfo { + private String name; // method name private String msgtype; // null for methods that are not signals - private ArrayList<String> fieldNames; - private ArrayList<AvatarType> fieldTypes; - private ArrayList<AvatarDataType> dataTypes; - private AvatarType returnType; - private AvatarDataType returnDataType; + private ArrayList<String> fieldNames; // names of parameters + private ArrayList<AvatarType> fieldTypes; // int, bool or undefined + private ArrayList<AvatarDataType> dataTypes; // datatype for "undefined" fieldType, otherwise null. + private AvatarType returnType; // int, bool or undefined + private AvatarDataType returnDataType; // datatype if returnType is "undefined", otherwise null. - MethodInfo(String _name) { // for void methods + MethodInfo(String _name) { // for void methods name = _name; msgtype = null; fieldNames = new ArrayList<String>(); @@ -74,7 +84,8 @@ public class Avatar2SysML { returnType = null; returnDataType = null; } - MethodInfo(String _name, AvatarType _returnType, AvatarDataType dt) { // for non-void methods + + MethodInfo(String _name, AvatarType _returnType, AvatarDataType dt) { // for non-void methods name = _name; msgtype = null; fieldNames = new ArrayList<String>(); @@ -85,7 +96,8 @@ public class Avatar2SysML { returnDataType = null; else returnDataType = dt; - } + } + MethodInfo(String _name, String _msgtype) { // for signals name = _name; msgtype = _msgtype; @@ -95,7 +107,12 @@ public class Avatar2SysML { returnType = null; returnDataType = null; } - public void addField(String _fieldName, AvatarType _type, AvatarDataType _dt){ + + /** @param _fieldName + * @param _type + * @param _dt datatype, only relevant if _type is UNDEFINED + */ + public void addField(String _fieldName, AvatarType _type, AvatarDataType _dt){ if (_type == AvatarType.UNDEFINED) dataTypes.add(_dt); else if (!(_type == AvatarType.BOOLEAN || _type == AvatarType.INTEGER)) @@ -104,42 +121,47 @@ public class Avatar2SysML { dataTypes.add(null); fieldNames.add(_fieldName); fieldTypes.add(_type); - } - public int getArity() { return fieldNames.size(); } - public String getName(){ return name; } - public String getMessageType(){ return msgtype; } - public AvatarType getReturnType(){ return returnType; } - public AvatarDataType getReturnDataType(){ return returnDataType; } - public String getFieldName(int i){ return fieldNames.get(i); } - public AvatarType getFieldType(int i){ return fieldTypes.get(i); } - public AvatarDataType getDataType(int i){ return dataTypes.get(i); } + } + + /** number of fields */ + public int getArity() { return fieldNames.size(); } + + /** SysML name */ + public String getName(){ return name; } + + /** SysML name for message describing profile */ + public String getMessageType(){ return msgtype; } + + public AvatarType getReturnType(){ return returnType; } + + public AvatarDataType getReturnDataType(){ return returnDataType; } + + /** SysML field name */ + public String getFieldName(int i){ return fieldNames.get(i); } + + public AvatarType getFieldType(int i){ return fieldTypes.get(i); } + + public AvatarDataType getDataType(int i){ return dataTypes.get(i); } } - /** + + /** * Memorized while naming states, to be reused for generating states */ - class StateInfo { - private String name; - private String prename = ""; + class StateInfo { + private String name; // SysML name + private String prename = ""; // name of the state that is technically added before this (if exists) + StateInfo(String _name) { name = _name; } - StateInfo(String _name, String _prename) { - name = _name; - prename = _prename; - } + + StateInfo(String _name, String _prename) { name = _name; prename = _prename; } + public String getName(){ return name; } - public String getPreName(){ return prename; } - } - public Avatar2SysML(AvatarSpecification _avspec) { avspec = _avspec; } - private AvatarSpecification avspec; - StringBuffer avsysml; + public String getPreName(){ return prename; } + } - HashSet<AvatarSignal> fifoSet = new HashSet<AvatarSignal>(); - HashMap<AvatarMethod, MethodInfo> methodMap = new HashMap<AvatarMethod, MethodInfo>(); - HashMap<AvatarStateMachineElement, StateInfo> stateMap = new HashMap<AvatarStateMachineElement, StateInfo>(); - ArrayList<AvatarStateMachineElement> stateList = new ArrayList<AvatarStateMachineElement>(); - ArrayList<AvatarAttribute> timerList = new ArrayList<AvatarAttribute>(); void searchCountSignals() { fifoSet.clear();