@Override protected RuleRefactorInfo generateRuleRefactorInfo(String text) { ruleParserEngine = new DSLParserEngine(text); return ruleParserEngine.parse(); }
@Override protected RuleRefactorInfo generateRuleRefactorInfo(String text) { ruleParserEngine = new DRLParserEngine(text); RuleRefactorInfo info = ruleParserEngine.parse(); return info; }
public RuleRefactorInfo parse() { detectPackage(rule); detectGlobals(rule); detectImports(rule); detectRules(rule); return ruleRefactorInfo; }
private void detectRules(CharSequence rule) { Matcher ruleMatcher = rulePattern.matcher(rule); while (ruleMatcher.find()) { for( int position = 0; position < ruleMatcher.groupCount()+1; position++ ){ String value = ruleMatcher.group(position); int offset = ruleMatcher.start(); String ruleName = detectRuleName(value); List<RuleLineContentInfo> lhs = detectLHS(value, offset); List<RuleLineContentInfo> rhs = detectRHS(value, offset); ((DRLRuleRefactorInfo) ruleRefactorInfo).addContent(DRLContentTypeEnum.RULE, offset, value, ruleName, lhs, rhs); } } }
@Override public RuleRefactorInfo parse() { detectWHEN(); detectTHEN(); return ruleRefactorInfo; }
private List<RuleLineContentInfo> detectRHS(CharSequence rule, int ruleOffset) { pattern = Pattern.compile(RULE_RHS_PATTERN); matcher = pattern.matcher(rule); if (matcher.find()) return detectLines(matcher.group(), matcher.start() + ruleOffset, DRLContentTypeEnum.RULE_RHS_LINE); return null; }
@Before public void setUp() throws Exception { rule = "//This is a starter DSL to show off some of the features. Make sure you change it to be what you need !.\n" + "[when]There is an Instance with field of \"{value}\"=i: Instance(field==\"{value}\")\n" + "[when]Instance is at least {number} and field is \"{value}\"=i: Instance(number > {number}, location==\"{value}\")\n" + "[then]Log : \"{message}\"=System.out.println(\"{message}\");\n" + "[then]Set field of instance to \"{value}\"=i.setField(\"{value}\");\n" + "[then]Create instance : \"{value}\"=insert(new Instance(\"{value}\"));\n" + "[when]There is no current Instance with field : \"{value}\"=not Instance(field == \"{value}\")\n" + "[then]Report error : \"{error}\"=System.err.println(\"{error}\");\n" + "[then]Retract the fact : '{variable}'=retract({variable}); //this would retract bound variable {variable}\n"; dslParserEngine = new DSLParserEngine(rule); }
@Test public void testInsideRHSRule() { info = (DRLRuleRefactorInfo) engine.parse(); RuleBasicContentInfo content = info.getContentAt(830); assertEquals(true, content!=null); }
public RuleRefactorInfo parse() { detectPackage(rule); detectGlobals(rule); detectImports(rule); detectRules(rule); return ruleRefactorInfo; }
@Override protected RuleRefactorInfo generateRuleRefactorInfo(String text) { ruleParserEngine = new DSLParserEngine(text); return ruleParserEngine.parse(); }
@Override protected RuleRefactorInfo generateRuleRefactorInfo(String text) { ruleParserEngine = new DRLParserEngine(text); RuleRefactorInfo info = ruleParserEngine.parse(); return info; }
@Override public RuleRefactorInfo parse() { detectWHEN(); detectTHEN(); return ruleRefactorInfo; }
private List<RuleLineContentInfo> detectLHS(CharSequence rule, int ruleOffset) { pattern = Pattern.compile(RULE_LHS_PATTERN); matcher = pattern.matcher(rule); if (matcher.find()) { return detectLines(matcher.group(), matcher.start() + ruleOffset, DRLContentTypeEnum.RULE_LHS_LINE); } return null; }
@Test public void testInsideTheRuleName() { info = (DRLRuleRefactorInfo) engine.parse(); RuleBasicContentInfo content = info.getContentAt(670); assertEquals(true, content==null); }
private List<RuleLineContentInfo> detectRHS(CharSequence rule, int ruleOffset) { pattern = Pattern.compile(RULE_RHS_PATTERN); matcher = pattern.matcher(rule); if (matcher.find()) return detectLines(matcher.group(), matcher.start() + ruleOffset, DRLContentTypeEnum.RULE_RHS_LINE); return null; }
@Test public void testInsideLHSRule() { info = (DRLRuleRefactorInfo) engine.parse(); RuleBasicContentInfo content = info.getContentAt(790); assertEquals(true, content!=null); }
private List<RuleLineContentInfo> detectLHS(CharSequence rule, int ruleOffset) { pattern = Pattern.compile(RULE_LHS_PATTERN); matcher = pattern.matcher(rule); if (matcher.find()) { return detectLines(matcher.group(), matcher.start() + ruleOffset, DRLContentTypeEnum.RULE_LHS_LINE); } return null; }
@Test public void testExecuteEngine() { info = (DRLRuleRefactorInfo) engine.parse(); RuleBasicContentInfo content = info.getContentAt(123); assertEquals(true, content!=null); }
@Test public void testImport() { info = (DRLRuleRefactorInfo) engine.parse(); RuleBasicContentInfo content = info.getContentAt(9); assertEquals(true, content!=null); }
@Test public void testNothingInteresting() { info = (DRLRuleRefactorInfo) engine.parse(); RuleBasicContentInfo content = info.getContentAt(199); assertEquals(true, content==null); }