use of org.dmg.pmml.Interval in project drools by kiegroup.
the class KiePMMLDiscretizeBinFactoryTest method getDiscretizeBinVariableDeclaration.
@Test
public void getDiscretizeBinVariableDeclaration() throws IOException {
String variableName = "variableName";
double leftMargin = 45.32;
Interval interval = new Interval();
interval.setLeftMargin(leftMargin);
interval.setRightMargin(null);
interval.setClosure(Interval.Closure.CLOSED_OPEN);
String binValue = "binValue";
DiscretizeBin discretizeBin = new DiscretizeBin();
discretizeBin.setBinValue(binValue);
discretizeBin.setInterval(interval);
BlockStmt retrieved = KiePMMLDiscretizeBinFactory.getDiscretizeBinVariableDeclaration(variableName, discretizeBin);
String closureString = CLOSURE.class.getName() + "." + CLOSURE.byName(interval.getClosure().value()).name();
String text = getFileContent(TEST_01_SOURCE);
Statement expected = JavaParserUtils.parseBlock(String.format(text, variableName, leftMargin, closureString, binValue));
assertTrue(JavaParserUtils.equalsNode(expected, retrieved));
List<Class<?>> imports = Arrays.asList(Collections.class, KiePMMLDiscretizeBin.class, KiePMMLInterval.class);
commonValidateCompilationWithImports(retrieved, imports);
}
use of org.dmg.pmml.Interval in project drools by kiegroup.
the class KiePMMLIntervalFactoryTest method getIntervalVariableDeclaration.
@Test
public void getIntervalVariableDeclaration() throws IOException {
String variableName = "variableName";
double leftMargin = 45.32;
Interval interval = new Interval();
interval.setLeftMargin(leftMargin);
interval.setRightMargin(null);
interval.setClosure(Interval.Closure.CLOSED_OPEN);
BlockStmt retrieved = KiePMMLIntervalFactory.getIntervalVariableDeclaration(variableName, interval);
String closureString = CLOSURE.class.getName() + "." + CLOSURE.byName(interval.getClosure().value()).name();
String text = getFileContent(TEST_01_SOURCE);
Statement expected = JavaParserUtils.parseBlock(String.format(text, variableName, leftMargin, closureString));
assertTrue(JavaParserUtils.equalsNode(expected, retrieved));
List<Class<?>> imports = Arrays.asList(Collections.class, KiePMMLInterval.class);
commonValidateCompilationWithImports(retrieved, imports);
}
use of org.dmg.pmml.Interval in project drools by kiegroup.
the class KiePMMLDiscretizeFactoryTest method getInterval.
private static Interval getInterval(Number leftMargin, Number rightMargin, Interval.Closure closure) {
Interval toReturn = new Interval();
toReturn.setLeftMargin(leftMargin);
toReturn.setRightMargin(rightMargin);
toReturn.setClosure(closure);
return toReturn;
}
use of org.dmg.pmml.Interval in project drools by kiegroup.
the class DMNImportPMMLInfo method from.
public static Either<Exception, DMNImportPMMLInfo> from(InputStream is, DMNCompilerConfigurationImpl cc, DMNModelImpl model, Import i) {
try {
final PMML pmml = org.jpmml.model.PMMLUtil.unmarshal(is);
PMMLHeaderInfo h = PMMLInfo.pmmlToHeaderInfo(pmml, pmml.getHeader());
for (DataField df : pmml.getDataDictionary().getDataFields()) {
String dfName = df.getName().getValue();
BuiltInType ft = getBuiltInTypeByDataType(df.getDataType());
List<FEELProfile> helperFEELProfiles = cc.getFeelProfiles();
DMNFEELHelper feel = new DMNFEELHelper(cc.getRootClassLoader(), helperFEELProfiles);
List<UnaryTest> av = new ArrayList<>();
if (df.getValues() != null && !df.getValues().isEmpty() && ft != BuiltInType.UNKNOWN) {
final BuiltInType feelType = ft;
String lov = df.getValues().stream().map(Value::getValue).map(o -> feelType == BuiltInType.STRING ? "\"" + o.toString() + "\"" : o.toString()).collect(Collectors.joining(","));
av = feel.evaluateUnaryTests(lov, Collections.emptyMap());
} else if (df.getIntervals() != null && !df.getIntervals().isEmpty() && ft != BuiltInType.UNKNOWN) {
for (Interval interval : df.getIntervals()) {
String utString = null;
switch(interval.getClosure()) {
case CLOSED_CLOSED:
utString = new StringBuilder("[").append(interval.getLeftMargin()).append("..").append(interval.getRightMargin()).append("]").toString();
break;
case CLOSED_OPEN:
utString = new StringBuilder("[").append(interval.getLeftMargin()).append("..").append(interval.getRightMargin()).append(")").toString();
break;
case OPEN_CLOSED:
utString = new StringBuilder("(").append(interval.getLeftMargin()).append("..").append(interval.getRightMargin()).append("]").toString();
break;
case OPEN_OPEN:
utString = new StringBuilder("(").append(interval.getLeftMargin()).append("..").append(interval.getRightMargin()).append(")").toString();
break;
}
List<UnaryTest> ut = feel.evaluateUnaryTests(utString, Collections.emptyMap());
av.addAll(ut);
}
}
DMNType type = new SimpleTypeImpl(i.getNamespace(), dfName, null, false, av, model.getTypeRegistry().resolveType(model.getDefinitions().getURIFEEL(), ft.getName()), ft);
model.getTypeRegistry().registerType(type);
}
pmml.getModels().stream().forEach(m -> registerOutputFieldType(m, model, i));
List<DMNPMMLModelInfo> models = pmml.getModels().stream().map(m -> PMMLInfo.pmmlToModelInfo(m)).map(proto -> DMNPMMLModelInfo.from(proto, model, i)).collect(Collectors.toList());
DMNImportPMMLInfo info = new DMNImportPMMLInfo(i, models, h);
return Either.ofRight(info);
} catch (Throwable e) {
return Either.ofLeft(new Exception("Unable to process DMNImportPMMLInfo", e));
}
}
use of org.dmg.pmml.Interval in project drools by kiegroup.
the class PMMLModelTestUtils method getRandomInterval.
public static Interval getRandomInterval() {
Random random = new Random();
Number leftMargin = random.nextInt(100) / 10;
Number rightMargin = leftMargin.doubleValue() + random.nextInt(50) / 10;
Interval toReturn = new Interval();
toReturn.setLeftMargin(leftMargin);
toReturn.setRightMargin(rightMargin);
toReturn.setClosure(getRandomClosure());
return toReturn;
}
Aggregations