@Override public PMMLObject popParent(){ PMMLObject parent = super.popParent(); if(parent instanceof Model){ Model model = (Model)parent; LocalTransformations localTransformations = model.getLocalTransformations(); if(localTransformations != null){ processLocalTransformations(localTransformations); if(!localTransformations.hasDerivedFields()){ model.setLocalTransformations(null); } } } else if(parent instanceof PMML){ PMML pmml = (PMML)parent; TransformationDictionary transformationDictionary = pmml.getTransformationDictionary(); if(transformationDictionary != null){ processTransformationDictionary(transformationDictionary); if(!transformationDictionary.hasDefineFunctions() && !transformationDictionary.hasDerivedFields()){ pmml.setTransformationDictionary(null); } } } return parent; }
@Override public PMMLObject popParent(){ PMMLObject parent = super.popParent(); if(parent instanceof Model){ Model model = (Model)parent; LocalTransformations localTransformations = model.getLocalTransformations(); if(localTransformations != null){ processLocalTransformations(localTransformations); if(!localTransformations.hasDerivedFields()){ model.setLocalTransformations(null); } } } else if(parent instanceof PMML){ PMML pmml = (PMML)parent; TransformationDictionary transformationDictionary = pmml.getTransformationDictionary(); if(transformationDictionary != null){ processTransformationDictionary(transformationDictionary); if(!transformationDictionary.hasDefineFunctions() && !transformationDictionary.hasDerivedFields()){ pmml.setTransformationDictionary(null); } } } return parent; }
@Test public void inspectFunctions(){ PMML pmml = createPMML(); assertVersionRange(pmml, Version.PMML_3_0, Version.PMML_4_3); Apply apply = new Apply() .setFunction("lowercase"); DefineFunction defineFunction = new DefineFunction("convert_case", OpType.CATEGORICAL, null) .addParameterFields(new ParameterField(FieldName.create("string"))) .setExpression(apply); TransformationDictionary transformationDictionary = new TransformationDictionary() .addDefineFunctions(defineFunction); pmml.setTransformationDictionary(transformationDictionary); assertVersionRange(pmml, Version.PMML_4_1, Version.PMML_4_3); apply.setFunction("uppercase"); assertVersionRange(pmml, Version.PMML_3_0, Version.PMML_4_3); apply.setFunction(null); assertVersionRange(pmml, Version.PMML_3_0, Version.PMML_3_0); }