@Override public void execute() throws MojoExecutionException, MojoFailureException { VisitorBattery visitorBattery = new VisitorBattery(); boolean keepLocator = getKeepLocator(); visitorBattery.add(keepLocator ? LocatorTransformer.class : LocatorNullifier.class); List<String> visitorClasses = getVisitorClasses(); if(visitorClasses != null){ try { for(String visitorClass : visitorClasses){ Class<?> clazz = Class.forName(visitorClass); visitorBattery.add(clazz.asSubclass(Visitor.class)); } } catch(ClassNotFoundException | ClassCastException e){ throw new MojoFailureException("Invalid visitorClasses parameter", e); } } List<ModelSet> modelSets = getModelSets(); if(modelSets == null || modelSets.isEmpty()){ throw new MojoFailureException("Missing modelSets parameter"); } for(ModelSet modelSet : modelSets){ transform(modelSet, visitorBattery); } }
private void transform(File pmmlFile, File serFile, VisitorBattery visitorBattery) throws Exception { PMML pmml; try(InputStream is = new FileInputStream(pmmlFile)){ pmml = PMMLUtil.unmarshal(is); } visitorBattery.applyTo(pmml); try(OutputStream os = new FileOutputStream(serFile)){ SerializationUtil.serializePMML(pmml, os); } }
VisitorBattery visitorBattery = new VisitorBattery(); visitorBattery.add(LocatorNullifier.class); visitorBattery.addAll(new AttributeOptimizerBattery()); visitorBattery.addAll(new ElementOptimizerBattery()); visitorBattery.addAll(new AttributeInternerBattery()); visitorBattery.addAll(new ElementInternerBattery()); visitorBattery.addAll(new ListFinalizerBattery()); visitorBattery.applyTo(pmml);
.setMathContext(MathContext.FLOAT); VisitorBattery visitorBattery = new VisitorBattery(); visitorBattery.add(NodeScoreParser.class); visitorBattery.add(FloatInterner.class); visitorBattery.applyTo(treeModel); visitorBattery.applyTo(treeModel);
VisitorBattery visitors = new VisitorBattery(); Class<? extends Visitor> visitorClazz = clazz.asSubclass(Visitor.class); visitors.add(visitorClazz); } else visitors.addAll(visitorBattery); } else
public LoadingModelEvaluatorBuilder load(InputStream is, String modelName) throws SAXException, JAXBException { Schema schema = getSchema(); ValidationEventHandler validationEventHandler = getValidationEventHandler(); List<? extends XMLFilter> filters = getFilters(); boolean locatable = getLocatable(); VisitorBattery visitors = getVisitors(); Unmarshaller unmarshaller = JAXBUtil.createUnmarshaller(); unmarshaller.setSchema(schema); unmarshaller.setEventHandler(validationEventHandler); if(filters == null){ filters = Collections.singletonList(new ImportFilter()); } Source source = SAXUtil.createFilteredSource(is, filters.toArray(new XMLFilter[filters.size()])); PMML pmml = (PMML)unmarshaller.unmarshal(source); Visitor locatorHandler = (locatable ? new LocatorTransformer() : new LocatorNullifier()); locatorHandler.applyTo(pmml); if(visitors != null && visitors.size() > 0){ visitors.applyTo(pmml); } Model model = PMMLUtil.findModel(pmml, modelName); setPMML(pmml); setModel(model); return this; }