Search in sources :

Example 1 with Global

use of org.drools.template.model.Global in project drools by kiegroup.

the class DefaultRuleSheetListener method buildRuleSet.

private Package buildRuleSet() {
    final String defaultPackageName = "rule_table";
    final String rulesetName = getProperties().getSingleProperty(RULESET_TAG, defaultPackageName);
    final Package ruleset = new Package((showPackage) ? rulesetName : null);
    for (Rule rule : this._ruleList) {
        ruleset.addRule(rule);
    }
    final List<Import> importList = RuleSheetParserUtil.getImportList(getProperties().getProperty(IMPORT_TAG));
    for (Import import1 : importList) {
        ruleset.addImport(import1);
    }
    final List<Global> variableList = RuleSheetParserUtil.getVariableList(getProperties().getProperty(VARIABLES_TAG));
    for (Global global : variableList) {
        ruleset.addVariable(global);
    }
    final List<String> functions = getProperties().getProperty(FUNCTIONS_TAG);
    if (functions != null) {
        for (String function : functions) {
            ruleset.addFunctions(function);
        }
    }
    final List<String> queries = getProperties().getProperty(QUERIES_TAG);
    if (queries != null) {
        for (String query : queries) {
            ruleset.addQueries(query);
        }
    }
    final List<String> declarations = getProperties().getProperty(DECLARES_TAG);
    if (declarations != null) {
        for (String declaration : declarations) {
            ruleset.addDeclaredType(declaration);
        }
    }
    for (Code code : ActionType.ATTRIBUTE_CODE_SET) {
        List<String> values = getProperties().getProperty(code.getColHeader());
        if (values != null) {
            if (values.size() > 1) {
                List<String> cells = getProperties().getPropertyCells(code.getColHeader());
                throw new DecisionTableParseException("Multiple values for " + code.getColHeader() + " in cells " + cells.toString());
            }
            String value = values.get(0);
            switch(code) {
                case SALIENCE:
                    try {
                        ruleset.setSalience(new Integer(value));
                    } catch (NumberFormatException nfe) {
                        throw new DecisionTableParseException("Priority is not an integer literal, in cell " + getProperties().getSinglePropertyCell(code.getColHeader()));
                    }
                    break;
                case DURATION:
                    try {
                        ruleset.setDuration(new Long(value));
                    } catch (NumberFormatException nfe) {
                        throw new DecisionTableParseException("Duration is not an integer literal, in cell " + getProperties().getSinglePropertyCell(code.getColHeader()));
                    }
                    break;
                case TIMER:
                    ruleset.setTimer(value);
                    break;
                case ENABLED:
                    ruleset.setEnabled(RuleSheetParserUtil.isStringMeaningTrue(value));
                    break;
                case CALENDARS:
                    ruleset.setCalendars(value);
                    break;
                case NOLOOP:
                    ruleset.setNoLoop(RuleSheetParserUtil.isStringMeaningTrue(value));
                    break;
                case LOCKONACTIVE:
                    ruleset.setLockOnActive(RuleSheetParserUtil.isStringMeaningTrue(value));
                    break;
                case AUTOFOCUS:
                    ruleset.setAutoFocus(RuleSheetParserUtil.isStringMeaningTrue(value));
                    break;
                case ACTIVATIONGROUP:
                    ruleset.setActivationGroup(value);
                    break;
                case AGENDAGROUP:
                    ruleset.setAgendaGroup(value);
                    break;
                case RULEFLOWGROUP:
                    ruleset.setRuleFlowGroup(value);
                    break;
                case DATEEFFECTIVE:
                    ruleset.setDateEffective(value);
                    break;
                case DATEEXPIRES:
                    ruleset.setDateExpires(value);
                    break;
            }
        }
    }
    return ruleset;
}
Also used : Import(org.drools.template.model.Import) DecisionTableParseException(org.drools.template.parser.DecisionTableParseException) Code(org.drools.decisiontable.parser.ActionType.Code) Global(org.drools.template.model.Global) Package(org.drools.template.model.Package) Rule(org.drools.template.model.Rule)

Example 2 with Global

use of org.drools.template.model.Global in project drools by kiegroup.

the class RuleSheetParserUtil method getVariableList.

/**
 * Create a list of Global model objects from cell contents.
 * @param variableCella The cells containing text for all the global variables to set.
 * @return A list of Variable classes, which can be added to the ruleset.
 */
public static List<Global> getVariableList(final List<String> variableCells) {
    final List<Global> variableList = new ArrayList<Global>();
    if (variableCells == null)
        return variableList;
    for (String variableCell : variableCells) {
        final StringTokenizer tokens = new StringTokenizer(variableCell, ",");
        while (tokens.hasMoreTokens()) {
            final String token = tokens.nextToken();
            final Global vars = new Global();
            final StringTokenizer paramTokens = new StringTokenizer(token, " ");
            vars.setClassName(paramTokens.nextToken());
            if (!paramTokens.hasMoreTokens()) {
                throw new DecisionTableParseException("The format for global variables is incorrect. " + "It should be: [Class name, Class otherName]. But it was: [" + variableCell + "]");
            }
            vars.setIdentifier(paramTokens.nextToken());
            variableList.add(vars);
        }
    }
    return variableList;
}
Also used : StringTokenizer(java.util.StringTokenizer) DecisionTableParseException(org.drools.template.parser.DecisionTableParseException) ArrayList(java.util.ArrayList) Global(org.drools.template.model.Global)

Example 3 with Global

use of org.drools.template.model.Global in project drools by kiegroup.

the class SpreadsheetCompilerUnitTest method testPropertiesXLS.

@Test
public void testPropertiesXLS() {
    final List<DataListener> listeners = new ArrayList<DataListener>();
    final DefaultRuleSheetListener listener = new DefaultRuleSheetListener();
    listeners.add(listener);
    final ExcelParser parser = new ExcelParser(listeners);
    final InputStream is = this.getClass().getResourceAsStream("Properties.xls");
    parser.parseFile(is);
    listener.getProperties();
    final String rulesetName = listener.getProperties().getSingleProperty(DefaultRuleSheetListener.RULESET_TAG);
    assertNotNull(rulesetName);
    assertEquals("Properties", rulesetName);
    final List<Import> importList = RuleSheetParserUtil.getImportList(listener.getProperties().getProperty(DefaultRuleSheetListener.IMPORT_TAG));
    assertNotNull(importList);
    assertEquals(1, importList.size());
    assertEquals("java.util.List", importList.get(0).getClassName());
    final List<Global> variableList = RuleSheetParserUtil.getVariableList(listener.getProperties().getProperty(DefaultRuleSheetListener.VARIABLES_TAG));
    assertNotNull(variableList);
    assertEquals(1, variableList.size());
    assertEquals("java.util.List", variableList.get(0).getClassName());
    assertEquals("list", variableList.get(0).getIdentifier());
    final List<String> functions = listener.getProperties().getProperty(DefaultRuleSheetListener.FUNCTIONS_TAG);
    assertNotNull(functions);
    assertEquals(1, functions.size());
    assertEquals("A function", functions.get(0));
    final List<String> queries = listener.getProperties().getProperty(DefaultRuleSheetListener.QUERIES_TAG);
    assertNotNull(queries);
    assertEquals(1, queries.size());
    assertEquals("A query", queries.get(0));
    final List<String> declarations = listener.getProperties().getProperty(DefaultRuleSheetListener.DECLARES_TAG);
    assertNotNull(declarations);
    assertEquals(1, declarations.size());
    assertEquals("A declared type", declarations.get(0));
    final String sequentialFlag = listener.getProperties().getSingleProperty(DefaultRuleSheetListener.SEQUENTIAL_FLAG);
    assertNotNull(sequentialFlag);
    assertEquals("false", sequentialFlag);
    final String escapeQuotesFlag = listener.getProperties().getSingleProperty(DefaultRuleSheetListener.ESCAPE_QUOTES_FLAG);
    assertNotNull(escapeQuotesFlag);
    assertEquals("false", escapeQuotesFlag);
}
Also used : DefaultRuleSheetListener(org.drools.decisiontable.parser.DefaultRuleSheetListener) Import(org.drools.template.model.Import) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) ExcelParser(org.drools.decisiontable.parser.xls.ExcelParser) DataListener(org.drools.template.parser.DataListener) Global(org.drools.template.model.Global) Test(org.junit.Test)

Example 4 with Global

use of org.drools.template.model.Global in project drools-wb by kiegroup.

the class DecisionTableXLSToDecisionTableGuidedConverter method makeGlobalsModel.

private GlobalsModel makeGlobalsModel(final List<Import> imports, final List<Global> globals, final ConversionResult result) {
    final GlobalsModel model = new GlobalsModel();
    for (Global global : globals) {
        if (global.getClassName().contains(".")) {
            model.getGlobals().add(new org.drools.workbench.screens.globals.model.Global(global.getIdentifier(), global.getClassName()));
        } else {
            boolean mapped = false;
            for (Import imp : imports) {
                if (imp.getClassName().contains(".")) {
                    final String fullyQualifiedClassName = imp.getClassName();
                    final String leafClassName = fullyQualifiedClassName.substring(fullyQualifiedClassName.lastIndexOf(".") + 1);
                    if (global.getClassName().equals(leafClassName)) {
                        model.getGlobals().add(new org.drools.workbench.screens.globals.model.Global(global.getIdentifier(), fullyQualifiedClassName));
                        mapped = true;
                        break;
                    }
                }
            }
            if (!mapped) {
                result.addMessage("Unable to determine Fully Qualified Class Name for Global '" + global.getIdentifier() + "'. Skipping.", ConversionMessageType.ERROR);
            }
        }
    }
    return model;
}
Also used : Import(org.drools.template.model.Import) GlobalsModel(org.drools.workbench.screens.globals.model.GlobalsModel) Global(org.drools.template.model.Global)

Example 5 with Global

use of org.drools.template.model.Global in project drools by kiegroup.

the class DefaultTemplateRuleBase method addGlobals.

private void addGlobals(org.drools.template.model.Package p) {
    Global global = new Global();
    global.setClassName(DefaultGenerator.class.getName());
    global.setIdentifier("generator");
    p.addVariable(global);
}
Also used : Global(org.drools.template.model.Global)

Aggregations

Global (org.drools.template.model.Global)9 ArrayList (java.util.ArrayList)6 Import (org.drools.template.model.Import)5 Test (org.junit.Test)5 InputStream (java.io.InputStream)4 ExcelParser (org.drools.decisiontable.parser.xls.ExcelParser)4 DataListener (org.drools.template.parser.DataListener)4 IOException (java.io.IOException)2 DefaultRuleSheetListener (org.drools.decisiontable.parser.DefaultRuleSheetListener)2 DecisionTableParseException (org.drools.template.parser.DecisionTableParseException)2 ConversionResult (org.drools.workbench.models.guided.dtable.shared.conversion.ConversionResult)2 StringTokenizer (java.util.StringTokenizer)1 Code (org.drools.decisiontable.parser.ActionType.Code)1 Package (org.drools.template.model.Package)1 Rule (org.drools.template.model.Rule)1 GlobalsModel (org.drools.workbench.screens.globals.model.GlobalsModel)1