ExpandedDRLInfo expandedDRLInfo = new ExpandedDRLInfo( hasDsl ); int lineCounter = -1; for ( String statement : lhsStatements ) {
public ExpandedDRLInfo registerGlobals( List<String> globalStatements ) { if ( globalStatements != null ) { for ( String globalStatement : globalStatements ) { String identifier = getIdentifier( globalStatement ); if ( identifier != null ) { globals.add( identifier ); } } } return this; }
} else if ( methodName.equals( "add" ) && expandedDRLInfo.hasGlobal( variable ) ) { String factName = line.substring( argStart + 1, line.lastIndexOf( ')' ) ).trim(); ActionGlobalCollectionAdd actionGlobalCollectionAdd = new ActionGlobalCollectionAdd();
private ExpandedDRLInfo processFreeFormStatement(StringBuilder drl, String thenLine, List<String> lhsStatements, List<String> rhsStatements) { ExpandedDRLInfo expandedDRLInfo = new ExpandedDRLInfo( false ); int lineCounter = -1; for ( String statement : lhsStatements ) { lineCounter++; if (isValidLHSStatement(statement)) { drl.append( statement ).append( "\n" ); } else { expandedDRLInfo.freeFormStatementsInLhs.put( lineCounter, statement ); } } drl.append( thenLine ).append( "\n" ); expandedDRLInfo.consequence = ""; lineCounter = -1; for ( String statement : rhsStatements ) { String trimmed = statement.trim(); if ( trimmed.endsWith("end") ) { trimmed = trimmed.substring(0, trimmed.length()-3); } if (trimmed.length() > 0) { expandedDRLInfo.consequence += (trimmed + "\n"); } drl.append( statement ).append( "\n" ); } expandedDRLInfo.plainDrl = drl.toString(); return expandedDRLInfo; }
private RuleDescr parseDrl( ExpandedDRLInfo expandedDRLInfo ) { DrlParser drlParser = new DrlParser(); PackageDescr packageDescr = null; try { packageDescr = drlParser.parse( true, expandedDRLInfo.plainDrl ); } catch ( DroolsParserException e ) { throw new RuntimeException( e ); } expandedDRLInfo.registerGlobalDescrs( packageDescr.getGlobals() ); return packageDescr.getRules().get( 0 ); }
public RuleModel unmarshalUsingDSL( final String str, final List<String> globals, final String... dsls ) { return getRuleModel( parseDSLs( preprocessDRL(str), dsls ).registerGlobals( globals ) ); }