From fac537e3757b2c62f75b55e6338ca0dc6b16ad46 Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paris.fr> Date: Tue, 16 Jul 2024 13:22:14 +0200 Subject: [PATCH] saving in sysml v2 from cli with command ass2 --- src/main/java/cli/Action.java | 64 +++++++++++++++++++ src/main/java/cli/Interpreter.java | 1 + .../DiplodocusSimulatorTest.java | 2 + 3 files changed, 67 insertions(+) diff --git a/src/main/java/cli/Action.java b/src/main/java/cli/Action.java index ce0adc24c9..8990a32e67 100644 --- a/src/main/java/cli/Action.java +++ b/src/main/java/cli/Action.java @@ -49,6 +49,7 @@ import avatartranslator.modelcheckervalidator.ModelCheckerValidator; import avatartranslator.mutation.ApplyMutationException; import avatartranslator.mutation.AvatarMutation; import avatartranslator.mutation.ParseMutationException; +import avatartranslator.tosysmlv2.AVATAR2SysMLV2; import common.ConfigurationTTool; import common.SpecConfigTTool; import graph.AUTGraph; @@ -153,6 +154,7 @@ public class Action extends Command implements ProVerifOutputListener { private final static String AVATAR_SIMULATION_OPEN_WINDOW = "avatar-simulation-open-window"; private final static String AVATAR_SIMULATION_GENERIC = "avatar-simulation-generic"; private final static String AVATAR_LOAD_FROM_SYSMLV2 = "avatar-load-sysmlv2"; + private final static String AVATAR_SAVE_FROM_SYSMLV2 = "avatar-save-sysmlv2"; private final static String AVATAR_SYNTAX_CHECKER = "avatar-syntax-checker"; private final static String AVATAR_COMPLEXITY = "avatar-complexity"; @@ -2371,6 +2373,67 @@ public class Action extends Command implements ProVerifOutputListener { } }; + Command avatarSaveFromSysMLV2 = new Command() { + public String getCommand() { + return AVATAR_SAVE_FROM_SYSMLV2; + } + + public String getShortCommand() { + return "ass2"; + } + + public String getDescription() { + return "Save an Avatar specification to a SysML v2 textual description"; + } + + public String getUsage() { + String usage = "avatar-save-sysmlv2 <path-to-file>\n"; + return usage; + + } + + public String executeCommand(String command, Interpreter interpreter) { + + String[] commands = command.split(" "); + + if (commands.length < 1) { + return Interpreter.BAD; + } + + AvatarSpecification spec = as; + if (spec == null) { + if (interpreter.hasAModel()) { + spec = interpreter.mgui.gtm.getAvatarSpecification(); + } + if (spec == null) { + return Interpreter.AVATAR_NO_SPEC; + } + } + + List<AvatarError> errors = AvatarSyntaxChecker.checkSyntaxErrors(spec); + + if (errors.size() > 0) { + return Interpreter.BAD_AVATAR_SPEC; + } + + AVATAR2SysMLV2 toS = new AVATAR2SysMLV2(spec); + StringBuffer sb = toS.generateSysMLV2Spec(true, true, null); + + if (sb == null) { + return Interpreter.BAD_AVATAR_SPEC; + } + + try { + FileUtils.saveFile(new File(commands[0]), sb.toString()); + } catch (Exception e) { + return interpreter.BAD_FILE_NAME; + } + + return null; + } + }; + + Command avatarSyntaxChecker = new Command() { public String getCommand() { return AVATAR_SYNTAX_CHECKER; @@ -2576,6 +2639,7 @@ public class Action extends Command implements ProVerifOutputListener { addAndSortSubcommand(avatarSimulationOpenWindow); addAndSortSubcommand(avatarSimulationGeneric); addAndSortSubcommand(avatarLoadFromSysMLV2); + addAndSortSubcommand(avatarSaveFromSysMLV2); addAndSortSubcommand(avatarSyntaxChecker); addAndSortSubcommand(generic); diff --git a/src/main/java/cli/Interpreter.java b/src/main/java/cli/Interpreter.java index 52e9afed35..73b46bcdea 100644 --- a/src/main/java/cli/Interpreter.java +++ b/src/main/java/cli/Interpreter.java @@ -80,6 +80,7 @@ public class Interpreter implements Runnable, TerminalProviderInterface { public final static String BAD_DIRECTORY = "Unvalid directory identifier"; public final static String BAD_FILE = "Badly formatted file"; public final static String AVATAR_NO_SPEC = "No Avatar specification"; + public final static String BAD_AVATAR_SPEC = "Avatar specification is incorrect"; public final static String TML_NO_SPEC = "No TML specification"; public final static String TMAP_NO_SPEC = "No TMAP specification"; public final static String NO_WINDOW = "The targeted window does not exist"; diff --git a/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java b/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java index a50719ba50..b789a2dabe 100644 --- a/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java +++ b/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java @@ -30,6 +30,8 @@ public class DiplodocusSimulatorTest extends AbstractTest { final int [] NB_Of_TRANSTIONS = {118, 1053}; final int [] MIN_CYCLES = {192, 2510}; final int [] MAX_CYCLES = {279, 2510}; + + //model for daemon task final String [] MODELS_DAEMON = {"daemontest1", "daemontest2"}; final int [] NB_Of_DAEMON_STATES = {8, 114}; -- GitLab