From cded7e18c13036ea2472176681b634f497512bd3 Mon Sep 17 00:00:00 2001
From: Fabien Tessier <fabien.tessier@telecom-paristech.fr>
Date: Thu, 21 Dec 2017 16:18:02 +0100
Subject: [PATCH] Move directory creation from FileUtils to SpecConfigTTool

---
 .../toexecutable/AVATAR2CPOSIX.java           |   3 +-
 .../touppaal/AVATAR2UPPAAL.java               |   3 +-
 src/main/java/common/SpecConfigTTool.java     | 521 +++++++++++-------
 src/main/java/myutil/FileUtils.java           | 145 -----
 .../tmltranslator/TMLTextSpecification.java   |   4 +-
 .../tmltranslator/touppaal/TML2UPPAAL.java    |   4 +-
 .../translator/touppaal/TURTLE2UPPAAL.java    |   4 +-
 src/main/java/ui/GTURTLEModeling.java         |   2 +-
 .../window/JDialogProverifVerification.java   |   3 +-
 .../ui/window/JDialogSystemCGeneration.java   |   2 +-
 10 files changed, 351 insertions(+), 340 deletions(-)

diff --git a/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java b/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java
index ea519876e5..db6eebf158 100755
--- a/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java
+++ b/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java
@@ -42,6 +42,7 @@
 package avatartranslator.toexecutable;
 
 import avatartranslator.*;
+import common.SpecConfigTTool;
 import myutil.*;
 
 import java.io.File;
@@ -104,7 +105,7 @@ public class AVATAR2CPOSIX {
     public void saveInFiles(String path) throws FileException {
 
         TraceManager.addDev("Generating files");
-        if (!FileUtils.checkAndCreateAVATARCodeDir(path))
+        if (!SpecConfigTTool.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/avatartranslator/touppaal/AVATAR2UPPAAL.java b/src/main/java/avatartranslator/touppaal/AVATAR2UPPAAL.java
index e5b05fb9c5..98abd5ca03 100755
--- a/src/main/java/avatartranslator/touppaal/AVATAR2UPPAAL.java
+++ b/src/main/java/avatartranslator/touppaal/AVATAR2UPPAAL.java
@@ -42,6 +42,7 @@
 package avatartranslator.touppaal;
 
 import avatartranslator.*;
+import common.SpecConfigTTool;
 import myutil.Conversion;
 import myutil.FileException;
 import myutil.FileUtils;
@@ -144,7 +145,7 @@ public class AVATAR2UPPAAL {
 
 
     public void saveInFile(String path) throws FileException {
-    	FileUtils.checkAndCreateUPPAALDir(path);
+    	SpecConfigTTool.checkAndCreateUPPAALDir(path);
         FileUtils.saveFile(path + "spec.xml", spec.makeSpec());
         //System.out.println("spec.xml generated:\n" + spec.getFullSpec());
     }
diff --git a/src/main/java/common/SpecConfigTTool.java b/src/main/java/common/SpecConfigTTool.java
index 1b0e619a3b..f026b6ceb9 100644
--- a/src/main/java/common/SpecConfigTTool.java
+++ b/src/main/java/common/SpecConfigTTool.java
@@ -12,6 +12,7 @@ import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 
+import myutil.FileException;
 import myutil.FileUtils;
 import myutil.MalformedConfigurationException;
 import myutil.TraceManager;
@@ -28,37 +29,37 @@ public class SpecConfigTTool {
 	public static String SystemCCodeCompileCommand="";
 	public static String SystemCCodeExecuteCommand="";
 	public static String SystemCCodeInteractiveExecuteCommand="";
-	
+
 	public static String CCodeDirectory="";
-	
+
 	public static String ProVerifCodeDirectory="";
-	
+
 	public static String AVATARExecutableCodeDirectory="";
 	public static String AVATARExecutableCodeCompileCommand="";
 	public static String AVATARExecutableCodeExecuteCommand="";
-	
+
 	public static String AVATARMPSoCCodeDirectory="";
 	public static String AVATARMPSoCCompileCommand="";
 	public static String AVATARExecutableSoclibCodeCompileCommand="";
 	public static String AVATARExecutableSoclibCodeExecuteCommand="";
 	public static String AVATARExecutableSoclibCodeTraceCommand="";
-	
+
 	public static String TMLCodeDirectory="";
-	
+
 	public static String IMGPath="";
-	
+
 	public static String DocGenPath="";
-	
+
 	public static String GGraphPath="";
 	public static String TGraphPath="";
-	
+
 	public static String UPPAALCodeDirectory="";
-	
+
 	public static String VCDPath="";
 	public static String ExternalCommand1="";
 
 	public static String NCDirectory="";
-	
+
 	private static String ProjectSystemCCodeDirectory = "/c++_code/";
 	private static String ProjectCCodeDirectory = "/c_code/";
 	private static String ProjectProVerifCodeDirectory = "/proverif/";
@@ -72,99 +73,99 @@ public class SpecConfigTTool {
 	private static String ProjectUPPAALCodeDirectory="/uppaal/";
 	private static String ProjectVCDDirectory="/c++_code/";
 	private static String ProjectNCDirectory="/nc/";
-	
+
 	public static int lastPanel = -1;
 	public static int lastTab = -1;
 	public static String lastVCD="";
-	
+
 	private static String basicConfigPath="";
-	
+
 	public static void loadConfiguration() {
 		SystemCCodeDirectory = ConfigurationTTool.SystemCCodeDirectory;
 		SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand;
 		SystemCCodeExecuteCommand = ConfigurationTTool.SystemCCodeExecuteCommand;
 		SystemCCodeInteractiveExecuteCommand = ConfigurationTTool.SystemCCodeInteractiveExecuteCommand;
-		
+
 		CCodeDirectory = ConfigurationTTool.CCodeDirectory;
-		
+
 		ProVerifCodeDirectory = ConfigurationTTool.ProVerifCodeDirectory;
-		
+
 		AVATARExecutableCodeDirectory = ConfigurationTTool.AVATARExecutableCodeDirectory;
 		AVATARExecutableCodeCompileCommand = ConfigurationTTool.AVATARExecutableCodeCompileCommand;
 		AVATARExecutableCodeExecuteCommand = ConfigurationTTool.AVATARExecutableCodeExecuteCommand;
-		
+
 		AVATARMPSoCCodeDirectory = ConfigurationTTool.AVATARMPSoCCodeDirectory;
 		AVATARMPSoCCompileCommand = ConfigurationTTool.AVATARMPSoCCompileCommand;
 		AVATARExecutableSoclibCodeCompileCommand = ConfigurationTTool.AVATARExecutableSoclibCodeCompileCommand;
 		AVATARExecutableSoclibCodeExecuteCommand = ConfigurationTTool.AVATARExecutableSoclibCodeExecuteCommand;
 		AVATARExecutableSoclibCodeTraceCommand = ConfigurationTTool.AVATARExecutableSoclibCodeTraceCommand;
-		
+
 		TMLCodeDirectory = ConfigurationTTool.TMLCodeDirectory;
-		
+
 		IMGPath = ConfigurationTTool.IMGPath;
-		
+
 		DocGenPath = ConfigurationTTool.DocGenPath;
-		
+
 		GGraphPath = ConfigurationTTool.GGraphPath;
 		TGraphPath = ConfigurationTTool.TGraphPath;
-		
+
 		UPPAALCodeDirectory = ConfigurationTTool.UPPAALCodeDirectory;
-		
+
 		VCDPath = ConfigurationTTool.VCDPath;
 		ExternalCommand1 = ConfigurationTTool.ExternalCommand1;
-		
+
 		NCDirectory = ConfigurationTTool.NCDirectory;
 	}
-	
+
 	public static void setDirConfig(File dir) {
-    	SystemCCodeDirectory = dir.getAbsolutePath() + ProjectSystemCCodeDirectory;
-    	CCodeDirectory = dir.getAbsolutePath() + ProjectCCodeDirectory;
-    	ProVerifCodeDirectory = dir.getAbsolutePath() + ProjectProVerifCodeDirectory;
-    	AVATARExecutableCodeDirectory = dir.getAbsolutePath() + ProjectAVATARExecutableCodeDirectory;
-    	AVATARMPSoCCodeDirectory = dir.getAbsolutePath() + ProjectAVATARMPSoCCodeDirectory;
-    	TMLCodeDirectory = dir.getAbsolutePath() + ProjectTMLCodeDirectory;
-    	IMGPath = dir.getAbsolutePath() + ProjectIMGDirectory;
-    	DocGenPath = dir.getAbsolutePath() + ProjectDocGenDirectory;
-    	GGraphPath = dir.getAbsolutePath() + ProjectGGraphDirectory;
-    	TGraphPath = dir.getAbsolutePath() + ProjectTGraphDirectory;
-    	UPPAALCodeDirectory = dir.getAbsolutePath() + ProjectUPPAALCodeDirectory;
-    	VCDPath = dir.getAbsolutePath() + ProjectVCDDirectory;
-    	NCDirectory = dir.getAbsolutePath() + ProjectNCDirectory;
-    	
-    	SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SystemCCodeDirectory);
-    	SystemCCodeExecuteCommand = ConfigurationTTool.SystemCCodeExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SystemCCodeDirectory);
-    	SystemCCodeInteractiveExecuteCommand = ConfigurationTTool.SystemCCodeInteractiveExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SystemCCodeDirectory);
-    	
-    	AVATARExecutableCodeExecuteCommand = ConfigurationTTool.AVATARExecutableCodeExecuteCommand.replace(ConfigurationTTool.AVATARExecutableCodeDirectory,  AVATARExecutableCodeDirectory);
-    	AVATARExecutableCodeCompileCommand = ConfigurationTTool.AVATARExecutableCodeCompileCommand.replace(ConfigurationTTool.AVATARExecutableCodeDirectory,  AVATARExecutableCodeDirectory);
-    
-    	AVATARMPSoCCompileCommand = ConfigurationTTool.AVATARMPSoCCompileCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
-    	AVATARExecutableSoclibCodeCompileCommand = ConfigurationTTool.AVATARExecutableSoclibCodeCompileCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
-    	AVATARExecutableSoclibCodeExecuteCommand = ConfigurationTTool.AVATARExecutableSoclibCodeExecuteCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
-    	AVATARExecutableSoclibCodeTraceCommand = ConfigurationTTool.AVATARExecutableSoclibCodeTraceCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
-    	ExternalCommand1 = ConfigurationTTool.ExternalCommand1.replace(ConfigurationTTool.VCDPath, SpecConfigTTool.VCDPath);
+		SystemCCodeDirectory = dir.getAbsolutePath() + ProjectSystemCCodeDirectory;
+		CCodeDirectory = dir.getAbsolutePath() + ProjectCCodeDirectory;
+		ProVerifCodeDirectory = dir.getAbsolutePath() + ProjectProVerifCodeDirectory;
+		AVATARExecutableCodeDirectory = dir.getAbsolutePath() + ProjectAVATARExecutableCodeDirectory;
+		AVATARMPSoCCodeDirectory = dir.getAbsolutePath() + ProjectAVATARMPSoCCodeDirectory;
+		TMLCodeDirectory = dir.getAbsolutePath() + ProjectTMLCodeDirectory;
+		IMGPath = dir.getAbsolutePath() + ProjectIMGDirectory;
+		DocGenPath = dir.getAbsolutePath() + ProjectDocGenDirectory;
+		GGraphPath = dir.getAbsolutePath() + ProjectGGraphDirectory;
+		TGraphPath = dir.getAbsolutePath() + ProjectTGraphDirectory;
+		UPPAALCodeDirectory = dir.getAbsolutePath() + ProjectUPPAALCodeDirectory;
+		VCDPath = dir.getAbsolutePath() + ProjectVCDDirectory;
+		NCDirectory = dir.getAbsolutePath() + ProjectNCDirectory;
+
+		SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SystemCCodeDirectory);
+		SystemCCodeExecuteCommand = ConfigurationTTool.SystemCCodeExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SystemCCodeDirectory);
+		SystemCCodeInteractiveExecuteCommand = ConfigurationTTool.SystemCCodeInteractiveExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SystemCCodeDirectory);
+
+		AVATARExecutableCodeExecuteCommand = ConfigurationTTool.AVATARExecutableCodeExecuteCommand.replace(ConfigurationTTool.AVATARExecutableCodeDirectory,  AVATARExecutableCodeDirectory);
+		AVATARExecutableCodeCompileCommand = ConfigurationTTool.AVATARExecutableCodeCompileCommand.replace(ConfigurationTTool.AVATARExecutableCodeDirectory,  AVATARExecutableCodeDirectory);
+
+		AVATARMPSoCCompileCommand = ConfigurationTTool.AVATARMPSoCCompileCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
+		AVATARExecutableSoclibCodeCompileCommand = ConfigurationTTool.AVATARExecutableSoclibCodeCompileCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
+		AVATARExecutableSoclibCodeExecuteCommand = ConfigurationTTool.AVATARExecutableSoclibCodeExecuteCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
+		AVATARExecutableSoclibCodeTraceCommand = ConfigurationTTool.AVATARExecutableSoclibCodeTraceCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
+		ExternalCommand1 = ConfigurationTTool.ExternalCommand1.replace(ConfigurationTTool.VCDPath, SpecConfigTTool.VCDPath);
 	}
-	
+
 	public static void setBasicConfig(boolean systemcOn) {
-    	try {
+		try {
 			ConfigurationTTool.loadConfiguration(basicConfigPath, systemcOn);
 		} catch (MalformedConfigurationException e) {
 			System.out.println("Couldn't load configuration from file: config.xml");
 		}
-    }
-	
+	}
+
 	public static File createProjectConfig(File dir) {
 		File figures = new File(IMGPath);
 		figures.mkdir();
-		
+
 		File GGraph = new File(GGraphPath);
 		GGraph.mkdir();
-		
+
 		if (!GGraphPath.equals(TGraphPath)) {
 			File TGraph = new File(TGraphPath);
 			TGraph.mkdir();
 		}
-		
+
 		File test = new File ("./");
 		File base;
 		if (test.getAbsolutePath().contains("TTool/bin/"))
@@ -179,132 +180,278 @@ public class SpecConfigTTool {
 		}
 		return null;	
 	}
-	
-	 public static void loadConfigFile(File f) throws MalformedConfigurationException {
-	        if (!FileUtils.checkFileForOpen(f)) {
-	            throw new MalformedConfigurationException("Filepb");
-	        }
-
-	        String data = FileUtils.loadFileData(f);
-
-	        if (data == null) {
-	            throw new MalformedConfigurationException("Filepb");
-	        }
-
-	        loadConfigurationFromXML(data);
-	    }
-	 
-	 public static void loadConfigurationFromXML(String data) throws MalformedConfigurationException {
-
-	        try {
-	            ByteArrayInputStream bais = new ByteArrayInputStream(data.getBytes());
-	            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-	            DocumentBuilder db = dbf.newDocumentBuilder();
-
-	            // building nodes from xml String
-	            Document doc = db.parse(bais);
-	            NodeList nl;
-
-	            nl = doc.getElementsByTagName("LastVCD");
-	            if (nl.getLength() > 0)
-	                LastVCD(nl);
-	            
-	            nl = doc.getElementsByTagName("LastOpenDiagram");
-	            if (nl.getLength() > 0)
-	                LastOpenDiagram(nl);
-	            
-	        } catch (Exception e) {
-	            throw new MalformedConfigurationException(e.getMessage());
-	        }
-	 }
-	 
-	 private static void LastOpenDiagram(NodeList nl) throws MalformedConfigurationException {
-		 try {
-			 Element elt = (Element)(nl.item(0));
-             lastTab = Integer.parseInt(elt.getAttribute("tab"));
-	         lastPanel = Integer.parseInt(elt.getAttribute("panel"));
-         } catch (Exception e) {
-        	 throw new MalformedConfigurationException(e.getMessage());
-	     }
-	 }
-	 
-	 private static void LastVCD(NodeList nl) throws MalformedConfigurationException {
-		 try {
-			 Element elt = (Element)(nl.item(0));
-             lastVCD = elt.getAttribute("data");
-             ExternalCommand1 = "gtkwave " + lastVCD;
-         } catch (Exception e) {
-        	 throw new MalformedConfigurationException(e.getMessage());
-	     }
-	 }
-	 
-	 public static void saveConfiguration(File f) throws MalformedConfigurationException {
-	        int index0, index1, index2;
-	        String tmp, tmp1, tmp2, location;
-	        boolean write = false;
-
-	        if (!FileUtils.checkFileForOpen(f)) {
-	            throw new MalformedConfigurationException("Filepb");
-	        }
-
-	        String data = FileUtils.loadFileData(f);
-
-	        if (data == null) {
-	            throw new MalformedConfigurationException("Filepb");
-	        }
-	        
-	        index0 = data.indexOf("LastVCD");
-
-	        if (index0 > -1) {
-	            index1 = data.indexOf('"', index0);
-	            if (index1 > -1) {
-	                index2 = data.indexOf('"', index1 + 1);
-	                if (index2 > -1) {
-	                    tmp = data.substring(index2, data.length());
-	                    data = data.substring(0, index1+1) + lastVCD + tmp;
-	                    write = true;
-	                }
-	            }
-	        }
-
-	        index0 = data.indexOf("LastOpenDiagram");
-
-	        if (index0 > -1) {
-	            tmp1 = data.substring(0, index0+16);
-	            tmp2 = data.substring(index0+20, data.length());
-	            index1 = tmp2.indexOf("/>");
-	            if (index1 > -1) {
-	                tmp2 = tmp2.substring(index1, tmp2.length());
-	                location = " tab=\"" + lastTab;
-	                location += "\" panel=\"" + lastPanel + "\" ";
-	                data = tmp1 + location + tmp2;
-	                write = true;
-	            }
-	        } else {
-	            index1= data.indexOf("</PROJECTCONFIGURATION>");
-	            if (index1 > -1) {
-	                location = "<LastOpenDiagram tab=\"" + lastTab;
-	                location += "\" panel=\"" + lastPanel + "\"/>\n\n";
-	                data = data.substring(0, index1) + location + data.substring(index1, data.length());
-	                write = true;
-	            }
-	        }
-	        
-	        if (write) {
-	            //sb.append("Writing data=" + data);
-	            try {
-	                FileOutputStream fos = new FileOutputStream(f);
-	                fos.write(data.getBytes());
-	                fos.close();
-	            } catch (Exception e) {
-	                throw new  MalformedConfigurationException("Saving file failed");
-	            }
-	        } else {
-	            TraceManager.addError("Configuration could not be saved");
-	        }
-	 }
-	 
-	 public static void setBasicConfigFile(String file) {
-		 basicConfigPath = file;
-	 }
+
+	public static void loadConfigFile(File f) throws MalformedConfigurationException {
+		if (!FileUtils.checkFileForOpen(f)) {
+			throw new MalformedConfigurationException("Filepb");
+		}
+
+		String data = FileUtils.loadFileData(f);
+
+		if (data == null) {
+			throw new MalformedConfigurationException("Filepb");
+		}
+
+		loadConfigurationFromXML(data);
+	}
+
+	public static void loadConfigurationFromXML(String data) throws MalformedConfigurationException {
+
+		try {
+			ByteArrayInputStream bais = new ByteArrayInputStream(data.getBytes());
+			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+			DocumentBuilder db = dbf.newDocumentBuilder();
+
+			// building nodes from xml String
+			Document doc = db.parse(bais);
+			NodeList nl;
+
+			nl = doc.getElementsByTagName("LastVCD");
+			if (nl.getLength() > 0)
+				LastVCD(nl);
+
+			nl = doc.getElementsByTagName("LastOpenDiagram");
+			if (nl.getLength() > 0)
+				LastOpenDiagram(nl);
+
+		} catch (Exception e) {
+			throw new MalformedConfigurationException(e.getMessage());
+		}
+	}
+
+	private static void LastOpenDiagram(NodeList nl) throws MalformedConfigurationException {
+		try {
+			Element elt = (Element)(nl.item(0));
+			lastTab = Integer.parseInt(elt.getAttribute("tab"));
+			lastPanel = Integer.parseInt(elt.getAttribute("panel"));
+		} catch (Exception e) {
+			throw new MalformedConfigurationException(e.getMessage());
+		}
+	}
+
+	private static void LastVCD(NodeList nl) throws MalformedConfigurationException {
+		try {
+			Element elt = (Element)(nl.item(0));
+			lastVCD = elt.getAttribute("data");
+			ExternalCommand1 = "gtkwave " + lastVCD;
+		} catch (Exception e) {
+			throw new MalformedConfigurationException(e.getMessage());
+		}
+	}
+
+	public static void saveConfiguration(File f) throws MalformedConfigurationException {
+		int index0, index1, index2;
+		String tmp, tmp1, tmp2, location;
+		boolean write = false;
+
+		if (!FileUtils.checkFileForOpen(f)) {
+			throw new MalformedConfigurationException("Filepb");
+		}
+
+		String data = FileUtils.loadFileData(f);
+
+		if (data == null) {
+			throw new MalformedConfigurationException("Filepb");
+		}
+
+		index0 = data.indexOf("LastVCD");
+
+		if (index0 > -1) {
+			index1 = data.indexOf('"', index0);
+			if (index1 > -1) {
+				index2 = data.indexOf('"', index1 + 1);
+				if (index2 > -1) {
+					tmp = data.substring(index2, data.length());
+					data = data.substring(0, index1+1) + lastVCD + tmp;
+					write = true;
+				}
+			}
+		}
+
+		index0 = data.indexOf("LastOpenDiagram");
+
+		if (index0 > -1) {
+			tmp1 = data.substring(0, index0+16);
+			tmp2 = data.substring(index0+20, data.length());
+			index1 = tmp2.indexOf("/>");
+			if (index1 > -1) {
+				tmp2 = tmp2.substring(index1, tmp2.length());
+				location = " tab=\"" + lastTab;
+				location += "\" panel=\"" + lastPanel + "\" ";
+				data = tmp1 + location + tmp2;
+				write = true;
+			}
+		} else {
+			index1= data.indexOf("</PROJECTCONFIGURATION>");
+			if (index1 > -1) {
+				location = "<LastOpenDiagram tab=\"" + lastTab;
+				location += "\" panel=\"" + lastPanel + "\"/>\n\n";
+				data = data.substring(0, index1) + location + data.substring(index1, data.length());
+				write = true;
+			}
+		}
+
+		if (write) {
+			//sb.append("Writing data=" + data);
+			try {
+				FileOutputStream fos = new FileOutputStream(f);
+				fos.write(data.getBytes());
+				fos.close();
+			} catch (Exception e) {
+				throw new  MalformedConfigurationException("Saving file failed");
+			}
+		} else {
+			TraceManager.addError("Configuration could not be saved");
+		}
+	}
+
+	public static void setBasicConfigFile(String file) {
+		basicConfigPath = file;
+	}
+
+	/**
+	 * Check and create the directory for c++ code generation in DIPLODOCUS
+	 * @author Fabien Tessier
+	 * @param s directory path
+	 * @return true if there's no error, false if the directory cannot be created
+	 * @throws FileException
+	 */
+	public static boolean checkAndCreateSystemCDir(String s) throws FileException {
+		File f = new File(s);
+		try {
+			if (!f.exists())
+				if(!f.mkdir())
+					return false;
+			if (!s.equals(ConfigurationTTool.SystemCCodeDirectory)) {
+				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 + "LICENSE");
+				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) {
+			throw new FileException(e.getMessage());
+		}
+	}
+
+	/**
+	 * Check and create the directory for c code generation in AVATAR
+	 * @author Fabien Tessier
+	 * @param s directory path
+	 * @return true if there's no error, false if the directory cannot be created
+	 * @throws FileException
+	 */
+	public static boolean checkAndCreateAVATARCodeDir(String s) throws FileException {
+		File f = new File(s);
+		try {
+			if (!f.exists())
+				if(!f.mkdir())
+					return false;
+			if (!s.equals(ConfigurationTTool.AVATARExecutableCodeDirectory)) {
+				File make = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile");
+				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 + "LICENSE");
+				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, 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;
+		}
+		catch (IOException e) {
+			throw new FileException(e.getMessage());
+		}
+
+	}
+
+	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");
+				if (readme.exists())
+					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");
+				if (readme.exists())
+					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");
+				if (readme.exists())
+					FileUtils.copyFileToDirectory(readme, f, false);
+			}
+			return true;
+		}
+		catch (IOException e) {
+			throw new FileException(e.getMessage());
+		}
+	}
+
+	public static boolean checkAndCreateUPPAALDir(String s) throws FileException {
+		File f = new File(s);
+		try {
+			if (!f.exists())
+				if(!f.mkdir())
+					return false;
+			if (!s.equals(ConfigurationTTool.UPPAALCodeDirectory)) {
+				File readme = new File(ConfigurationTTool.UPPAALCodeDirectory + "README");
+				if (readme.exists())
+					FileUtils.copyFileToDirectory(readme, f, false);
+			}
+			return true;
+		}
+		catch (IOException e) {
+			throw new FileException(e.getMessage());
+		}
+	}
 }
diff --git a/src/main/java/myutil/FileUtils.java b/src/main/java/myutil/FileUtils.java
index 3d3b0f27bb..5735cb87be 100755
--- a/src/main/java/myutil/FileUtils.java
+++ b/src/main/java/myutil/FileUtils.java
@@ -93,151 +93,7 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
 	return new File(path).isDirectory();
     }
 
-    /**
-     * Check and create the directory for c++ code generation in DIPLODOCUS
-     * @author Fabien Tessier
-     * @param s directory path
-     * @return true if there's no error, false if the directory cannot be created
-     * @throws FileException
-     */
-    public static boolean checkAndCreateSystemCDir(String s) throws FileException {
-    	File f = new File(s);
-    	try {
-    		if (!f.exists())
-    			if(!f.mkdir())
-    					return false;
-    		if (!s.equals(ConfigurationTTool.SystemCCodeDirectory)) {
-    			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 + "LICENSE");
-    			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) {
-			throw new FileException(e.getMessage());
-		}
-    }
-    
-    /**
-     * Check and create the directory for c code generation in AVATAR
-     * @author Fabien Tessier
-     * @param s directory path
-     * @return true if there's no error, false if the directory cannot be created
-     * @throws FileException
-     */
-    public static boolean checkAndCreateAVATARCodeDir(String s) throws FileException {
-    	File f = new File(s);
-    	try {
-    		if (!f.exists())
-    			if(!f.mkdir())
-					return false;
-    		if (!s.equals(ConfigurationTTool.AVATARExecutableCodeDirectory)) {
-    			File make = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile");
-    			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 + "LICENSE");
-    			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, 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;
-    	}
-    	catch (IOException e) {
-			throw new FileException(e.getMessage());
-		}
-    	
-    }
-    
-    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");
-    			if (readme.exists())
-    				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");
-    			if (readme.exists())
-    				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");
-    			if (readme.exists())
-    				FileUtils.copyFileToDirectory(readme, f, false);
-    		}
-    		return true;
-    	}
-    	catch (IOException e) {
-			throw new FileException(e.getMessage());
-		}
-    }
     
-    public static boolean checkAndCreateUPPAALDir(String s) throws FileException {
-    	File f = new File(s);
-    	try {
-    		if (!f.exists())
-    			if(!f.mkdir())
-					return false;
-    		if (!s.equals(ConfigurationTTool.UPPAALCodeDirectory)) {
-    			File readme = new File(ConfigurationTTool.UPPAALCodeDirectory + "README");
-    			if (readme.exists())
-    				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;
@@ -363,7 +219,6 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
         return filename;
     }
 
-
     public static boolean hasExtension(File f, String extension) {
         if (f == null) {
             return false;
diff --git a/src/main/java/tmltranslator/TMLTextSpecification.java b/src/main/java/tmltranslator/TMLTextSpecification.java
index 175c4fb58a..61d13dea36 100755
--- a/src/main/java/tmltranslator/TMLTextSpecification.java
+++ b/src/main/java/tmltranslator/TMLTextSpecification.java
@@ -53,6 +53,8 @@ import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Date;
 
+import common.SpecConfigTTool;
+
 /**
  * Class TMLTextSpecification
  * Import and export of TML textual specifications
@@ -106,7 +108,7 @@ public class TMLTextSpecification<E> {
     }
 
     public void saveFile(String path, String filename) throws FileException {
-    	FileUtils.checkAndCreateTMLDir(path);
+    	SpecConfigTTool.checkAndCreateTMLDir(path);
         TraceManager.addUser("Saving TML spec file in " + path + filename);
         FileUtils.saveFile(path + filename, spec);
     }
diff --git a/src/main/java/tmltranslator/touppaal/TML2UPPAAL.java b/src/main/java/tmltranslator/touppaal/TML2UPPAAL.java
index fa3784493f..026d667ffc 100755
--- a/src/main/java/tmltranslator/touppaal/TML2UPPAAL.java
+++ b/src/main/java/tmltranslator/touppaal/TML2UPPAAL.java
@@ -51,6 +51,8 @@ import uppaaldesc.*;
 import java.util.Iterator;
 import java.util.Vector;
 
+import common.SpecConfigTTool;
+
 
 /**
  * Class TML2UPPAAL
@@ -95,7 +97,7 @@ public class TML2UPPAAL {
 
     // Returns a list of all file names ..
     public void saveInFile(String path) throws FileException {
-    	FileUtils.checkAndCreateUPPAALDir(path);
+    	SpecConfigTTool.checkAndCreateUPPAALDir(path);
         FileUtils.saveFile(path + "spec.xml", spec.makeSpec());
         //System.out.println("spec.xml generated:\n" + spec.getFullSpec());
     }
diff --git a/src/main/java/translator/touppaal/TURTLE2UPPAAL.java b/src/main/java/translator/touppaal/TURTLE2UPPAAL.java
index 02c2aaed40..68ee711b61 100755
--- a/src/main/java/translator/touppaal/TURTLE2UPPAAL.java
+++ b/src/main/java/translator/touppaal/TURTLE2UPPAAL.java
@@ -56,6 +56,8 @@ import java.util.LinkedList;
 import java.util.ListIterator;
 import java.util.Vector;
 
+import common.SpecConfigTTool;
+
 /**
 * Class TURTLE2UPPAAL
 * Creation: 15/11/2006
@@ -114,7 +116,7 @@ public class TURTLE2UPPAAL {
 	
 	
 	public void saveInFile(String path) throws FileException {
-		FileUtils.checkAndCreateUPPAALDir(path);
+		SpecConfigTTool.checkAndCreateUPPAALDir(path);
 		FileUtils.saveFile(path + "spec.xml", spec.makeSpec());
 		
 		//System.out.println("spec.xml generated:\n" + spec.getFullSpec());
diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index 27c74ab997..b0b466e0f2 100755
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -495,7 +495,7 @@ public class GTURTLEModeling {
                 return true;
             }
             else {
-            	FileUtils.checkAndCreateCCodeDir(directory);
+            	SpecConfigTTool.checkAndCreateCCodeDir(directory);
                 CCode.saveFile( directory + File.separator, applicationName );
             }
         }
diff --git a/src/main/java/ui/window/JDialogProverifVerification.java b/src/main/java/ui/window/JDialogProverifVerification.java
index 0a9b473871..30a9321b49 100644
--- a/src/main/java/ui/window/JDialogProverifVerification.java
+++ b/src/main/java/ui/window/JDialogProverifVerification.java
@@ -45,6 +45,7 @@ import avatartranslator.AvatarPragma;
 import avatartranslator.AvatarPragmaAuthenticity;
 import avatartranslator.AvatarPragmaReachability;
 import avatartranslator.AvatarPragmaSecret;
+import common.SpecConfigTTool;
 import launcher.LauncherException;
 import launcher.RshClient;
 import launcher.RshClientReader;
@@ -803,7 +804,7 @@ public class JDialogProverifVerification extends JDialog implements ActionListen
                 pathCode += "pvspec";
             }
             
-            FileUtils.checkAndCreateProverifDir(pathCode);
+            SpecConfigTTool.checkAndCreateProverifDir(pathCode);
 
             pathCode += "pvspec";
             testFile = new File(pathCode);
diff --git a/src/main/java/ui/window/JDialogSystemCGeneration.java b/src/main/java/ui/window/JDialogSystemCGeneration.java
index 9a5cef376f..eff2202a48 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.checkAndCreateSystemCDir(SpecConfigTTool.SystemCCodeDirectory))
+                if (!SpecConfigTTool.checkAndCreateSystemCDir(SpecConfigTTool.SystemCCodeDirectory))
                 	throw new Throwable();
                 tml2systc.saveFile(pathCode, "appmodel");
 
-- 
GitLab