package hello.rules; import com.openrules.ruleengine.ExternalRules; import com.openrules.ruleengine.OpenRulesEngine; import com.openrules.table.external.RuleTable; public class HelloManager { OpenRulesEngine ruleEngine; OpenRulesEngine formsEngine; GreetingRule[] greetingRules; SalutationRule[] defaultSalutationRules; SalutationRules salutationRules; App app; ExternalRules externalRules = null; public HelloManager(String xlsMainFile) { this.ruleEngine = new OpenRulesEngine(xlsMainFile); ruleEngine.log("NEW HelloManager based on " + xlsMainFile); } public void getDefaults() { greetingRules = (GreetingRule[])ruleEngine.run("getDefaultGreetingRules"); defaultSalutationRules = (SalutationRule[])ruleEngine.run("getDefaultSalutationRules"); salutationRules = new SalutationRules(formsEngine); for (int i = 0; i < defaultSalutationRules.length; i++) { SalutationRule rule = defaultSalutationRules[i]; rule.setManager(this); salutationRules.addNewRow(rule); } createExternalRules(); externalRules.setModified(true); ruleEngine.log("There is " + getExternalRules().getRuleTables().size() + " external tables"); Customer customer = (Customer) formsEngine.run("getDefaultCustomer"); app = new App(); app.setCustomer(customer); } public void createExternalRules() { String[][] greetingGrid = new String[greetingRules.length][3]; for (int i = 0; i < greetingRules.length; i++) { GreetingRule rule = greetingRules[i]; greetingGrid[i] = new String[] { Integer.toString(rule.from), Integer.toString(rule.to), rule.greeting }; } String[][] salutationGrid = new String[salutationRules.getRows().size()][4]; for (int i = 0; i < salutationRules.getRows().size(); i++) { SalutationRule rule = (SalutationRule)salutationRules.getRows().get(i); salutationGrid[i] = new String[] { rule.gender, rule.maritalStatus, rule.maxAge, rule.salutation }; } externalRules = new ExternalRules(); externalRules.addRuleTable( "greetingRules", //table name "defineGreeting", //template name greetingGrid); externalRules.addRuleTable( "salutationRules", //table name "defineSalutation", //template name salutationGrid); externalRules.setModified(false); ruleEngine.setExternalRules(externalRules); } public SalutationRules getSalutationRules() { return salutationRules; } public void setSalutationRules(SalutationRules salutationRules) { this.salutationRules = salutationRules; } public void addSalutationRule() { SalutationRule rule = new SalutationRule(); rule.setManager(this); salutationRules.addNewRow(rule); } public GreetingRule[] getGreetingRules() { return greetingRules; } public App getApp() { return app; } public void setApp(App app) { this.app = app; } public void generateGreeting() { ruleEngine.run("greetingRules",app); ruleEngine.run("salutationRules",app); } public void cleanUp() { app.setGreeting(null); } public void updateRules() { createExternalRules(); getExternalRules().setModified(true); showRules(); } public void showRules() { for (int i = 0; i < getExternalRules().getRuleTables().size(); i++) { RuleTable rules = (RuleTable)getExternalRules().getRuleTables().get(i); ruleEngine.log(rules.toString()); } } public ExternalRules getExternalRules() { return externalRules; } public OpenRulesEngine getRuleEngine() { return ruleEngine; } public void setFormsEngine(OpenRulesEngine engine) { formsEngine = engine; } }