private CompositeFactPattern visitCompositeFactPattern( CompositeFactPattern pattern ) { CompositeFactPattern clone = new CompositeFactPattern(); clone.setType( pattern.getType() ); if ( pattern.getPatterns() != null ) { for ( IFactPattern fp : pattern.getPatterns() ) { clone.addFactPattern( (IFactPattern) visit( fp ) ); } } return clone; }
private void renderCompositeFOL( final CompositeFactPattern pattern ) { buf.append( pattern.getType() ); if ( pattern.getPatterns() != null ) { buf.append( " (" ); for ( int i = 0; i < pattern.getPatterns().length; i++ ) { renderSubPattern( pattern, i ); if ( i != pattern.getPatterns().length - 1 ) { buf.append( " and " ); } } buf.append( ") \n" ); } }
private RuleModel getCompositeFOL( String type ) { RuleModel m = new RuleModel(); m.name = "or"; CompositeFactPattern cp = new CompositeFactPattern( type ); FactPattern p1 = new FactPattern( "Person" ); SingleFieldConstraint sf1 = new SingleFieldConstraint( "age" ); sf1.setOperator( "==" ); sf1.setValue( "42" ); p1.addConstraint( sf1 ); cp.addFactPattern( p1 ); FactPattern p2 = new FactPattern( "Person" ); SingleFieldConstraint sf2 = new SingleFieldConstraint( "age" ); sf2.setOperator( "==" ); sf2.setValue( "43" ); p2.addConstraint( sf2 ); cp.addFactPattern( p2 ); m.addLhsItem( cp ); return m; }
private CompositeFactPattern parseExistentialElementDescr( ConditionalElementDescr conditionalDescr, Map<String, String> boundParams ) { CompositeFactPattern comp = conditionalDescr instanceof NotDescr ? new CompositeFactPattern( CompositeFactPattern.COMPOSITE_TYPE_NOT ) : conditionalDescr instanceof OrDescr ? new CompositeFactPattern( CompositeFactPattern.COMPOSITE_TYPE_OR ) : new CompositeFactPattern( CompositeFactPattern.COMPOSITE_TYPE_EXISTS ); addPatternToComposite( conditionalDescr, comp, boundParams ); return comp; }
public void addFactPatterns( IFactPattern[] patterns ) { for ( int i = 0; i < patterns.length; i++ ) { IFactPattern iFactPattern = patterns[ i ]; this.addFactPattern( iFactPattern ); } }
private void visitCompositeFactPattern( CompositeFactPattern pattern ) { if ( pattern.getPatterns() != null ) { for ( IFactPattern fp : pattern.getPatterns() ) { visit( fp ); } } }
public void onClick( ClickEvent event ) { if ( Window.confirm( Constants.INSTANCE.RemoveThisEntireConditionQ() ) ) { if ( pattern.removeFactPattern( idx ) ) { getModeller().refreshWidget(); } } } } );
@Test public void testSingleExists() throws Exception { RuleModel m = new RuleModel(); m.name = "or"; CompositeFactPattern cp = new CompositeFactPattern( CompositeFactPattern.COMPOSITE_TYPE_EXISTS ); FactPattern p1 = new FactPattern( "Person" ); SingleFieldConstraint sf1 = new SingleFieldConstraint( "age" ); sf1.setOperator( "==" ); sf1.setValue( "42" ); p1.addConstraint( sf1 ); cp.addFactPattern( p1 ); m.addLhsItem( cp ); String result = BRDRLPersistence.getInstance().marshal( m ); assertTrue( result.indexOf( "exists (Person( age == 42 )) " ) > 0 ); checkMarshallUnmarshall( result, m ); }
protected Widget getCompositeLabel() { ClickHandler click = new ClickHandler() { public void onClick( ClickEvent event ) { Widget w = (Widget) event.getSource(); showFactTypeSelector( w ); } }; String lbl = HumanReadable.getCEDisplayName(pattern.getType()); if ( pattern.getPatterns() == null || pattern.getPatterns().length == 0 ) { lbl += " <font color='red'>" + Constants.INSTANCE.clickToAddPatterns() + "</font>"; } return new ClickableLabel( lbl + ":", click, !this.readOnly ); }
private void addNewCE( String s, int position ) { this.model.addLhsItem( new CompositeFactPattern( s ), position ); }
private void addPatternToComposite( ConditionalElementDescr conditionalDescr, CompositeFactPattern comp, Map<String, String> boundParams ) { for ( Object descr : conditionalDescr.getDescrs() ) { if ( descr instanceof PatternDescr ) { comp.addFactPattern( parsePatternDescr( (PatternDescr) descr, boundParams ) ); } else if ( descr instanceof ConditionalElementDescr ) { addPatternToComposite( (ConditionalElementDescr) descr, comp, boundParams ); } } }
private void renderSubPattern( final CompositeFactPattern pattern, final int subIndex ) { if ( pattern.getPatterns() == null || pattern.getPatterns().length == 0 ) { return; } IFactPattern subPattern = pattern.getPatterns()[ subIndex ]; if ( subPattern instanceof FactPattern ) { this.generateFactPattern( (FactPattern) subPattern ); } else if ( subPattern instanceof FromAccumulateCompositeFactPattern ) { this.visitFromAccumulateCompositeFactPattern( (FromAccumulateCompositeFactPattern) subPattern, true ); } else if ( subPattern instanceof FromCollectCompositeFactPattern ) { this.visitFromCollectCompositeFactPattern( (FromCollectCompositeFactPattern) subPattern, true ); } else if ( subPattern instanceof FromCompositeFactPattern ) { this.visitFromCompositeFactPattern( (FromCompositeFactPattern) subPattern, true ); } else { throw new IllegalStateException( "Unsupported Pattern: " + subPattern.getClass().getName() ); } }
@Test public void testOrComposite() throws Exception { RuleModel m = new RuleModel(); m.name = "or"; CompositeFactPattern cp = new CompositeFactPattern( CompositeFactPattern.COMPOSITE_TYPE_OR ); FactPattern p1 = new FactPattern( "Person" ); SingleFieldConstraint sf1 = new SingleFieldConstraint( "age" ); sf1.setOperator( "==" ); sf1.setValue( "42" ); p1.addConstraint( sf1 ); cp.addFactPattern( p1 ); FactPattern p2 = new FactPattern( "Person" ); SingleFieldConstraint sf2 = new SingleFieldConstraint( "age" ); sf2.setOperator( "==" ); sf2.setValue( "43" ); p2.addConstraint( sf2 ); cp.addFactPattern( p2 ); m.addLhsItem( cp ); String result = BRDRLPersistence.getInstance().marshal( m ); assertTrue( result.indexOf( "( Person( age == 42 ) or Person( age == 43 ) )" ) > 0 ); checkMarshallUnmarshall( result, m ); }
public void visitCompositeFactPattern( final CompositeFactPattern pattern ) { buf.append( indentation ); if ( isDSLEnhanced ) { // adding passthrough markup buf.append( ">" ); } if ( CompositeFactPattern.COMPOSITE_TYPE_EXISTS.equals( pattern.getType() ) ) { renderCompositeFOL( pattern ); } else if ( CompositeFactPattern.COMPOSITE_TYPE_NOT.equals( pattern.getType() ) ) { renderCompositeFOL( pattern ); } else if ( CompositeFactPattern.COMPOSITE_TYPE_OR.equals( pattern.getType() ) ) { buf.append( "( " ); if ( pattern.getPatterns() != null ) { for ( int i = 0; i < pattern.getPatterns().length; i++ ) { if ( i > 0 ) { buf.append( " " ); buf.append( pattern.getType() ); buf.append( " " ); } renderSubPattern( pattern, i ); } } buf.append( " )\n" ); } }
@Test public void testInvalidComposite() throws Exception { RuleModel m = new RuleModel(); CompositeFactPattern com = new CompositeFactPattern( "not" ); m.addLhsItem( com ); String s = BRDRLPersistence.getInstance().marshal( m ); assertNotNull( s ); m.addLhsItem( new CompositeFactPattern( "or" ) ); m.addLhsItem( new CompositeFactPattern( "exists" ) ); s = BRDRLPersistence.getInstance().marshal( m ); assertNotNull( s ); }
public void onClick( ClickEvent event ) { Widget sender = (Widget) event.getSource(); if ( sender == fromBtn ) { pattern.addFactPattern( new FromCompositeFactPattern() ); } else if ( sender == fromAccumulateBtn ) { pattern.addFactPattern( new FromAccumulateCompositeFactPattern() ); } else if ( sender == fromCollectBtn ) { pattern.addFactPattern( new FromCollectCompositeFactPattern() ); } else { throw new IllegalArgumentException( "Unknown sender: " + sender ); } setModified( true ); getModeller().refreshWidget(); popup.hide(); } };
this.readOnly = false; this.isFactTypeKnown = true; if ( this.pattern != null && this.pattern.getPatterns() != null ) { IFactPattern[] patterns = this.pattern.getPatterns(); for ( int i = 0; i < patterns.length; i++ ) { IFactPattern p = patterns[ i ];
@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 ); }
@Test public void testAllVariableBindings() { final RuleModel model = new RuleModel(); model.lhs = new IPattern[2]; final FactPattern x = new FactPattern( "Car" ); model.lhs[0] = x; x.setBoundName( "boundFact" ); SingleFieldConstraint sfc = new SingleFieldConstraint( "q" ); x.addConstraint( sfc ); sfc.setFieldBinding( "field1" ); SingleFieldConstraint sfc2 = new SingleFieldConstraint( "q" ); x.addConstraint( sfc2 ); sfc2.setFieldBinding( "field2" ); model.lhs[1] = new CompositeFactPattern(); List vars = model.getAllVariables(); assertEquals( 3, vars.size() ); assertEquals( "boundFact", vars.get( 0 ) ); assertEquals( "field1", vars.get( 1 ) ); assertEquals( "field2", vars.get( 2 ) ); assertTrue( model.isVariableNameUsed( "field2" ) ); }
public void onChange( ChangeEvent event ) { pattern.addFactPattern( new FactPattern( box.getItemText( box.getSelectedIndex() ) ) ); setModified( true ); getModeller().refreshWidget(); popup.hide(); } } );