use of org.drools.template.model.Import in project drools by kiegroup.
the class RuleSheetParserUtil method getImportList.
/**
* Create a list of Import model objects from cell contents.
* @param importCells The cells containing text for all the classes to import.
* @return A list of Import classes, which can be added to the ruleset.
*/
public static List<Import> getImportList(final List<String> importCells) {
final List<Import> importList = new ArrayList<Import>();
if (importCells == null)
return importList;
for (String importCell : importCells) {
final StringTokenizer tokens = new StringTokenizer(importCell, ",");
while (tokens.hasMoreTokens()) {
final Import imp = new Import();
imp.setClassName(tokens.nextToken().trim());
importList.add(imp);
}
}
return importList;
}
use of org.drools.template.model.Import in project drools by kiegroup.
the class SpreadsheetCompilerUnitTest method testPropertiesWithWhiteSpaceXLS.
@Test
public void testPropertiesWithWhiteSpaceXLS() {
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("PropertiesWithWhiteSpace.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);
}
use of org.drools.template.model.Import in project drools by kiegroup.
the class RuleWorksheetParseTest method testWorkbookParse.
@Test
public void testWorkbookParse() throws Exception {
final InputStream stream = RuleWorksheetParseTest.class.getResourceAsStream("/data/BasicWorkbook.xls");
final RuleSheetListener listener = getRuleSheetListener(stream);
final Package ruleset = listener.getRuleSet();
assertNotNull(ruleset);
final Rule firstRule = (Rule) ruleset.getRules().get(0);
assertNotNull(firstRule.getSalience());
assertTrue(Integer.parseInt(firstRule.getSalience()) > 0);
// System.out.println(ruleset.toXML());
assertEquals("myruleset", ruleset.getName());
assertEquals(3, ruleset.getImports().size());
assertEquals(6, ruleset.getRules().size());
// check imports
Import imp = (Import) ruleset.getImports().get(0);
assertEquals("blah.class1", imp.getClassName());
imp = (Import) ruleset.getImports().get(1);
assertEquals("blah.class2", imp.getClassName());
imp = (Import) ruleset.getImports().get(2);
assertEquals("lah.di.dah", imp.getClassName());
// check rules
Rule rule = (Rule) ruleset.getRules().get(0);
Condition cond = (Condition) rule.getConditions().get(0);
assertEquals("Foo(myObject.getColour().equals(red), myObject.size () > 12\\\")", cond.getSnippet());
Consequence cons = (Consequence) rule.getConsequences().get(0);
assertNotNull(cons);
assertEquals("myObject.setIsValid(Y);", cons.getSnippet());
rule = (Rule) ruleset.getRules().get(5);
cond = (Condition) rule.getConditions().get(1);
assertEquals("myObject.size () > 7", cond.getSnippet());
cons = (Consequence) rule.getConsequences().get(0);
assertEquals("myObject.setIsValid(10-Jul-1974)", cons.getSnippet());
}
use of org.drools.template.model.Import in project drools-wb by kiegroup.
the class GuidedDecisionTableGeneratorListenerTest method testProperties.
@Test
public void testProperties() {
final ConversionResult result = new ConversionResult();
final List<DataListener> listeners = new ArrayList<DataListener>();
final GuidedDecisionTableGeneratorListener listener = new GuidedDecisionTableGeneratorListener(result, dmo);
listeners.add(listener);
// Convert
final ExcelParser parser = new ExcelParser(listeners);
final InputStream is = this.getClass().getResourceAsStream("Properties.xls");
try {
parser.parseFile(is);
} finally {
try {
is.close();
} catch (IOException ioe) {
fail(ioe.getMessage());
}
}
// Check conversion results
assertEquals(0, result.getMessages().size());
// Check properties
List<String> functions = listener.getFunctions();
assertNotNull(functions);
assertEquals(1, functions.size());
assertEquals("function a() { }", functions.get(0));
List<Global> globals = listener.getGlobals();
assertNotNull(globals);
assertEquals(1, globals.size());
assertEquals("java.util.List", globals.get(0).getClassName());
assertEquals("list", globals.get(0).getIdentifier());
List<Import> imports = listener.getImports();
assertNotNull(imports);
assertEquals(2, imports.size());
assertEquals("org.yourco.model.*", imports.get(0).getClassName());
assertEquals("java.util.Date", imports.get(1).getClassName());
List<String> queries = listener.getQueries();
assertNotNull(queries);
assertEquals(1, queries.size());
assertEquals("A query", queries.get(0));
List<String> types = listener.getTypeDeclarations();
assertNotNull(types);
assertEquals(1, types.size());
assertEquals("declare Smurf name : String end", types.get(0));
}
use of org.drools.template.model.Import in project drools-wb by kiegroup.
the class DecisionTableXLSToDecisionTableGuidedConverter method createNewImports.
private void createNewImports(final Path context, final List<Import> imports, final ConversionResult result) {
if (imports == null || imports.isEmpty()) {
return;
}
// Get Module's project.imports path
final KieModule module = moduleService.resolveModule(context);
final Path externalImportsPath = module.getImportsPath();
final org.uberfire.java.nio.file.Path nioExternalImportsPath = Paths.convert(externalImportsPath);
// Load existing PackageImports
ProjectImports projectImports = new ProjectImports();
if (Files.exists(nioExternalImportsPath)) {
projectImports = importsService.load(externalImportsPath);
}
// Make collections of existing Imports so we don't duplicate them when adding the new
List<String> existingImports = new ArrayList<String>();
for (org.kie.soup.project.datamodel.imports.Import item : projectImports.getImports().getImports()) {
existingImports.add(item.getType());
}
// Add imports
boolean isModified = false;
for (Import item : imports) {
if (!existingImports.contains(item.getClassName())) {
isModified = true;
result.addMessage("Created Import for '" + item.getClassName() + "'.", ConversionMessageType.INFO);
projectImports.getImports().addImport(new org.kie.soup.project.datamodel.imports.Import(item.getClassName()));
}
}
// Save update
if (isModified) {
final Metadata metadata = metadataService.getMetadata(context);
importsService.save(externalImportsPath, projectImports, metadata, "Imports added during XLS conversion");
}
}
Aggregations