private void addDSLKeywordMapping( final String definition ) { final DSLSentence sentence = new DSLSentence(); sentence.setDefinition( definition ); this.dslKeywordItems.add( sentence ); }
private void addDSLAnyScopeMapping( final String definition ) { final DSLSentence sentence = new DSLSentence(); sentence.setDefinition( definition ); this.dslAnyScopeItems.add( sentence ); }
private void addDSLConditionSentence( final String definition ) { final DSLSentence sentence = new DSLSentence(); sentence.setDefinition( definition ); this.dslConditionSentences.add( sentence ); }
private void addDSLActionSentence( final String definition ) { final DSLSentence sentence = new DSLSentence(); sentence.setDefinition( definition ); this.dslActionSentences.add( sentence ); }
private DSLSentence toDSLSentence( List<String> dslPatterns, String dslLine ) { DSLSentence dslSentence = new DSLSentence(); for ( String dslPattern : dslPatterns ) { String regex = dslPattern.replaceAll( "\\{\\s*[\\:\\.\\w]+\\s*\\}", "(.*)" ); Matcher m = Pattern.compile( regex ).matcher( dslLine ); if ( m.matches() ) { dslSentence.setDefinition( dslPattern ); for ( int i = 0; i < m.groupCount(); i++ ) { dslSentence.getValues().get( i ).setValue( m.group( i + 1 ) ); } return dslSentence; } } dslSentence.setDefinition( dslLine ); return dslSentence; }
private DSLSentence visitDSLSentence( final DSLSentence sentence ) { DSLSentence clone = new DSLSentence(); clone.setDefinition( sentence.getDefinition() ); for ( DSLVariableValue value : sentence.getValues() ) { clone.getValues().add( (DSLVariableValue) visit( value ) ); } return clone; }
@Test public void testDSLExpansionLHS() { final String dslDefinition = "The credit rating is {rating:ENUM:Applicant.creditRating}"; final String drlExpected = "rule \"r1\"\n" + "dialect \"mvel\"\n" + "when\n" + "The credit rating is AA\n" + "then\n" + "end"; final DSLSentence dsl = new DSLSentence(); dsl.setDefinition( dslDefinition ); //The following line is normally performed by the UI when the user sets values dsl.getValues().get( 0 ).setValue( "AA" ); //Append DSL to RuleModel to check marshalling final RuleModel m = new RuleModel(); m.name = "r1"; m.addLhsItem( dsl ); final String drlActual = brlPersistence.marshal( m ); assertEqualsIgnoreWhitespace( drlExpected, drlActual ); }
dsl.setDefinition( dslDefinition );
@Test public void testAssertWithDSL() throws Exception { RuleModel m = new RuleModel(); DSLSentence sen = new DSLSentence(); sen.setDefinition( "I CAN HAS DSL" ); m.addRhsItem( sen ); ActionInsertFact ins = new ActionInsertFact( "Shizzle" ); ActionFieldValue val = new ActionFieldValue( "goo", "42", "Numeric" ); ins.setFieldValues( new ActionFieldValue[ 1 ] ); ins.getFieldValues()[ 0 ] = val; m.addRhsItem( ins ); ActionInsertLogicalFact insL = new ActionInsertLogicalFact( "Shizzle" ); ActionFieldValue valL = new ActionFieldValue( "goo", "42", "Numeric" ); insL.setFieldValues( new ActionFieldValue[ 1 ] ); insL.getFieldValues()[ 0 ] = valL; m.addRhsItem( insL ); String result = BRDRLPersistence.getInstance().marshal( m ); assertTrue( result.indexOf( ">insert" ) > -1 ); assertTrue( result.indexOf( ">insertLogical" ) > -1 ); }
@Test public void testCompositeFactPatternWithFromWithDSL() { final RuleModel m = new RuleModel(); m.name = "model"; final DSLSentence sen = new DSLSentence(); sen.setDefinition( "A DSL phrase" ); m.addLhsItem( sen ); final FactPattern fp1 = new FactPattern( "Data" ); fp1.setBoundName( "$d" ); m.addLhsItem( fp1 ); final CompositeFactPattern cp = new CompositeFactPattern( CompositeFactPattern.COMPOSITE_TYPE_NOT ); final FactPattern fp2 = new FactPattern( "Person" ); final FromCompositeFactPattern ffp1 = new FromCompositeFactPattern(); ffp1.setExpression( new ExpressionFormLine( new ExpressionVariable( fp1 ) ) ); ffp1.setFactPattern( fp2 ); cp.addFactPattern( ffp1 ); m.addLhsItem( cp ); final String actual = BRDRLPersistence.getInstance().marshal( m ); final String expected = "rule \"model\"\n" + "dialect \"mvel\"\n" + "when\n" + "A DSL phrase\n" + ">$d : Data( )\n" + ">not ( Person( ) from $d\n" + ")\n" + "then\n" + "end\n"; assertEqualsIgnoreWhitespace( expected, actual ); }
sen.setDefinition( "Send an email to {administrator}" ); m.addRhsItem( sen );