public String compile(final InputStream xlsStream, final String worksheetName, final TemplateDataListener listener) { Map<String, List<DataListener>> listeners = new HashMap<String, List<DataListener>>(); List<DataListener> l = new ArrayList<DataListener>(); l.add( listener ); listeners.put( worksheetName, l ); compile( xlsStream, listeners ); return listener.renderDRL(); }
/** * Generates DRL from a data provider for the spreadsheet data and templates. * * @param rs the resultset for the table data * @param listener a template data listener * @return the generated DRL text as a String */ public String compile(final ResultSet rs, final TemplateDataListener listener) { List<DataListener> listeners = new ArrayList<DataListener>(); listeners.add(listener); processData(rs, listeners); return listener.renderDRL(); }
/** * Generates DRL from a data provider for the spreadsheet data and templates. * * @param dataProvider the data provider for the spreadsheet data * @param listener a template data listener * @return the generated DRL text as a String */ public String compile(final DataProvider dataProvider, final TemplateDataListener listener, boolean replaceOptionals) { List<DataListener> listeners = new ArrayList<DataListener>(); listeners.add(listener); processData(dataProvider, listeners); return listener.renderDRL(); }
/** * Generates DRL from the input stream containing the spreadsheet. * * @param xlsStream * The stream to the spreadsheet. Uses the first worksheet found * for the decision tables, ignores others. * @param type * The type of the file - InputType.CSV or InputType.XLS * @param listener * @return DRL xml, ready for use in drools. * @throws IOException */ public String compile(final InputStream xlsStream, final InputType type, final TemplateDataListener listener) { ArrayList<DataListener> listeners = new ArrayList<DataListener>(); listeners.add( listener ); compile( xlsStream, type, listeners ); return listener.renderDRL(); }
@Test public void testPricing() throws Exception { final ExternalSpreadsheetCompiler converter = new ExternalSpreadsheetCompiler(); final List<DataListener> listeners = new ArrayList<DataListener>(); TemplateDataListener l1 = new TemplateDataListener(10, 3, "/templates/test_pricing1.drl"); listeners.add(l1); TemplateDataListener l2 = new TemplateDataListener(30, 3, "/templates/test_pricing2.drl"); listeners.add(l2); converter.compile("/data/ExamplePolicyPricing.xls", InputType.XLS, listeners); //COMPILE KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newByteArrayResource(l1.renderDRL().getBytes()), ResourceType.DRL); kbuilder.add(ResourceFactory.newByteArrayResource(l2.renderDRL().getBytes()), ResourceType.DRL); assertFalse(kbuilder.hasErrors()); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(kbuilder.getKnowledgePackages()); KieSession kSession = kbase.newKieSession(); //now create some test data Driver driver = new Driver(); Policy policy = new Policy(); kSession.insert(driver); kSession.insert(policy); kSession.fireAllRules(); System.out.println("BASE PRICE IS: " + policy.getBasePrice()); System.out.println("DISCOUNT IS: " + policy.getDiscountPercent()); int basePrice = policy.getBasePrice(); assertEquals(120, basePrice); }