From 648a35096b207349c28878d50a41791a9d0e4bf3 Mon Sep 17 00:00:00 2001 From: Vlad_kv Date: Mon, 5 Aug 2019 21:08:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BB=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/inport/ConversionUtils/Solver.java | 38 +++++++++++++++++++------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/src/inport/ConversionUtils/Solver.java b/src/inport/ConversionUtils/Solver.java index 248a289..e44a29f 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 ""; } -- GitLab