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); } } }
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 test() { String rule = "package com.sample\n\n"; rule += "import com.sample.DroolsTest.Message;\n\n"; rule += "rule \"Hello World\"\n"; rule += " when\n"; rule += " m : Message( $status : status == Message.HELLO, message :message )\n"; rule += " $m2 : Message( message2 :message )"; rule += " then\n"; rule += " System.out.println( message ); \n"; rule += " System.out.println(message ); \n"; rule += " System.out.println( message); \n"; rule += " System.out.println(message); \n"; rule += " $m.setMessage( \"Goodbye cruel world\", message);\n"; rule += " $m.setMessage( \"Goodbye cruel world\" +message);\n"; rule += " $m.setMessage( \"Goodbye cruel world\" + message );\n"; rule += " $m.setStatus( Message.GOODBYE );\n"; rule += " update( $m ) ;\n"; rule += "end"; engine = new DRLParserEngine(rule); info = (DRLRuleRefactorInfo) engine.parse(); RuleBasicContentInfo content = info.getContentAt(87); RenameAssistantOption assistantOption = new RenameAssistantOption("rename variable", "message", content, 87); AssistantOption result = VariableRename.execute(assistantOption, "msg"); assertTrue(result.getContent().contains("m : Message( $status : status == Message.HELLO, msg :message )")); assertTrue(result.getContent().contains("System.out.println( msg );")); assertTrue(result.getContent().contains("System.out.println(msg );")); assertTrue(result.getContent().contains("System.out.println( msg);")); assertTrue(result.getContent().contains("$m.setMessage( \"Goodbye cruel world\" + msg );")); }
@Override protected RuleRefactorInfo generateRuleRefactorInfo(String text) { ruleParserEngine = new DRLParserEngine(text); RuleRefactorInfo info = ruleParserEngine.parse(); return info; }
rule += "end"; engine = new DRLParserEngine(rule); info = (DRLRuleRefactorInfo) engine.parse(); RuleBasicContentInfo content = info.getContentAt(173);
@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); } } }
rule += "end\n"; engine = new DRLParserEngine(rule);
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; }
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; }
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; }