@Override protected void doPost() throws IOException { String instanceGenerationPrefix = Namespaces.getInstanceGenerationPrefix(getInstanceDir(), getGenerationID()); String outputPathKey = instanceGenerationPrefix + "trees/"; Store store = Store.get(); PMML joinedForest = null; for (String treePrefix : store.list(outputPathKey, true)) { File treeTempFile = File.createTempFile("model-", ".pmml.gz"); treeTempFile.deleteOnExit(); store.download(treePrefix, treeTempFile); PMML pmml; InputStream in = IOUtils.openMaybeDecompressing(treeTempFile); try { pmml = IOUtil.unmarshal(in); } catch (SAXException e) { throw new IOException(e); } catch (JAXBException e) { throw new IOException(e); } finally { in.close(); } IOUtils.delete(treeTempFile); if (joinedForest == null) { joinedForest = pmml; } else { MiningModel existingModel = (MiningModel) joinedForest.getModels().get(0); MiningModel nextModel = (MiningModel) pmml.getModels().get(0); existingModel .getSegmentation() .getSegments() .addAll(nextModel.getSegmentation().getSegments()); } } File tempJoinedForestFile = File.createTempFile("model-", ".pmml.gz"); tempJoinedForestFile.deleteOnExit(); OutputStream out = IOUtils.buildGZIPOutputStream(new FileOutputStream(tempJoinedForestFile)); try { IOUtil.marshal(joinedForest, out); } catch (JAXBException e) { throw new IOException(e); } finally { out.close(); } store.upload(instanceGenerationPrefix + "model.pmml.gz", tempJoinedForestFile, false); IOUtils.delete(tempJoinedForestFile); }
public RuleSetModelEvaluator(PMML pmml) { this(pmml, find(pmml.getModels(), RuleSetModel.class)); }