From 0b4fe41ce8f19fbb5785bc7ea77a53a1e3972dde Mon Sep 17 00:00:00 2001 From: Sophie Coudert <sophie.coudert@telecom-paris.fr> Date: Mon, 3 Jun 2024 08:46:01 +0200 Subject: [PATCH] save... --- .../tosysmlv2/AvatarFromSysML.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java index 0652ad416b..9b59150679 100644 --- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java +++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java @@ -341,12 +341,20 @@ public class AvatarFromSysML { StxAction action = actions.get(k); if(action.getType() == AvatarFromSysMLSyntax.STXASSIGNACTION){ String leftHandStr = extendIdent(action.getTarget(),blk); + AvatarDataType dataType = extendType; String rightHandStr; StxTerm value = action.getValue(); if (value instanceof StxId){ rightHandStr = extendIdent(((StxId)value).getString(),blk); } else if (value instanceof StxExpr){ rightHandStr = ((StxExpr)value).getString(); } else { rightHandStr = extendCall((StxCall)value,blk); } - theTransition.addAction(AvatarTerm.createActionFromString(theBlock, leftHandStr + "=" + rightHandStr)); + AvatarAction act = AvatarTerm.createActionFromString(theBlock, leftHandStr + "=" + rightHandStr); + theTransition.addAction(act); + if(dataType != null && act != null && ((AvatarActionAssignment)act).getLeftHand() instanceof AvatarTuple ) { + AvatarAttribute head = + (AvatarAttribute)((AvatarTuple) ((AvatarActionAssignment)act).getLeftHand()).getComponents().get(0); + head.setDataType(dataType); + } + //!!! Ajouter le tagging datatype } else { // STXMETHODACTION if (action.getValue() instanceof StxCall) { // else ERROR @@ -507,17 +515,22 @@ public class AvatarFromSysML { } return type; } + private String extendString; + private AvatarDataType extendType; private String extendPath(String path, StxBlock b) { - String type = getStxPathType(path, b); - if (type.equals("Integer") || type.equals("Boolean")) return path; - AvatarDataType adt = AvatarDataType.dataTypeMap.get(type); - int size = adt.getFullSize() - 1; + extendString = getStxPathType(path, b); + if (extendString.equals("Integer") || extendString.equals("Boolean")) { + extendType = null; + return path; + } + extendType = AvatarDataType.dataTypeMap.get(extendString); + int size = extendType.getFullSize() - 1; if (size == -1) return path; StringBuffer res = new StringBuffer(); int i; for (i = 0; i < size; i++) - res.append(path + "__" + adt.getFieldString(i) + ", "); - res.append(path + "__" + adt.getFieldString(i)); + res.append(path + "__" + extendType.getFieldString(i) + ", "); + res.append(path + "__" + extendType.getFieldString(i)); return res.toString(); } private String extendIdent (String path, StxBlock b) { -- GitLab