From 28c5687bf369de146c30b1f129fc942bdf885551 Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paris.fr> Date: Thu, 8 Feb 2024 18:26:26 +0100 Subject: [PATCH] Adding avatar dependency graph generation to cli --- src/main/java/cli/Action.java | 57 ++++++++++++++++++++++++ src/main/java/ui/ActionPerformer.java | 2 +- src/main/java/ui/JToolBarMainTurtle.java | 2 +- src/main/java/ui/ModeManager.java | 4 +- src/main/java/ui/TGUIAction.java | 4 +- 5 files changed, 63 insertions(+), 6 deletions(-) diff --git a/src/main/java/cli/Action.java b/src/main/java/cli/Action.java index 34338f99bc..138eb56708 100644 --- a/src/main/java/cli/Action.java +++ b/src/main/java/cli/Action.java @@ -142,6 +142,7 @@ public class Action extends Command implements ProVerifOutputListener { private final static String AVATAR_DRAW = "avatar-print"; private final static String AVATAR_PRINT = "avatar-draw"; private final static String AVATAR_RG_GENERATION = "avatar-rg"; + private final static String AVATAR_DEPENDENCY_GRAPH = "avatar-dg"; private final static String AVATAR_UPPAAL_VALIDATE = "avatar-rg-validate"; private final static String AVATAR_SIMULATION_TO_BRK = "avatar-simulation-to-brk"; private final static String AVATAR_SIMULATION_SELECT_TRACE = "avatar-simulation-select-trace"; @@ -1615,6 +1616,61 @@ public class Action extends Command implements ProVerifOutputListener { } }; + Command AvatarDependencyGraphGeneration = new Command() { + public String getCommand() { + return AVATAR_DEPENDENCY_GRAPH; + } + + public String getShortCommand() { + return "adg"; + } + + public String getDescription() { + return "Generate the dependency graph of an Avatar model"; + } + + public String getUsage() { + return "<graph name>: name of the file in which the graph is saved"; + } + + public String executeCommand(String command, Interpreter interpreter) { + AvatarSpecification spec = interpreter.mgui.gtm.getAvatarSpecification(); + + if (spec == null) { + return "No AVATAR specification"; + } + + String[] commands = command.split(" "); + if (commands.length < 1) { + return Interpreter.BAD; + } + + String graphName = commands[0]; + + AvatarDependencyGraph adg = spec.makeDependencyGraph(); + RG rg = new RG("Dependency Graph"); + rg.graph = adg.getGraph(); + rg.nbOfStates = rg.graph.getNbOfStates(); + rg.nbOfTransitions = rg.graph.getNbOfTransitions(); + + + String graphContent = rg.graph.toFullString(); + try { + FileUtils.saveFile(new File(graphName), graphContent); + } catch (Exception e) { + return "Error when saving graph in File: " + e.getMessage(); + } + + interpreter.mgui.addRG(rg); + + + return null; + //} + + //return null; + } + }; + Command generateRGFromAvatar = new Command() { @@ -2380,6 +2436,7 @@ public class Action extends Command implements ProVerifOutputListener { addAndSortSubcommand(generic); addAndSortSubcommand(graphtToAvatar); + addAndSortSubcommand(AvatarDependencyGraphGeneration); diff --git a/src/main/java/ui/ActionPerformer.java b/src/main/java/ui/ActionPerformer.java index 3e11a673fb..47869d2258 100644 --- a/src/main/java/ui/ActionPerformer.java +++ b/src/main/java/ui/ActionPerformer.java @@ -79,7 +79,7 @@ public class ActionPerformer { mgui.openLastProject(); } else if (command.equals(mgui.actions[TGUIAction.ACT_SAVE].getActionCommand())) { mgui.saveProject(); - } else if (command.equals(mgui.actions[TGUIAction.ACT_IA].getActionCommand())) { + } else if (command.equals(mgui.actions[TGUIAction.ACT_AI].getActionCommand())) { mgui.ai(); } else if (command.equals(mgui.actions[TGUIAction.ACT_SAVE_AS_MODEL].getActionCommand())) { mgui.saveAsNewModel(); diff --git a/src/main/java/ui/JToolBarMainTurtle.java b/src/main/java/ui/JToolBarMainTurtle.java index e97500599f..c53b1213a8 100644 --- a/src/main/java/ui/JToolBarMainTurtle.java +++ b/src/main/java/ui/JToolBarMainTurtle.java @@ -359,7 +359,7 @@ public class JToolBarMainTurtle extends JToolBar implements ActionListener addSeparator(); - ai = add(mgui.actions[TGUIAction.ACT_IA]); + ai = add(mgui.actions[TGUIAction.ACT_AI]); ai.addMouseListener(mgui.mouseHandler); addSeparator(); diff --git a/src/main/java/ui/ModeManager.java b/src/main/java/ui/ModeManager.java index e99622e051..609a05e39d 100644 --- a/src/main/java/ui/ModeManager.java +++ b/src/main/java/ui/ModeManager.java @@ -98,7 +98,7 @@ public class ModeManager { if (mainBar != null) { mainBar.activateSearch(false); } - actions[TGUIAction.ACT_IA].setEnabled(true); + actions[TGUIAction.ACT_AI].setEnabled(true); break; case MainGUI.OPENED: actions[TGUIAction.ACT_MERGE].setEnabled(true); @@ -138,7 +138,7 @@ public class ModeManager { mainBar.activateSearch(true); } - actions[TGUIAction.ACT_IA].setEnabled(true); + actions[TGUIAction.ACT_AI].setEnabled(true); // @author: Huy TRUONG actions[TGUIAction.ACT_EXTERNAL_SEARCH].setEnabled(true); diff --git a/src/main/java/ui/TGUIAction.java b/src/main/java/ui/TGUIAction.java index 07ca9f9d84..b15fe74e87 100644 --- a/src/main/java/ui/TGUIAction.java +++ b/src/main/java/ui/TGUIAction.java @@ -74,7 +74,7 @@ public class TGUIAction extends AbstractAction { public static final int ACT_MERGE = 228; public static final int ACT_SAVE = 2; - public static final int ACT_IA = 564; + public static final int ACT_AI = 564; public static final int ACT_SAVE_AS_PROJECT = 31; public static final int ACT_SAVE_AS_MODEL = 475; @@ -852,7 +852,7 @@ public class TGUIAction extends AbstractAction { actions[ACT_SAVE_AS_PROJECT] = new TAction("saveasproject-command", "Save as Project",IconManager.imgic24, IconManager.imgic25, "Save as Project", "Save an opened or a new TTool modeling under a new project", 0); actions[ACT_SAVE_AS_MODEL] = new TAction("saveasmodel-command", "Save as Model",IconManager.imgic24, IconManager.imgic25, "Save as Model", "Save an opened or a new TTool modeling under a new model", 0); actions[ACT_QUIT] = new TAction("quit-command", "Quit", IconManager.imgic26, IconManager.imgic27, "Quit", "Quit TTool", 'Q'); - actions[ACT_IA] = new TAction("ia-command", "IA", IconManager.imgic152, IconManager.imgic152, "IA", "Start IA for modeling", 'A'); + actions[ACT_AI] = new TAction("ai-command", "AI", IconManager.imgic152, IconManager.imgic152, "AI", "Use AI for modeling", 'A'); actions[ACT_SAVE_LOTOS] = new TAction("save-last-lotos", "Save last RT-LOTOS specification",IconManager.imgic24, IconManager.imgic25, "Save last RT-LOTOS specification", "Save the lastest automatically generated RT-LOTOS specification", 0); -- GitLab