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; }
sfc1.setFieldBinding( "$sfc1" ); sfc1.setOperator( "==" ); sfc1.setFactType( "Driver" ); sfc1.setFieldName( "name" ); sfc1.setFieldType( DataType.TYPE_STRING );
sfc1.setFactType( "Goober" ); sfc1.setFieldName( "gooField" ); sfc1.setFieldType( DataType.TYPE_STRING ); sfc2.setFactType( "Goober" ); sfc2.setFieldName( "fooField" ); sfc2.setFieldType( DataType.TYPE_OBJECT ); sfc3.setFactType( "Bar" ); sfc3.setFieldName( "barField" ); sfc3.setParent( sfc2 ); sfc4.setFactType( "Goober" ); sfc4.setFieldName( "zooField" ); sfc4.setFieldType( DataType.TYPE_STRING );
sfc1.setFactType( "Goober" ); sfc1.setFieldName( "gooField" ); sfc1.setFieldType( DataType.TYPE_STRING ); sfc2.setFactType( "Goober" ); sfc2.setFieldName( "fooField" ); sfc2.setFieldType( DataType.TYPE_OBJECT ); sfc1.setFactType( "Bar" ); sfc3.setFieldName( "barField" ); sfc3.setParent( sfc2 ); sfc4.setFactType( "Goober" ); sfc4.setFieldName( "zooField" ); sfc4.setFieldType( DataType.TYPE_STRING );
sfc1.setFactType( "Goober" ); sfc1.setFieldName( "gooField" ); sfc1.setFieldType( DataType.TYPE_STRING ); sfc2.setFactType( "Goober" ); sfc2.setFieldName( "fooField" ); sfc2.setFieldType( DataType.TYPE_OBJECT ); sfc3.setFactType( "Bar" ); sfc3.setFieldName( "barField" ); sfc3.setParent( sfc2 );
sfc1.setFieldBinding( "$sfc1" ); sfc1.setOperator( "==" ); sfc1.setFactType( "Driver" ); sfc1.setFieldName( "name" ); sfc1.setFieldType( DataType.TYPE_STRING );
sfc1.setFactType( "Goober" ); sfc1.setFieldName( "gooField" ); sfc1.setFieldType( DataType.TYPE_STRING ); sfc2.setFactType( "Goober" ); sfc2.setFieldName( "fooField" ); sfc2.setFieldType( DataType.TYPE_OBJECT ); sfc3.setFactType( "Bar" ); sfc3.setFieldName( "barField" ); sfc3.setParent( sfc2 );
sfc1.setFieldBinding( "$sfc1" ); sfc1.setOperator( "==" ); sfc1.setFactType( "Driver" ); sfc1.setFieldName( "name" ); sfc1.setFieldType( DataType.TYPE_STRING ); sfc2.setFieldBinding( "$sfc1" ); sfc2.setOperator( "==" ); sfc2.setFactType( "Driver" ); sfc2.setFieldName( "name" ); sfc2.setFieldType( DataType.TYPE_STRING );
sfc1.setFieldBinding( "$sfc1" ); sfc1.setOperator( "==" ); sfc1.setFactType( "Driver" ); sfc1.setFieldName( "name" ); sfc1.setFieldType( DataType.TYPE_STRING );
@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 ); }
sfc1.setFieldBinding( "$sfc1" ); sfc1.setOperator( "==" ); sfc1.setFactType( "Driver" ); sfc1.setFieldName( "name" ); sfc1.setFieldType( DataType.TYPE_STRING );
@Test public void testFromAccumulateWithEmbeddedFromEntryPoint() { 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 ); FromAccumulateCompositeFactPattern fac = new FromAccumulateCompositeFactPattern(); fac.setSourcePattern( fep ); fac.setFactPattern( new FactPattern( "java.util.List" ) ); fac.setFunction( "max($a)" ); m.addLhsItem( fac ); String expected = "rule \"r1\"\n" + "dialect \"mvel\"\n" + "when\n" + "java.util.List( ) from accumulate ( Foo( $a : bar == 777 ) from entry-point \"ep\", \n" + "max($a))\n" + "then\n" + "end"; checkMarshallUnmarshall( expected, m ); }