From 20b4658c25b4f32d64b779777d335fdb38592b5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B8=D1=81=D0=B5=D0=BB=D1=91=D0=B2=20=D0=92=D0=BB?= =?UTF-8?q?=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2?= Date: Thu, 15 Aug 2019 10:30:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20flatZinc?= =?UTF-8?q?=20solver-=D1=8B=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=D1=8E=D1=82=D1=81=D1=8F=20=D0=BF=D0=BE=D0=B4=20Windows?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/inport/ConversionUtils/Solver.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/inport/ConversionUtils/Solver.java b/src/inport/ConversionUtils/Solver.java index 0ee32a9..3fe8a65 100644 --- a/src/inport/ConversionUtils/Solver.java +++ b/src/inport/ConversionUtils/Solver.java @@ -133,6 +133,8 @@ public class Solver { ProcessBuilder pb; boolean isResultsInOutput; + Process solverProcess; + switch (solverName) { case Chuffed: { pb = new ProcessBuilder("minizinc", @@ -140,6 +142,7 @@ public class Solver { constraints, minizincData, "-o", solverResults); isResultsInOutput = false; + solverProcess = pb.start(); break; } case OrTools: { @@ -163,6 +166,7 @@ public class Solver { } pb = new ProcessBuilder("external_tools/or-tools_flatzinc_Ubuntu-18.04-64bit_v7.2.6977/bin/fzn-or-tools", flatZincConstraints); + solverProcess = pb.start(); break; } case Undefined: { @@ -185,7 +189,7 @@ public class Solver { return ""; } } - pb = new ProcessBuilder(flatZincSolver, flatZincConstraints); + solverProcess = new ProcessBuilder(flatZincSolver, flatZincConstraints).start(); break; } default: @@ -196,7 +200,8 @@ public class Solver { isDestroyed = false; lock.unlock(); - final Process process = pb.start(); + final Process process = solverProcess; + final BufferedReader br = new BufferedReader(new InputStreamReader(solverProcess.getInputStream())); Thread killer = new Thread(() -> { lock.lock(); @@ -220,11 +225,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(); + String output = br.lines().collect(Collectors.joining("\n")); + int exitCode = solverProcess.waitFor(); lock.lock(); try { @@ -246,12 +249,10 @@ public class Solver { if (isResultsInOutput) { try (FileWriter res = new FileWriter(solverResults)) { - res.write(br.lines().collect(Collectors.joining("\n"))); + res.write(output); } interpreter.accept(task, solverResults); } else { - - String output = br.lines().collect(Collectors.joining("\n")); // String errors = br.lines().collect(Collectors.joining("\n")); // // System.out.println("output : " + output); -- GitLab