From aba176ede43c5c50c42b3cad2c6e2586811d7dd4 Mon Sep 17 00:00:00 2001
From: Fabien Tessier <fabien.tessier@telecom-paristech.fr>
Date: Fri, 13 Oct 2017 16:33:12 +0200
Subject: [PATCH] Fix c generation for DIPLODOCUS and adapt it for .ttool

---
 src/main/java/common/SpecConfigTTool.java           |  2 ++
 .../modelcompiler/TMLModelCompiler.java             |  4 ++++
 src/main/java/ui/GTURTLEModeling.java               | 13 ++++++++-----
 src/main/java/ui/MainGUI.java                       |  8 +++++---
 src/main/java/ui/window/JDialogCCodeGeneration.java |  9 +++------
 5 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/src/main/java/common/SpecConfigTTool.java b/src/main/java/common/SpecConfigTTool.java
index 925e729efb..0a8a770e0c 100644
--- a/src/main/java/common/SpecConfigTTool.java
+++ b/src/main/java/common/SpecConfigTTool.java
@@ -5,12 +5,14 @@ public class SpecConfigTTool {
 	public static String SystemCCodeCompileCommand="";
 	public static String SystemCCodeExecuteCommand="";
 	public static String SystemCCodeInteractiveExecuteCommand="";
+	public static String CCodeDirectory="";
 	
 	public static void loadConfiguration() {
 		SystemCCodeDirectory = ConfigurationTTool.SystemCCodeDirectory;
 		SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand;
 		SystemCCodeExecuteCommand = ConfigurationTTool.SystemCCodeExecuteCommand;
 		SystemCCodeInteractiveExecuteCommand = ConfigurationTTool.SystemCCodeInteractiveExecuteCommand;
+		CCodeDirectory = ConfigurationTTool.CCodeDirectory;
 	}
 
 }
diff --git a/src/main/java/tmltranslator/modelcompiler/TMLModelCompiler.java b/src/main/java/tmltranslator/modelcompiler/TMLModelCompiler.java
index e32b585d04..9595d5646e 100755
--- a/src/main/java/tmltranslator/modelcompiler/TMLModelCompiler.java
+++ b/src/main/java/tmltranslator/modelcompiler/TMLModelCompiler.java
@@ -122,6 +122,7 @@ public class TMLModelCompiler   {
         tmlm = _tmap.getTMLModeling();
         tmla = _tmap.getTMLArchitecture();
         mappedCPLibs = _tmap.getMappedTMLCPLibs();
+       
         init();
     }
 
@@ -141,6 +142,9 @@ public class TMLModelCompiler   {
         prexList = new ArrayList<TMLPort>();
         buffersList = new ArrayList<Buffer>();
         dataTransfersList = new ArrayList<DataTransfer>();
+        File f = new File(ConfigurationTTool.CCodeDirectory);
+        if (!f.exists())
+        	f.mkdir();
         debugFileName = ConfigurationTTool.CCodeDirectory + "debugFile.txt";
         tmlcpsList = new ArrayList<TMLCP>();
     }
diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index 7bb68e4d45..28f5319e48 100755
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -44,6 +44,7 @@ import avatartranslator.totpn.AVATAR2TPN;
 import avatartranslator.toturtle.AVATAR2TURTLE;
 import avatartranslator.touppaal.AVATAR2UPPAAL;
 import common.ConfigurationTTool;
+import common.SpecConfigTTool;
 import ddtranslator.DDSyntaxException;
 import ddtranslator.DDTranslator;
 import launcher.LauncherException;
@@ -474,14 +475,17 @@ public class GTURTLEModeling {
         CCode = new TMLModelCompiler( _title, applicationName, mgui.frame, mgui.getAllTMLCP(), tmap );
         CCode.toTextFormat();
         try {
-            if( ConfigurationTTool.CCodeDirectory.equals("") )  {
+            if( SpecConfigTTool.CCodeDirectory.equals("") )  {
                 JOptionPane.showMessageDialog(  mgui.frame,
                                                 "No directory for C code generation found in config.xml. The C code cannot be generated.",
                                                 "Control code generation failed", JOptionPane.INFORMATION_MESSAGE );
                 return true;
             }
-            else                {
-                CCode.saveFile( ConfigurationTTool.CCodeDirectory + File.separator, applicationName );
+            else {
+            	File test = new File(SpecConfigTTool.CCodeDirectory);
+            	if (!test.exists())
+            		test.mkdir();
+                CCode.saveFile( SpecConfigTTool.CCodeDirectory + File.separator, applicationName );
             }
         }
         catch( Exception e ) {
@@ -492,8 +496,7 @@ public class GTURTLEModeling {
     }
 
     public boolean generateTMLTxt( String _title ) {
-
-
+    	
         //This branch is activated if doing the syntax check from the architecture panel.
         //It generates the text TML for the architecture and the application + mapping information
         if (tmap != null) {
diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java
index d6d3a7fbb2..09bb4e54d3 100644
--- a/src/main/java/ui/MainGUI.java
+++ b/src/main/java/ui/MainGUI.java
@@ -2330,10 +2330,12 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
     }
 
     public void setDirConfig() {
-    	SpecConfigTTool.SystemCCodeDirectory = dir.getAbsolutePath() + "/c++code/";
+    	SpecConfigTTool.SystemCCodeDirectory = dir.getAbsolutePath() + "/c++_code/";
+    	SpecConfigTTool.CCodeDirectory = dir.getAbsolutePath() + "/c_code/";
     	SpecConfigTTool.SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SpecConfigTTool.SystemCCodeDirectory);
     	SpecConfigTTool.SystemCCodeExecuteCommand = ConfigurationTTool.SystemCCodeExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SpecConfigTTool.SystemCCodeDirectory);
     	SpecConfigTTool.SystemCCodeInteractiveExecuteCommand = ConfigurationTTool.SystemCCodeInteractiveExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SpecConfigTTool.SystemCCodeDirectory);
+    	
     }
     
     public void setBasicConfig() {
@@ -4544,8 +4546,8 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
         //            path = file.getAbsolutePath();
         //        }
         JDialogCCodeGeneration jgen = new JDialogCCodeGeneration( frame, this, "Application code generation and compilation",
-                                                                  ConfigurationTTool.CCodeDirectory,
-                                                                  "make -C " + ConfigurationTTool.CCodeDirectory,
+                                                                  SpecConfigTTool.CCodeDirectory,
+                                                                  "make -C " + SpecConfigTTool.CCodeDirectory,
                                                                   gtm );
         //   jgen.setSize(500, 750);
         GraphicLib.centerOnParent(jgen, 500, 750);
diff --git a/src/main/java/ui/window/JDialogCCodeGeneration.java b/src/main/java/ui/window/JDialogCCodeGeneration.java
index 6bd1a75aff..88861b5cc8 100755
--- a/src/main/java/ui/window/JDialogCCodeGeneration.java
+++ b/src/main/java/ui/window/JDialogCCodeGeneration.java
@@ -138,12 +138,9 @@ public class JDialogCCodeGeneration extends JDialog implements ActionListener, R
         mgui = _mgui;
         gtm = _gtm;
 
-        if (pathCode == null) {
-            pathCode = _pathCode;
-        }
-
-        if (pathCompiler == null)
-            pathCompiler = _pathCompiler;
+        pathCode = _pathCode;
+        
+        pathCompiler = _pathCompiler;
 
         initComponents();
         myInitComponents();
-- 
GitLab