From c6b435341dc57876c55b96f3ea2f14b14b01fed1 Mon Sep 17 00:00:00 2001 From: Vlad_kv Date: Tue, 4 Dec 2018 12:59:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=80=D0=B5=D1=88=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B8=D0=B7=20=D0=BA=D0=BE=D0=B4=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/inport/Main.java | 74 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/src/inport/Main.java b/src/inport/Main.java index cbf6181..7a11750 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]; -- GitLab