public LoadingModelEvaluatorBuilder load(InputStream is) throws SAXException, JAXBException { return load(is, (String)null); }
Config modelEvaluatorBuilderConfig = config.getConfig("modelEvaluatorBuilder"); LoadingModelEvaluatorBuilder modelEvaluatorBuilder = new LoadingModelEvaluatorBuilder(); Class<? extends ModelEvaluatorFactory> modelEvaluatorFactoryClazz = loadClass(ModelEvaluatorFactory.class, modelEvaluatorFactoryClassName); modelEvaluatorBuilder.setModelEvaluatorFactory(newInstance(modelEvaluatorFactoryClazz)); Class<? extends ValueFactoryFactory> valueFactoryFactoryClazz = loadClass(ValueFactoryFactory.class, valueFactoryFactoryClassName); modelEvaluatorBuilder.setValueFactoryFactory(newInstance(valueFactoryFactoryClazz)); modelEvaluatorBuilder.setOutputFilter(OutputFilters.KEEP_FINAL_RESULTS); modelEvaluatorBuilder.setResultMapper(resultMapper); .setSchema(schema) .setValidationEventHandler(new SimpleValidationEventHandler()); modelEvaluatorBuilder.setLocatable(locatable); modelEvaluatorBuilder.setVisitors(visitors);
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; }
/** * @see LoadingModelEvaluatorBuilder#load(InputStream) * @see LoadingModelEvaluatorBuilder#load(InputStream, String) */ @Deprecated static public Evaluator createEvaluator(InputStream is) throws SAXException, JAXBException { EvaluatorBuilder evaluatorBuilder = new LoadingModelEvaluatorBuilder() .load(is); Evaluator evaluator = evaluatorBuilder.build(); // Perform self-testing evaluator.verify(); return evaluator; } }
@Override public Model readFrom(Class<Model> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException { MultivaluedMap<String, String> queryParameters = this.uriInfo.getQueryParameters(); String modelName = queryParameters.getFirst("modelName"); CountingInputStream countingIs = new CountingInputStream(entityStream); HashingInputStream hashingIs = new HashingInputStream(Hashing.md5(), countingIs); EvaluatorBuilder evaluatorBuilder; try { evaluatorBuilder = this.modelEvaluatorBuilder.clone() .load(hashingIs, modelName); } catch(SAXException | JAXBException e){ logger.error("Failed to load the PMML document", e); throw new BadRequestException(e); } catch(PMMLException pe){ logger.error("Failed to find a scorable model element", pe); throw new BadRequestException(pe); } Evaluator evaluator; try { evaluator = evaluatorBuilder.build(); evaluator.verify(); } catch(PMMLException pe){ logger.error("Failed to build a model evaluator", pe); throw new BadRequestException(pe); } Model model = new Model(evaluator); model.putProperty(Model.PROPERTY_FILE_SIZE, countingIs.getCount()); model.putProperty(Model.PROPERTY_FILE_MD5SUM, (hashingIs.hash()).toString()); return model; }
public LoadingModelEvaluatorBuilder load(File file, String modelName) throws IOException, SAXException, JAXBException { try(InputStream is = new FileInputStream(file)){ return load(is, modelName); } }
public LoadingModelEvaluatorBuilder load(File file) throws IOException, SAXException, JAXBException { try(InputStream is = new FileInputStream(file)){ return load(is); } }