@Test public void testLiteralDates() { RuleModel m = new RuleModel(); m.name = "test literal dates"; FactPattern p = new FactPattern( "Person" ); SingleFieldConstraint con = new SingleFieldConstraint(); con.setFieldType( DataType.TYPE_DATE ); con.setFieldName( "field1" ); con.setOperator( "==" ); con.setValue( "31-Jan-2010" ); con.setConstraintValueType( SingleFieldConstraint.TYPE_LITERAL ); p.addConstraint( con ); SingleFieldConstraint con2 = new SingleFieldConstraint(); con2.setFieldName( "field2" ); con2.setOperator( "==" ); con2.setValue( "variableHere" ); con2.setConstraintValueType( SingleFieldConstraint.TYPE_VARIABLE ); p.addConstraint( con2 ); m.addLhsItem( p ); String expected = "rule \"test literal dates\"" + "\tdialect \"mvel\"\n when " + " Person(field1 == \"31-Jan-2010\", field2 == variableHere)" + " then " + "end"; checkMarshallUnmarshall( expected, m ); }
private SingleFieldConstraint visitSingleFieldConstraint( SingleFieldConstraint sfc ) { SingleFieldConstraint clone = new SingleFieldConstraint(); clone.setConstraintValueType( sfc.getConstraintValueType() ); clone.setExpressionValue( (ExpressionFormLine) visit( sfc.getExpressionValue() ) ); clone.setFieldBinding( sfc.getFieldBinding() ); clone.setFactType( sfc.getFactType() ); clone.setFieldName( sfc.getFieldName() ); clone.setFieldType( sfc.getFieldType() ); clone.setOperator( sfc.getOperator() ); for ( Map.Entry<String, String> entry : sfc.getParameters().entrySet() ) { clone.setParameter( entry.getKey(), entry.getValue() ); } clone.setValue( sfc.getValue() ); if ( sfc.getConnectives() != null ) { clone.setConnectives( new ConnectiveConstraint[ sfc.getConnectives().length ] ); for ( int i = 0; i < sfc.getConnectives().length; i++ ) { clone.getConnectives()[ i ] = (ConnectiveConstraint) visit( sfc.getConnectives()[ i ] ); } } return clone; }
public FieldConstraint asFieldConstraint( FactPattern factPattern ) { SingleFieldConstraint con = new SingleFieldConstraint(); con.setConstraintValueType( SingleFieldConstraint.TYPE_PREDICATE ); con.setValue( expr ); return con; } }
public void onClick( ClickEvent event ) { sfc.setConstraintValueType( SingleFieldConstraint.TYPE_LITERAL ); sfc.setId( customFormPopUp.getFormId() ); sfc.setValue( customFormPopUp.getFormValue() ); doTypeChosen( customFormPopUp ); } } );
final SingleFieldConstraint sfc1 = new SingleFieldConstraint(); sfc1.setFactType( "Goober" ); sfc1.setFieldName( "gooField" ); sfc1.setFieldType( DataType.TYPE_STRING ); sfc1.setConstraintValueType( SingleFieldConstraint.TYPE_LITERAL ); sfc1.setValue( "gooValue" ); sfc1.setOperator( "==" ); comp.addConstraint( sfc1 ); final SingleFieldConstraint sfc2 = new SingleFieldConstraint(); sfc2.setFactType( "Goober" ); sfc2.setFieldName( "fooField" ); sfc2.setFieldType( DataType.TYPE_OBJECT ); sfc2.setConstraintValueType( SingleFieldConstraint.TYPE_LITERAL ); sfc2.setOperator( "!= null" ); comp.addConstraint( sfc2 ); final SingleFieldConstraint sfc3 = new SingleFieldConstraint(); sfc3.setFactType( "Bar" ); sfc3.setFieldName( "barField" ); sfc3.setParent( sfc2 ); sfc3.setFieldType( DataType.TYPE_STRING ); sfc3.setConstraintValueType( SingleFieldConstraint.TYPE_LITERAL ); sfc3.setValue( "barValue" ); sfc3.setOperator( "==" ); comp.addConstraint( sfc3 ); final SingleFieldConstraint sfc4 = new SingleFieldConstraint(); sfc4.setFactType( "Goober" );
fp1.setBoundName( "$brl1" ); SingleFieldConstraint sfc1 = new SingleFieldConstraint(); sfc1.setFieldBinding( "$sfc1" ); sfc1.setOperator( "==" ); sfc1.setFactType( "Driver" ); sfc1.setFieldName( "name" ); sfc1.setFieldType( DataType.TYPE_STRING ); fp2.setBoundName( "$brl1" ); SingleFieldConstraint sfc2 = new SingleFieldConstraint(); sfc2.setFieldBinding( "$sfc1" ); sfc2.setOperator( "==" ); sfc2.setFactType( "Driver" ); sfc2.setFieldName( "name" ); sfc2.setFieldType( DataType.TYPE_STRING );
@Test public void testConnective() { RuleModel m = new RuleModel(); m.name = "test literal strings"; FactPattern p = new FactPattern( "Person" ); SingleFieldConstraint con = new SingleFieldConstraint(); con.setFieldType( DataType.TYPE_STRING ); con.setFieldName( "field1" ); con.setOperator( "==" ); con.setValue( "goo" ); con.setConstraintValueType( SingleFieldConstraint.TYPE_VARIABLE ); p.addConstraint( con ); ConnectiveConstraint connective = new ConnectiveConstraint(); connective.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL ); connective.setFieldType( DataType.TYPE_STRING ); connective.setOperator( "|| ==" ); connective.setValue( "blah" ); con.setConnectives( new ConnectiveConstraint[ 1 ] ); con.getConnectives()[ 0 ] = connective; m.addLhsItem( p ); String expected = "rule \"test literal strings\" " + "\tdialect \"mvel\"\n when " + "Person( field1 == goo || == \"blah\" )" + " then " + "end"; checkMarshallUnmarshall( expected, m ); }
SingleFieldConstraint brl1DefinitionFactPattern1Constraint1 = new SingleFieldConstraint(); brl1DefinitionFactPattern1Constraint1.setFieldType( DataType.TYPE_STRING ); brl1DefinitionFactPattern1Constraint1.setConstraintValueType( SingleFieldConstraint.TYPE_TEMPLATE ); brl1DefinitionFactPattern1Constraint1.setFieldName( "name" ); brl1DefinitionFactPattern1Constraint1.setOperator( "==" ); brl1DefinitionFactPattern1Constraint1.setValue( "$name" ); brl1DefinitionFactPattern1.addConstraint( brl1DefinitionFactPattern1Constraint1 ); SingleFieldConstraint brl1DefinitionFactPattern1Constraint2 = new SingleFieldConstraint(); brl1DefinitionFactPattern1Constraint2.setFieldType( DataType.TYPE_NUMERIC_INTEGER ); brl1DefinitionFactPattern1Constraint2.setConstraintValueType( SingleFieldConstraint.TYPE_TEMPLATE ); brl1DefinitionFactPattern1Constraint2.setFieldName( "age" ); brl1DefinitionFactPattern1Constraint2.setOperator( "==" ); brl1DefinitionFactPattern1Constraint2.setValue( "$age" ); brl1DefinitionFactPattern1.addConstraint( brl1DefinitionFactPattern1Constraint2 ); result0Fp1Con1.getConstraintValueType() ); assertEquals( "name", result0Fp1Con1.getFieldName() ); assertEquals( "==", result0Fp1Con1.getOperator() ); assertEquals( "Gargamel", result0Fp1Con1.getValue() ); result0Fp2Con1.getConstraintValueType() ); assertEquals( "name", result0Fp2Con1.getFieldName() ); assertEquals( "==", result0Fp2Con1.getOperator() );
private void generateSingleFieldConstraint( final SingleFieldConstraint constr, final StringBuilder buf ) { if ( constr.getConstraintValueType() == BaseSingleFieldConstraint.TYPE_PREDICATE ) { buf.append( "eval( " ); buf.append( constr.getValue() ); buf.append( " )" ); } else { if ( constr.isBound() ) { bindingsFields.put( constr.getFieldBinding(), constr ); buf.append( constr.getFieldBinding() ); buf.append( " : " ); if ( ( constr.getOperator() != null && ( constr.getValue() != null || constr.getOperator().equals( "== null" ) || constr.getOperator().equals( "!= null" ) ) ) || constr.getFieldBinding() != null || constr.getConstraintValueType() == BaseSingleFieldConstraint.TYPE_EXPR_BUILDER_VALUE || constr instanceof SingleFieldConstraintEBLeftSide ) { SingleFieldConstraint parent = (SingleFieldConstraint) constr.getParent(); StringBuilder parentBuf = new StringBuilder(); while ( parent != null ) { String fieldName = parent.getFieldName(); parentBuf.insert( 0, fieldName + "." ); parent = (SingleFieldConstraint) parent.getParent(); buf.append( ( (SingleFieldConstraintEBLeftSide) constr ).getExpressionLeftSide().getText() ); } else {
fp.setBoundName( "$brl1" ); SingleFieldConstraint sfc1 = new SingleFieldConstraint(); sfc1.setFieldBinding( "$sfc1" ); sfc1.setOperator( "==" ); sfc1.setFactType( "Driver" ); sfc1.setFieldName( "name" ); sfc1.setFieldType( DataType.TYPE_STRING ); SingleFieldConstraint fcr1sfc = (SingleFieldConstraint) fcr1; assertEquals( "name", fcr1sfc.getFieldName() ); assertEquals( DataType.TYPE_STRING, fcr1sfc.getFieldType() );
cons.getConstraintValueType() ); assertEquals( "name", cons.getFieldName() ); assertEquals( "==", cons.getOperator() ); assertEquals( "mike", cons.getValue() ); assertEquals( "$name", cons.getFieldBinding() ); cons.getConstraintValueType() ); assertEquals( "age", cons.getFieldName() ); assertEquals( "<", cons.getOperator() ); assertEquals( "33 + 1", cons.getValue() ); assertNull( cons.getFieldBinding() ); cons.getConstraintValueType() ); assertEquals( "age > 6", cons.getValue() ); assertNull( cons.getFieldBinding() );
@Test public void testFromCollectWithEmbeddedFromEntryPoint() { RuleModel m = new RuleModel(); m.name = "r1"; SingleFieldConstraint sfc = new SingleFieldConstraint( "bar" ); sfc.setFactType( DataType.TYPE_NUMERIC_INTEGER ); sfc.setFieldBinding( "$a" ); sfc.setOperator( "==" ); sfc.setValue( "777" ); FactPattern fp = new FactPattern( "Foo" ); fp.addConstraint( sfc ); FromEntryPointFactPattern fep = new FromEntryPointFactPattern(); fep.setEntryPointName( "ep" ); fep.setFactPattern( fp ); FromCollectCompositeFactPattern fac = new FromCollectCompositeFactPattern(); fac.setRightPattern( fep ); fac.setFactPattern( new FactPattern( "java.util.List" ) ); m.addLhsItem( fac ); String expected = "rule \"r1\"\n" + "dialect \"mvel\"\n" + "when\n" + "java.util.List( ) from collect ( Foo( $a : bar == 777 ) from entry-point \"ep\" ) \n" + "then\n" + "end"; checkMarshallUnmarshall( expected, m ); }
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; }
final SingleFieldConstraint con = new SingleFieldConstraint(); con.setFieldBinding( "f1" ); con.setFieldName( "age" ); con.setOperator( "<" ); con.setValue( "42" ); pat.addConstraint( con );
private void visitSingleFieldConstraint( SingleFieldConstraint sfc ) { InterpolationVariable var = new InterpolationVariable( sfc.getValue(), sfc.getFieldType(), factPattern.getFactType(), sfc.getFieldName() ); if ( BaseSingleFieldConstraint.TYPE_TEMPLATE == sfc.getConstraintValueType() && !vars.containsKey( var ) ) { vars.put( var, vars.size() ); } //Visit Connection constraints if ( sfc.getConnectives() != null ) { for ( int i = 0; i < sfc.getConnectives().length; i++ ) { final ConnectiveConstraint cc = sfc.getConnectives()[ i ]; InterpolationVariable ccVar = new InterpolationVariable( cc.getValue(), cc.getFieldType(), factPattern.getFactType(), cc.getFieldName() ); if ( BaseSingleFieldConstraint.TYPE_TEMPLATE == cc.getConstraintValueType() && !vars.containsKey( ccVar ) ) { vars.put( ccVar, vars.size() ); } } } }
if ( selectedText.equals( c.getOperator() ) ) { return; final boolean oldOperatorRequiresExplicitList = OperatorsOracle.operatorRequiresList( c.getOperator() ); c.setOperator( selected ); if ( c.getOperator().equals( "" ) ) { c.setOperator( null ); final String[] oldValueList = c.getValue().split( "," ); if ( oldValueList.length > 0 ) { c.setValue( oldValueList[ 0 ] );
@Test public void textIsNotNullOperator() { final RuleModel m = new RuleModel(); m.name = "IsNotNullOperator"; final FactPattern pat = new FactPattern( "Person" ); final SingleFieldConstraint con = new SingleFieldConstraint(); con.setFieldName( "age" ); con.setOperator( "!= null" ); pat.addConstraint( con ); m.addLhsItem( pat ); String s = BRDRLPersistence.getInstance().marshal( m ); assertTrue( s.indexOf( "Person( age != null )" ) != -1 ); checkMarshallUnmarshall( s, m ); }
public void onExpressionTypeChanged( ExpressionTypeChangeEvent event ) { try { //Change "operator" drop-down as the content depends on data-type constraint.setFieldType( event.getNewType() ); inner.setWidget( row, 1 + col, operatorDropDown( constraint, inner, row, 2 + col ) ); //Change "value" editor to the pen icon as the applicable Widget depends on data-type constraint.setConstraintValueType( SingleFieldConstraint.TYPE_UNDEFINED ); constraint.setValue( "" ); inner.setWidget( row, 2 + col, valueEditor( constraint ) ); } catch ( Exception e ) { e.printStackTrace(); } } } );
@Test public void testScopedVariablesWithCompositeFact() { RuleModel m = new RuleModel(); FactPattern p = new FactPattern(); CompositeFieldConstraint cf = new CompositeFieldConstraint(); cf.addConstraint( new SingleFieldConstraint( "x" ) ); p.addConstraint( cf ); SingleFieldConstraint sf = new SingleFieldConstraint( "q" ); sf.setFieldBinding( "abc" ); p.addConstraint( sf ); SingleFieldConstraint sf2 = new SingleFieldConstraint( "q" ); sf2.setFieldBinding( "qed" ); cf.addConstraint( sf2 ); m.addLhsItem( p ); List vars = m.getAllVariables(); assertEquals( 1, vars.size() ); assertEquals( "abc", vars.get( 0 ) ); } /*
private RuleModel getModelWithNoConstraints() { final RuleModel m = new RuleModel(); m.name = "Complex Rule"; final FactPattern pat = new FactPattern( "Person" ); pat.setBoundName( "p1" ); final SingleFieldConstraint con = new SingleFieldConstraint(); con.setFieldBinding( "f1" ); con.setFieldName( "age" ); // con.operator = "<"; // con.value = "42"; pat.addConstraint( con ); m.addLhsItem( pat ); return m; }