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