@Override public Map<FieldName, FieldValue> preProcessInputs(Map<FieldName, Object> rawInputs) { LOG.debug("Pre processing raw inputs: = [{}]", rawInputs); final Map<FieldName, FieldValue> preProcInputs = new LinkedHashMap<>(); for (Map.Entry<FieldName, Object> rawEntry : rawInputs.entrySet()) { preProcInputs.putIfAbsent(rawEntry.getKey(), EvaluatorUtil.prepare(eval, rawEntry.getKey(), rawEntry.getValue())); } LOG.debug("Pre processed inputs = [{}]", preProcInputs); return preProcInputs; }
@Override public Map<FieldName, FieldValue> preProcessInputs(Map<FieldName, Object> rawInputs) { LOG.debug("Pre processing raw inputs: = [{}]", rawInputs); final Map<FieldName, FieldValue> preProcInputs = new LinkedHashMap<>(); for (Map.Entry<FieldName, Object> rawEntry : rawInputs.entrySet()) { if (!preProcInputs.containsKey(rawEntry.getKey())) { preProcInputs.put(rawEntry.getKey(), EvaluatorUtil.prepare(eval, rawEntry.getKey(), rawEntry.getValue())); } } LOG.debug("Pre processed inputs = [{}]", preProcInputs); return preProcInputs; }
@Override public Result evaluate(Map<Descriptor, ?> values) throws Exception { org.jpmml.evaluator.Evaluator evaluator = (org.jpmml.evaluator.Evaluator) getModelManager(); Map<FieldName, org.jpmml.evaluator.FieldValue> arguments = new LinkedHashMap<FieldName, org.jpmml.evaluator.FieldValue>(); Map<FieldName, DataField> dataFieldMap = new LinkedHashMap<FieldName, DataField>(); List<Descriptor> descriptors = getDescriptors(); for(Descriptor descriptor : descriptors){ FieldName field = FieldNameUtil.encodeDescriptor(descriptor); DataField dataField = dataFieldMap.get(field); if(dataField == null){ dataField = evaluator.getDataField(field); // For compatibility with generic PMML producer software if(dataField == null){ field = new FieldName(descriptor.getId()); dataField = evaluator.getDataField(field); } // End if if(dataField == null){ throw new IllegalArgumentException(); } dataFieldMap.put(field, dataField); } Object value = values.get(descriptor); org.jpmml.evaluator.FieldValue fieldValue = EvaluatorUtil.prepare(evaluator, field, value); arguments.put(field, fieldValue); } Map<FieldName, ?> result = evaluator.evaluate(arguments); Object targetValue = result.get(evaluator.getTargetField()); return new Result(EvaluatorUtil.decode(targetValue), values); }
this.preparedRow.put(inputField, EvaluatorUtil.prepare(this.evaluator, inputField, bodyCell));