From e4f1f79f10bf6dfc562e93f081341ff99e6667bd Mon Sep 17 00:00:00 2001
From: Fabien Tessier <fabien.tessier@telecom-paristech.fr>
Date: Fri, 20 Oct 2017 13:53:53 +0200
Subject: [PATCH] Clone README and licence files in project directories

---
 .../toexecutable/AVATAR2CPOSIX.java           |  2 +-
 src/main/java/common/SpecConfigTTool.java     |  1 -
 src/main/java/myutil/FileUtils.java           | 73 +++++++++++++++++--
 .../tmltranslator/TMLTextSpecification.java   |  4 +-
 src/main/java/ui/GTURTLEModeling.java         |  4 +-
 .../window/JDialogProverifVerification.java   | 15 ++--
 .../ui/window/JDialogSystemCGeneration.java   |  2 +-
 7 files changed, 80 insertions(+), 21 deletions(-)

diff --git a/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java b/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java
index 1a70657bab..ea519876e5 100755
--- a/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java
+++ b/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java
@@ -104,7 +104,7 @@ public class AVATAR2CPOSIX {
     public void saveInFiles(String path) throws FileException {
 
         TraceManager.addDev("Generating files");
-        if (!FileUtils.checkAndCreateAVATARDir(path))
+        if (!FileUtils.checkAndCreateAVATARCodeDir(path))
         	throw new FileException("ERROR: Executable code directory cannot be created.");
         File src_dir = new File(path + GENERATED_PATH);
         if (!src_dir.exists()) {
diff --git a/src/main/java/common/SpecConfigTTool.java b/src/main/java/common/SpecConfigTTool.java
index 99bf1b813e..24a305aa06 100644
--- a/src/main/java/common/SpecConfigTTool.java
+++ b/src/main/java/common/SpecConfigTTool.java
@@ -109,7 +109,6 @@ public class SpecConfigTTool {
 	
 	public static File createProjectConfig(File dir) {
 		File test = new File ("./");
-		System.out.println(test.getAbsolutePath());
 		File base;
 		if (test.getAbsolutePath().contains("TTool/bin/"))
 			base = new File("../ttool/launch_configurations/project_config.xml");
diff --git a/src/main/java/myutil/FileUtils.java b/src/main/java/myutil/FileUtils.java
index 6c6363fa9f..783500920b 100755
--- a/src/main/java/myutil/FileUtils.java
+++ b/src/main/java/myutil/FileUtils.java
@@ -97,7 +97,7 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
      * @return true if there's no error, false if the directory cannot be created
      * @throws FileException
      */
-    public static boolean checkAndCreateDir(String s) throws FileException {
+    public static boolean checkAndCreateSystemCDir(String s) throws FileException {
     	File f = new File(s);
     	try {
     		if (!f.exists())
@@ -107,10 +107,16 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
     			File make = new File(ConfigurationTTool.SystemCCodeDirectory + "Makefile");
     			File defs = new File(ConfigurationTTool.SystemCCodeDirectory + "Makefile.defs");
     			File src = new File(ConfigurationTTool.SystemCCodeDirectory + "src_simulator");
+    			File lic = new File(ConfigurationTTool.SystemCCodeDirectory + "LICENCE");
+    			File liceng = new File(ConfigurationTTool.SystemCCodeDirectory + "LICENSE_CECILL_ENG");
+    			File licfr = new File(ConfigurationTTool.SystemCCodeDirectory + "LICENSE_CECILL_FR");
     			
     			FileUtils.copyFileToDirectory(make, f, false);
     			FileUtils.copyFileToDirectory(defs, f, false);
     			FileUtils.copyDirectoryToDirectory(src, f);
+    			FileUtils.copyFileToDirectory(lic, f, false);
+    			FileUtils.copyFileToDirectory(liceng, f, false);
+    			FileUtils.copyFileToDirectory(licfr, f, false);
     		}
     		return true;
 		} catch (Exception e) {
@@ -125,7 +131,7 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
      * @return true if there's no error, false if the directory cannot be created
      * @throws FileException
      */
-    public static boolean checkAndCreateAVATARDir(String s) throws FileException {
+    public static boolean checkAndCreateAVATARCodeDir(String s) throws FileException {
     	File f = new File(s);
     	try {
     		if (!f.exists())
@@ -136,12 +142,18 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
     			File defs = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile.defs");
     			File soclib = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile.forsoclib");
     			File src = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "src");
+    			File lic = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "LICENCE");
+    			File liceng = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "LICENSE_CECILL_ENG");
+    			File licfr = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "LICENSE_CECILL_FR");
     			//File topcell = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "generated_topcell");
     		
-				FileUtils.copyFileToDirectory(make, f);
-				FileUtils.copyFileToDirectory(defs, f);
-				FileUtils.copyFileToDirectory(soclib, f);
+				FileUtils.copyFileToDirectory(make, f, false);
+				FileUtils.copyFileToDirectory(defs, f,false);
+				FileUtils.copyFileToDirectory(soclib, f, false);
 				FileUtils.copyDirectoryToDirectory(src, f);
+				FileUtils.copyFileToDirectory(lic, f, false);
+    			FileUtils.copyFileToDirectory(liceng, f, false);
+    			FileUtils.copyFileToDirectory(licfr, f, false);
 				//FileUtils.copyDirectoryToDirectory(topcell, f);
 			}
     		return true;
@@ -152,6 +164,57 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
     	
     }
     
+    public static boolean checkAndCreateProverifDir(String s) throws FileException {
+    	File f = new File(s);
+    	try {
+    		if (!f.exists())
+    			if(!f.mkdir())
+					return false;
+    		if (!s.equals(ConfigurationTTool.ProVerifCodeDirectory)) {
+    			File readme = new File(ConfigurationTTool.ProVerifCodeDirectory + "README");
+    			FileUtils.copyFileToDirectory(readme, f, false);
+    		}
+    		return true;
+    	}
+    	catch (IOException e) {
+			throw new FileException(e.getMessage());
+		}
+    }
+    
+    public static boolean checkAndCreateTMLDir(String s) throws FileException {
+    	File f = new File(s);
+    	try {
+    		if (!f.exists())
+    			if(!f.mkdir())
+					return false;
+    		if (!s.equals(ConfigurationTTool.TMLCodeDirectory)) {
+    			File readme = new File(ConfigurationTTool.TMLCodeDirectory + "README_TML");
+    			FileUtils.copyFileToDirectory(readme, f, false);
+    		}
+    		return true;
+    	}
+    	catch (IOException e) {
+			throw new FileException(e.getMessage());
+		}
+    }
+    
+    public static boolean checkAndCreateCCodeDir(String s) throws FileException {
+    	File f = new File(s);
+    	try {
+    		if (!f.exists())
+    			if(!f.mkdir())
+					return false;
+    		if (!s.equals(ConfigurationTTool.CCodeDirectory)) {
+    			File readme = new File(ConfigurationTTool.CCodeDirectory + "README");
+    			FileUtils.copyFileToDirectory(readme, f, false);
+    		}
+    		return true;
+    	}
+    	catch (IOException e) {
+			throw new FileException(e.getMessage());
+		}
+    }
+    
     public static boolean checkFileForSave(File file) throws FileException {
         //     boolean ok = true;
         //    String pb = "";
diff --git a/src/main/java/tmltranslator/TMLTextSpecification.java b/src/main/java/tmltranslator/TMLTextSpecification.java
index 3a423e2f0c..175c4fb58a 100755
--- a/src/main/java/tmltranslator/TMLTextSpecification.java
+++ b/src/main/java/tmltranslator/TMLTextSpecification.java
@@ -106,9 +106,7 @@ public class TMLTextSpecification<E> {
     }
 
     public void saveFile(String path, String filename) throws FileException {
-    	File dir = new File(path);
-    	if (!dir.exists())
-    		dir.mkdir();
+    	FileUtils.checkAndCreateTMLDir(path);
         TraceManager.addUser("Saving TML spec file in " + path + filename);
         FileUtils.saveFile(path + filename, spec);
     }
diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index 4d5bcd8cd7..79744882e8 100755
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -482,9 +482,7 @@ public class GTURTLEModeling {
                 return true;
             }
             else {
-            	File test = new File(SpecConfigTTool.CCodeDirectory);
-            	if (!test.exists())
-            		test.mkdir();
+            	FileUtils.checkAndCreateCCodeDir(SpecConfigTTool.CCodeDirectory);
                 CCode.saveFile( SpecConfigTTool.CCodeDirectory + File.separator, applicationName );
             }
         }
diff --git a/src/main/java/ui/window/JDialogProverifVerification.java b/src/main/java/ui/window/JDialogProverifVerification.java
index 6af15a6962..f9b26d619f 100644
--- a/src/main/java/ui/window/JDialogProverifVerification.java
+++ b/src/main/java/ui/window/JDialogProverifVerification.java
@@ -48,6 +48,8 @@ import avatartranslator.AvatarPragmaSecret;
 import launcher.LauncherException;
 import launcher.RshClient;
 import launcher.RshClientReader;
+import myutil.FileException;
+import myutil.FileUtils;
 import myutil.GraphicLib;
 import myutil.MasterProcessInterface;
 import myutil.TraceManager;
@@ -436,15 +438,12 @@ public class JDialogProverifVerification extends JDialog implements ActionListen
             if (pathCode.isEmpty()) {
                 pathCode += "pvspec";
             }
+            
+            FileUtils.checkAndCreateProverifDir(pathCode);
 
+            pathCode += "pvspec";
             testFile = new File(pathCode);
-            if (!testFile.exists())
-            	testFile.mkdirs();
-
-            if (testFile.isDirectory()){
-                pathCode += "pvspec";
-                testFile = new File(pathCode);
-            }
+            
 
             File dir = testFile.getParentFile();
 
@@ -507,6 +506,8 @@ public class JDialogProverifVerification extends JDialog implements ActionListen
             mode = STOPPED;
         } catch (InterruptedException ie) {
             mode = NOT_STARTED;
+        } catch (FileException e) {
+        	System.err.println(e.getMessage() + " : Can't generate proverif file.");
         } catch (Exception e) {
             mode = STOPPED;
             throw e;
diff --git a/src/main/java/ui/window/JDialogSystemCGeneration.java b/src/main/java/ui/window/JDialogSystemCGeneration.java
index 19ffea19fd..4ced45e771 100755
--- a/src/main/java/ui/window/JDialogSystemCGeneration.java
+++ b/src/main/java/ui/window/JDialogSystemCGeneration.java
@@ -769,7 +769,7 @@ public class JDialogSystemCGeneration extends JDialog implements ActionListener,
                 jta.append("Saving C++ files...\n");
 
                 pathCode = code1.getText();
-                if (!FileUtils.checkAndCreateDir(SpecConfigTTool.SystemCCodeDirectory))
+                if (!FileUtils.checkAndCreateSystemCDir(SpecConfigTTool.SystemCCodeDirectory))
                 	throw new Throwable();
                 tml2systc.saveFile(pathCode, "appmodel");
 
-- 
GitLab