From 4b2001f94f3ba6d660283eb4fd56c33cf5671de3 Mon Sep 17 00:00:00 2001
From: Sophie Coudert <sophie.coudert@telecom-paris.fr>
Date: Mon, 1 Jul 2024 17:16:07 +0200
Subject: [PATCH] replace fields by attributes in AvatarDataTypePrimitiveFields

---
 .idea/compiler.xml                            | 27 -------
 .idea/runConfigurations/TTool.xml             | 17 ++---
 .../AvatarDataTypePrimitiveFields.java        | 73 ++++++++++++++-----
 .../tosysmlv2/Avatar2SysML.java               |  2 +-
 .../tosysmlv2/Avatar2SysMLNames.java          |  4 +-
 .../tosysmlv2/AvatarFromSysML.java            | 10 ++-
 .../tosysmlv2/AvatarFromSysMLSyntax.java      |  2 +-
 src/main/java/ui/AvatarPanelDrawer.java       |  1 +
 8 files changed, 77 insertions(+), 59 deletions(-)
 delete mode 100644 .idea/compiler.xml

diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index 3b3f2a5b99..0000000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="CompilerConfiguration">
-    <bytecodeTargetLevel>
-      <module name="graphminimize_main" target="1.7" />
-      <module name="graphminimize_test" target="1.7" />
-      <module name="graphshow_main" target="1.7" />
-      <module name="graphshow_test" target="1.7" />
-      <module name="launcher_main" target="1.7" />
-      <module name="launcher_test" target="1.7" />
-      <module name="rundse_main" target="1.7" />
-      <module name="rundse_test" target="1.7" />
-      <module name="simulationcontrol_main" target="1.7" />
-      <module name="simulationcontrol_test" target="1.7" />
-      <module name="tiftranslator_main" target="1.7" />
-      <module name="tiftranslator_test" target="1.7" />
-      <module name="tmltranslator_main" target="1.7" />
-      <module name="tmltranslator_test" target="1.7" />
-      <module name="ttool-ttool_main" target="1.7" />
-      <module name="ttool-ttool_test" target="1.7" />
-      <module name="webcrawler-client_main" target="1.7" />
-      <module name="webcrawler-client_test" target="1.7" />
-      <module name="webcrawler-server_main" target="1.7" />
-      <module name="webcrawler-server_test" target="1.7" />
-    </bytecodeTargetLevel>
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/runConfigurations/TTool.xml b/.idea/runConfigurations/TTool.xml
index 3d1f722c15..e331548f94 100644
--- a/.idea/runConfigurations/TTool.xml
+++ b/.idea/runConfigurations/TTool.xml
@@ -1,18 +1,13 @@
 <component name="ProjectRunConfigurationManager">
   <configuration default="false" name="TTool" type="Application" factoryName="Application">
-    <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+    <option name="ALTERNATIVE_JRE_PATH" value="/usr/lib64/jvm/jdk-11.0.15" />
+    <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
     <option name="MAIN_CLASS_NAME" value="Main" />
-    <option name="VM_PARAMETERS" />
+    <module name="ttool" />
     <option name="PROGRAM_PARAMETERS" value="-debug -proverif -experimental -config bin/config.xml" />
     <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/bin" />
-    <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
-    <option name="ALTERNATIVE_JRE_PATH" value="jbr-11" />
-    <option name="ENABLE_SWING_INSPECTOR" value="false" />
-    <option name="ENV_VARIABLES" />
-    <option name="PASS_PARENT_ENVS" value="true" />
-    <module name="ttool" />
-    <envs />
-    <method>
+    <method v="2">
+      <option name="Make" enabled="true" />
       <option name="BuildArtifacts" enabled="true">
         <artifact name="dependencies" />
       </option>
@@ -21,4 +16,4 @@
       </option>
     </method>
   </configuration>
-</component>
+</component>
\ No newline at end of file
diff --git a/src/main/java/avatartranslator/AvatarDataTypePrimitiveFields.java b/src/main/java/avatartranslator/AvatarDataTypePrimitiveFields.java
index bcf28bcfaf..dba7805d07 100644
--- a/src/main/java/avatartranslator/AvatarDataTypePrimitiveFields.java
+++ b/src/main/java/avatartranslator/AvatarDataTypePrimitiveFields.java
@@ -1,32 +1,71 @@
+/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
+ *
+ * ludovic.apvrille AT enst.fr
+ *
+ * This software is a computer program whose purpose is to allow the
+ * edition of TURTLE analysis, design and deployment diagrams, to
+ * allow the generation of RT-LOTOS or Java code from this diagram,
+ * and at last to allow the analysis of formal validation traces
+ * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
+ * from INRIA Rhone-Alpes.
+ *
+ * This software is governed by the CeCILL  license under French law and
+ * abiding by the rules of distribution of free software.  You can  use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ *
+ * As a counterpart to the access to the source code and  rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty  and the software's author,  the holder of the
+ * economic rights,  and the successive licensors  have only  limited
+ * liability.
+ *
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading,  using,  modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean  that it is complicated to manipulate,  and  that  also
+ * therefore means  that it is reserved for developers  and  experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and,  more generally, to use and operate it in the
+ * same conditions as regards security.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ */
+
 package avatartranslator;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
+/**
+ * Class AvatarDataTypePrimitiveFields: sequence of primitive fields that characterizes a datatype.
+ *
+ * Such datatype extension can only be produced through the buildMap method that takes a list
+ * of datatype as input and unroll the nested ones to build the lists of primitive fields.
+ * The result is a map that links each datatype with its extension.
+ *
+ * Creation: 20/06/2024
+ * @version 1.0 20/06/2024
+ * @author Sophie Coudert
+ */
 public class AvatarDataTypePrimitiveFields {
-    public static class Field {
-        private String name;
-        private AvatarType type;
-        public Field(String _name, AvatarType _type) {
-            name = _name;
-            type = _type;
-        }
-        String getName() { return name; }
-        AvatarType getType() { return type; }
-    }
-    private List<Field> fields;
-    public AvatarDataTypePrimitiveFields() {
-        fields = new ArrayList<Field>();
+    private List<AvatarAttribute> fields;
+    private AvatarDataTypePrimitiveFields() {
+        fields = new ArrayList<AvatarAttribute>();
     }
     public int size() { return fields.size(); }
-    public boolean addField (String name, AvatarType type) {
+    private boolean addField (String name, AvatarType type) {
         if(name == null || type == null) return false;
-        for(Field f : fields) if (f.getName().equals(name)) return false;
-        fields.add(new Field(name, type));
+        for(AvatarAttribute f : fields) if (f.getName().equals(name)) return false;
+        fields.add(new AvatarAttribute(name, type, null, null));
         return true;
     }
-    public List<Field> getFields() { return fields; }
+    public List<AvatarAttribute> getFields() { return fields; }
     public String getName(int i) { return fields.get(i).getName(); }
     public AvatarType getType(int i) { return fields.get(i).getType(); }
     private static void buildPrimitiveFields (AvatarDataType dt, HashMap<AvatarDataType, AvatarDataTypePrimitiveFields> map,
diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
index 3a087f91d3..de4b6d38b1 100644
--- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
+++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
@@ -1183,7 +1183,7 @@ public class Avatar2SysML {
 
         if (guarded) {
             sysMLrequests.append(indentation + "if " +
-                    expr2SysML(clean_guard(((AvatarTransition)at).getOriginalGuard())) + " ?\n");
+                    expr2SysML(clean_guard((at).getOriginalGuard())) + " ?\n");
             indent(1);
         }
         // delay don't depend on parameters
diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java
index 9c3ac25232..fdfaed752f 100644
--- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java
+++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java
@@ -43,6 +43,8 @@
  * @version 0.1 20/06/2024
  */
 package avatartranslator.tosysmlv2;
+import java_cup.runtime.ComplexSymbolFactory;
+
 import java.io.StringReader;
 import java.util.List;
 
@@ -194,7 +196,7 @@ public class Avatar2SysMLNames {
 
     /** convert an Avatar int/bool expression into a SysML expression */
     public static String expr2SysML(String _expr) {
-        Avatar2SysMLParser parser = new Avatar2SysMLParser(new Avatar2SysMLLexer(new StringReader (_expr)));
+        Avatar2SysMLParser parser = new Avatar2SysMLParser(new Avatar2SysMLLexer(new StringReader (_expr)), new ComplexSymbolFactory());
         try { return (String)parser.parse().value; }
         catch (java.lang.Exception e) {
             e.printStackTrace();
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
index 19776bbe59..014631abb8 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
@@ -111,8 +111,12 @@ public class AvatarFromSysML {
         public List<AvatarTransition> getTransitions() { return transitions; }
     }
 
-    /** Builds an Avatar Specification From */
+    /** Builds an Avatar Specification from an Avatar SysML V2 description provided in a file.
+     *  If errors are found, they are printed using TraceManager.addDev before returning
+     */
     public AvatarSpecification sysMLtoSpec(String _fileName) {
+
+        // Initialize parser
         AvatarFromSysMLParser parser;
         try { parser =
                 new AvatarFromSysMLParser(new AvatarFromSysMLLexer(new FileReader(_fileName)),
@@ -121,6 +125,8 @@ public class AvatarFromSysML {
             e.printStackTrace(out);
             return new AvatarSpecification("DummySpec", null);
         }
+
+        // Run parser and get parser errors
         TraceManager.addDev("Parsing Model");
         try { stxSpec = parser.parseModel(); }
         catch (java.lang.Exception e) {
@@ -133,6 +139,8 @@ public class AvatarFromSysML {
             return new AvatarSpecification("DummySpec", null);
         }
         errors = stxSpec.getErrors();
+
+        // Build Specification from parser-returned abstract syntax tree.
         TraceManager.addDev("Building Specification");
         avSpec = new AvatarSpecification("FromSysMLV2_EXAMPLE_SPECIFICATION",null);
         signalMap.clear();
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java
index 7c8f63b6d6..825e323817 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java
@@ -1324,7 +1324,7 @@ public class AvatarFromSysMLSyntax {
         }
 
         private class CompleteOutMessage implements BiConsumer<String, StxOutMessage> {
-            public CompleteOutMessage(){};
+            public CompleteOutMessage(){}
             public void accept(String s, StxOutMessage o) { o.complete(errors); }
         }
 
diff --git a/src/main/java/ui/AvatarPanelDrawer.java b/src/main/java/ui/AvatarPanelDrawer.java
index 796a54cd76..0d85fcec2c 100644
--- a/src/main/java/ui/AvatarPanelDrawer.java
+++ b/src/main/java/ui/AvatarPanelDrawer.java
@@ -550,6 +550,7 @@ public class AvatarPanelDrawer {
 
 			// Probability
 			if (t.getProbability() != t.DEFAULT_PROBABILITY) SMDCon.setTransitionProbability("" + (t.getProbability()));
+
 			// Action
 			for (int i = 1; i < t.getActions().size(); i++) {
 				SMDCon.setTransitionInfo("", t.getAction(i, useOriginalValuesFirst).replaceAll(" ", ""));
-- 
GitLab