diff --git a/src/inport/Main.java b/src/inport/Main.java index cbf6181b3781ac487580e7828e832f98bff77e78..7a1175092232cc81f2413237dea59c34ef319def 100644 --- a/src/inport/Main.java +++ b/src/inport/Main.java @@ -1,16 +1,86 @@ package inport; -import java.io.IOException; +import java.io.*; public class Main { + + private static void removeDirectory(File dir) { + if (dir.isDirectory()) { + File[] files = dir.listFiles(); + if (files != null && files.length > 0) { + for (File aFile : files) { + removeDirectory(aFile); + } + } + } + dir.delete(); + } + public static void main(String[] args) { - if (args.length < 1) { + if (args.length == 0) { System.out.println("To few arguments."); return; } String type = args[0]; switch (type) { + case "solve" : { + String fileName = args[1]; + + File directory = new File("temp_data"); + if (!directory.exists()) { + directory.mkdir(); + } + + String tempDir = "temp_data/"; + String minizincData = tempDir + "minizinc_data.dzn"; + String solverResults = tempDir + "solver_results.txt"; + String constraints = tempDir + "constraints.mzn"; + + TaskCase task = new TaskCase(); + try { + try (FileWriter res = new FileWriter(constraints)) { + BufferedReader reader = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream("/constraints/conversion_1.mzn"))); + String line; + while ((line = reader.readLine()) != null) { + res.write(line + "\n"); + } + } + task.deserialize(fileName); + ConversionUtil.portToMiniZinc_1(task, minizincData); + + long start = System.currentTimeMillis(); + + Process p = Runtime.getRuntime().exec("minizinc --solver Chuffed " + constraints + " " + minizincData); + p.waitFor(); + + long finish = System.currentTimeMillis(); + + System.out.println((finish - start) + " milliseconds"); + + try (FileWriter res = new FileWriter(solverResults)) { + BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); + + String line; + while ((line = reader.readLine()) != null) { + res.write(line + "\n"); + } + } + + ConversionUtil.resolveMiniZincResults(task, solverResults); + task.serialize(fileName); + } catch (IOException | InterruptedException ex) { + System.out.println(ex.getMessage()); + } catch (ParserException ex) { + if (ex.getMessage().equals("No solution.")) { + System.out.println(ex.getMessage()); + } else { + System.out.println("ParserException : " + ex.getMessage()); + } + } + removeDirectory(directory); + break; + } case "to_MiniZinc_0" : { String input = args[1]; String output = args[2];