diff --git a/src/inport/ConversionUtils/Solver.java b/src/inport/ConversionUtils/Solver.java index 248a2892397c49053cd91a7e475bb1b93adfc645..e44a29fb7d45cc3d7b3e13eda1dbfd9b8637ff1f 100644 --- a/src/inport/ConversionUtils/Solver.java +++ b/src/inport/ConversionUtils/Solver.java @@ -56,12 +56,31 @@ public class Solver { directory.mkdir(); } - tempDir = tempDir + "/"; + File candidate = new File(tempDir + "/1/"); + + final int limitOfDirectories = 1000000; + + int i = 1; + while (i < limitOfDirectories) { + candidate = new File(tempDir + "/" + i + "/"); + if (candidate.mkdir()) { + break; + } + i++; + } + + if (i == limitOfDirectories) { + return "Impossible to create files from " + tempDir + "/1/ to " + tempDir + "/" + (limitOfDirectories - 1) + "/ ."; + } + + tempDir = tempDir + "/" + i + "/"; String minizincData = tempDir + "minizinc_data.dzn"; String solverResults = tempDir + "solver_results.txt"; String constraints = tempDir + "constraints.mzn"; String flatZincConstraints = tempDir + "model.fzn"; + new File(solverResults).delete(); + try { try (FileWriter res = new FileWriter(constraints)) { BufferedReader reader = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream("/constraints/" + constraintName))); @@ -133,6 +152,9 @@ public class Solver { } }); + BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); +// BufferedReader br2 = new BufferedReader(new InputStreamReader(process.getErrorStream())); + killer.start(); int exitCode = process.waitFor(); @@ -156,20 +178,16 @@ public class Solver { if (isResultsInOutput) { try (FileWriter res = new FileWriter(solverResults)) { - BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); res.write(br.lines().collect(Collectors.joining("\n"))); } interpreter.accept(task, solverResults); } else { - BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); String output = br.lines().collect(Collectors.joining("\n")); - -// BufferedReader br2 = new BufferedReader(new InputStreamReader(process.getErrorStream())); -// String errors = br.lines().collect(Collectors.joining("\n")); - -// System.out.println("output : " + output); -// System.out.println("errors : " + errors); +// String errors = br.lines().collect(Collectors.joining("\n")); +// +// System.out.println("output : " + output); +// System.out.println("errors : " + errors); if (output.trim().equals("=====UNSATISFIABLE=====")) { task.setSolution(new ArrayList<>()); @@ -181,7 +199,7 @@ public class Solver { } catch (UncheckedIOException | IOException | InterruptedException | ParserException ex) { return ex.getMessage(); } finally { -// removeDirectory(directory); + removeDirectory(candidate); } return ""; }