@Override
public void execute() throws Exception {
PMML pmml = readPMML(this.model);
CsvUtil.Table inputTable = readTable(this.input, this.separator);
CsvUtil.Table outputTable = readTable(this.output, this.separator);
EvaluatorBuilder evaluatorBuilder = new ModelEvaluatorBuilder(pmml)
.setModelEvaluatorFactory((ModelEvaluatorFactory)newInstance(this.modelEvaluatorFactoryClazz));
Evaluator evaluator = evaluatorBuilder.build();
evaluator.verify();
java.util.function.Function<String, String> cellParser = createCellParser(new HashSet<>(this.missingValues));
List<? extends Map<FieldName, ?>> inputRecords = BatchUtil.parseRecords(inputTable, cellParser);
List<? extends Map<FieldName, ?>> outputRecords = BatchUtil.parseRecords(outputTable, cellParser);
Predicate<FieldName> predicate;
if(this.ignoredFields != null && this.ignoredFields.size() > 0){
predicate = (FieldName name) -> !this.ignoredFields.contains(name);
} else
{
predicate = (FieldName name) -> true;
}
List<Conflict> conflicts;
try(Batch batch = createBatch(evaluator, inputRecords, outputRecords, predicate)){
conflicts = BatchUtil.evaluate(batch, new PMMLEquivalence(this.precision, this.zeroThreshold));
}
for(Conflict conflict : conflicts){
System.err.println(conflict);
}
}