More work on executors
diff --git a/plugins/org.eclipse.epsilon.executors/src/org/eclipse/epsilon/executors/evl/EvlExecutor.java b/plugins/org.eclipse.epsilon.executors/src/org/eclipse/epsilon/executors/evl/EvlExecutor.java
index bca0bfa..7f6a20e 100644
--- a/plugins/org.eclipse.epsilon.executors/src/org/eclipse/epsilon/executors/evl/EvlExecutor.java
+++ b/plugins/org.eclipse.epsilon.executors/src/org/eclipse/epsilon/executors/evl/EvlExecutor.java
@@ -9,6 +9,7 @@
**********************************************************************/
package org.eclipse.epsilon.executors.evl;
+import java.io.PrintWriter;
import java.util.Collection;
import java.util.List;
import java.util.Set;
@@ -24,9 +25,8 @@
*/
public interface EvlExecutor extends EpsilonLanguageExecutor<Collection<UnsatisfiedConstraint>> {
-
/**
- * Send the unsatisfied constraints to the log
+ * Send the unsatisfied constraints to the log, using the implementation logger
*/
void logUnsatisfied(Collection<UnsatisfiedConstraint> unsatisfiedConstraints);
@@ -34,6 +34,12 @@
* Pretty print the unsatisfied constraints
*/
void printUnsatisfied(Collection<UnsatisfiedConstraint> unsatisfiedConstraints);
+
+ /**
+ * Pretty print the unsatisfied constraints using the specified printer
+ */
+ void printUnsatisfied(Collection<UnsatisfiedConstraint> unsatisfiedConstraints, PrintWriter writer);
+
List<Constraint> getConstraints();
diff --git a/plugins/org.eclipse.epsilon.executors/src/org/eclipse/epsilon/executors/evl/SimpleEvlExecutor.java b/plugins/org.eclipse.epsilon.executors/src/org/eclipse/epsilon/executors/evl/SimpleEvlExecutor.java
index 59f889a..629845b 100644
--- a/plugins/org.eclipse.epsilon.executors/src/org/eclipse/epsilon/executors/evl/SimpleEvlExecutor.java
+++ b/plugins/org.eclipse.epsilon.executors/src/org/eclipse/epsilon/executors/evl/SimpleEvlExecutor.java
@@ -10,6 +10,7 @@
package org.eclipse.epsilon.executors.evl;
import java.io.File;
+import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
@@ -59,12 +60,10 @@
this(false, 0, evlFixer);
}
-
public SimpleEvlExecutor(boolean useParallel) {
this(useParallel, 1, new CommandLineFixer());
}
-
public SimpleEvlExecutor(boolean useParallel, int parallelism, IEvlFixer evlFixer) {
this(useParallel ? new EvlModuleParallelElements(parallelism) : new EvlModule());
module.setUnsatisfiedConstraintFixer(evlFixer);
@@ -174,9 +173,14 @@
logger.info("All constraints have been satisfied.");
}
}
-
+
@Override
public void printUnsatisfied(Collection<UnsatisfiedConstraint> unsatisfiedConstraints) {
+ printUnsatisfied(unsatisfiedConstraints, new PrintWriter(System.out, true));
+ }
+
+ @Override
+ public void printUnsatisfied(Collection<UnsatisfiedConstraint> unsatisfiedConstraints, PrintWriter writer) {
int numUnsatisfied = unsatisfiedConstraints.size();
if (numUnsatisfied > 0) {
// Separate critiques from constraints
@@ -196,24 +200,31 @@
int tabDivision = maxWidth.orElse(" ").length();
String msg = "Unsatisfied Contraints";
String division = new String(new char[msg.length()]).replace("\0", "=");
- System.out.println(msg);
- System.out.println(division);
+ writer.println();
+ writer.println(division);
+ writer.println(msg);
+ writer.println(division);
for (UnsatisfiedConstraint uc : consraints) {
- System.out.format("\u16D6 %-"+tabDivision+"s %s%n", uc.getConstraint().getName(), uc.getMessage());
+ writer.format("\u16D6 %-"+tabDivision+"s %s%n", uc.getConstraint().getName(), uc.getMessage());
}
+ writer.println(division);
msg = "Unsatisfied Critiques";
division = new String(new char[msg.length()]).replace("\0", "=");
- System.out.println(msg);
- System.out.println(division);
+ writer.println();
+ writer.println(division);
+ writer.println(msg);
+ writer.println(division);
for (UnsatisfiedConstraint uc : consraints) {
- System.out.format("\u16B9 %-"+tabDivision+"s %s%n", uc.getConstraint().getName(), uc.getMessage());
+ writer.format("\u16B9 %-"+tabDivision+"s %s%n", uc.getConstraint().getName(), uc.getMessage());
}
}
else {
String msg = "All constraints have been satisfied";
String division = new String(new char[msg.length()]).replace("\0", "=");
- System.out.println(msg);
- System.out.println(division);
+ writer.println();
+ writer.println(division);
+ writer.println(msg);
+ writer.println(division);
}
}