package inport; 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 == 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(); ProcessBuilder pb = new ProcessBuilder("minizinc", "--solver", "Chuffed", constraints, minizincData, "-o", solverResults); Process process = pb.start(); int exitCode = process.waitFor(); assert exitCode == 0; long finish = System.currentTimeMillis(); System.out.println((finish - start) + " milliseconds"); 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]; TaskCase task = new TaskCase(); try { task.deserialize(input); ConversionUtil.portToMiniZinc_0(task, output); } catch (IOException ex) { System.out.println(ex.getMessage()); } break; } case "to_MiniZinc_1" : { String input = args[1]; String output = args[2]; TaskCase task = new TaskCase(); try { task.deserialize(input); ConversionUtil.portToMiniZinc_1(task, output); } catch (IOException ex) { System.out.println(ex.getMessage()); } break; } case "resolve_result" : { String input = args[1]; String fileWIthResult = args[2]; String output = args[3]; try { TaskCase task = new TaskCase(); task.deserialize(input); ConversionUtil.resolveMiniZincResults(task, fileWIthResult); task.serialize(output); } catch (IOException | ParserException ex) { System.out.println(ex.getMessage()); } break; } case "debug" : { String fileName = args[1]; String output = args[2]; TaskCase task = new TaskCase(); try { task.deserialize(fileName); task.serialize(output); } catch (IOException e) { System.out.println(e.getMessage()); } break; } default: System.out.println("Unknown type \"" + type + "\""); } } }