Commit 20b4658c authored by Vladislav Kiselev's avatar Vladislav Kiselev

Теперь flatZinc solver-ы запускаются под Windows

parent 11b61d5d
...@@ -133,6 +133,8 @@ public class Solver { ...@@ -133,6 +133,8 @@ public class Solver {
ProcessBuilder pb; ProcessBuilder pb;
boolean isResultsInOutput; boolean isResultsInOutput;
Process solverProcess;
switch (solverName) { switch (solverName) {
case Chuffed: { case Chuffed: {
pb = new ProcessBuilder("minizinc", pb = new ProcessBuilder("minizinc",
...@@ -140,6 +142,7 @@ public class Solver { ...@@ -140,6 +142,7 @@ public class Solver {
constraints, minizincData, constraints, minizincData,
"-o", solverResults); "-o", solverResults);
isResultsInOutput = false; isResultsInOutput = false;
solverProcess = pb.start();
break; break;
} }
case OrTools: { case OrTools: {
...@@ -163,6 +166,7 @@ public class Solver { ...@@ -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", pb = new ProcessBuilder("external_tools/or-tools_flatzinc_Ubuntu-18.04-64bit_v7.2.6977/bin/fzn-or-tools",
flatZincConstraints); flatZincConstraints);
solverProcess = pb.start();
break; break;
} }
case Undefined: { case Undefined: {
...@@ -185,7 +189,7 @@ public class Solver { ...@@ -185,7 +189,7 @@ public class Solver {
return ""; return "";
} }
} }
pb = new ProcessBuilder(flatZincSolver, flatZincConstraints); solverProcess = new ProcessBuilder(flatZincSolver, flatZincConstraints).start();
break; break;
} }
default: default:
...@@ -196,7 +200,8 @@ public class Solver { ...@@ -196,7 +200,8 @@ public class Solver {
isDestroyed = false; isDestroyed = false;
lock.unlock(); lock.unlock();
final Process process = pb.start(); final Process process = solverProcess;
final BufferedReader br = new BufferedReader(new InputStreamReader(solverProcess.getInputStream()));
Thread killer = new Thread(() -> { Thread killer = new Thread(() -> {
lock.lock(); lock.lock();
...@@ -220,11 +225,9 @@ public class Solver { ...@@ -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(); killer.start();
int exitCode = process.waitFor(); String output = br.lines().collect(Collectors.joining("\n"));
int exitCode = solverProcess.waitFor();
lock.lock(); lock.lock();
try { try {
...@@ -246,12 +249,10 @@ public class Solver { ...@@ -246,12 +249,10 @@ public class Solver {
if (isResultsInOutput) { if (isResultsInOutput) {
try (FileWriter res = new FileWriter(solverResults)) { try (FileWriter res = new FileWriter(solverResults)) {
res.write(br.lines().collect(Collectors.joining("\n"))); res.write(output);
} }
interpreter.accept(task, solverResults); interpreter.accept(task, solverResults);
} else { } else {
String output = br.lines().collect(Collectors.joining("\n"));
// String errors = br.lines().collect(Collectors.joining("\n")); // String errors = br.lines().collect(Collectors.joining("\n"));
// //
// System.out.println("output : " + output); // System.out.println("output : " + output);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment