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

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

parent 11b61d5d
......@@ -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);
......
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