private SingleFieldConstraintEBLeftSide visitSingleFieldConstraint(SingleFieldConstraintEBLeftSide sfexp) { SingleFieldConstraintEBLeftSide clone = new SingleFieldConstraintEBLeftSide(); clone.setConstraintValueType( sfexp.getConstraintValueType() ); clone.setExpressionLeftSide( (ExpressionFormLine) visit( sfexp.getExpressionLeftSide() ) ); clone.setExpressionValue( (ExpressionFormLine) visit( sfexp.getExpressionValue() ) ); clone.setFieldBinding( sfexp.getFieldBinding() ); clone.setFactType( sfexp.getFactType() ); clone.setFieldName( sfexp.getFieldName() ); clone.setFieldType( sfexp.getFieldType() ); clone.setOperator( sfexp.getOperator() ); for ( Map.Entry<String, String> entry : sfexp.getParameters().entrySet() ) { clone.setParameter( entry.getKey(), entry.getValue() ); } clone.setParent( sfexp.getParent() ); clone.setValue( sfexp.getValue() ); if ( sfexp.connectives != null ) { clone.connectives = new ConnectiveConstraint[sfexp.connectives.length]; for ( int i = 0; i < sfexp.connectives.length; i++ ) { clone.connectives[i] = (ConnectiveConstraint) visit( sfexp.connectives[i] ); } } return clone; }
private void visitSingleFieldConstraint(final SingleFieldConstraintEBLeftSide sfexp) { if ( sfexp.getConstraintValueType() == BaseSingleFieldConstraint.TYPE_TEMPLATE ) { this.peerVariables.add( new ValueHolder( sfexp.getFieldName(), sfexp.getValue(), ValueHolder.Type.TEMPLATE_KEY ) ); } else { this.peerVariables.add( new ValueHolder( sfexp.getFieldName(), sfexp.getValue(), ValueHolder.Type.VALUE ) ); } }
private void visitSingleFieldConstraint(SingleFieldConstraintEBLeftSide sfexp) { String genericType = sfexp.getExpressionLeftSide().getGenericType(); String factType = sfexp.getExpressionLeftSide().getPreviousClassType(); if ( factType == null ) { factType = sfexp.getExpressionLeftSide().getClassType(); } InterpolationVariable var = new InterpolationVariable( sfexp.getValue(), genericType, factType, sfexp.getFieldName() ); if ( BaseSingleFieldConstraint.TYPE_TEMPLATE == sfexp.getConstraintValueType() && !vars.containsKey( var ) ) { vars.put( var, vars.size() ); } //Visit Connection constraints if ( sfexp.connectives != null ) { for ( int i = 0; i < sfexp.connectives.length; i++ ) { final ConnectiveConstraint cc = sfexp.connectives[i]; InterpolationVariable ccVar = new InterpolationVariable( cc.getValue(), genericType, factType, cc.getFieldName() ); if ( BaseSingleFieldConstraint.TYPE_TEMPLATE == cc.getConstraintValueType() && !vars.containsKey( ccVar ) ) { vars.put( ccVar, vars.size() ); } } } }
@Test public void testLHSExpressionString1() { RuleModel m = new RuleModel(); m.name = "test expressionsString1"; FactPattern p = new FactPattern( "Person" ); SingleFieldConstraintEBLeftSide con = new SingleFieldConstraintEBLeftSide(); con.getExpressionLeftSide().appendPart( new ExpressionText( "field1" ) ); con.setOperator( "==" ); con.setValue( "goo" ); con.setConstraintValueType( SingleFieldConstraint.TYPE_LITERAL ); p.addConstraint( con ); m.addLhsItem( p ); String result = BRDRLPersistence.getInstance().marshal( m ); assertEqualsIgnoreWhitespace( "rule \"test expressionsString1\"" + "\tdialect \"mvel\"\n when " + " Person( field1 == \"goo\" )" + " then " + "end", result ); }
SingleFieldConstraintEBLeftSide sfc0p0 = new SingleFieldConstraintEBLeftSide(); sfc0p0.setConstraintValueType( BaseSingleFieldConstraint.TYPE_TEMPLATE ); sfc0p0.setOperator( "==" ); sfc0p0.setValue( "sfc0p0Value" ); fp0.addConstraint( sfc0p0 ); SuggestionCompletionEngine.TYPE_STRING ); efl0sfc0p0.appendPart( ef0sfc0p0 ); sfc0p0.setExpressionLeftSide( efl0sfc0p0 ); SingleFieldConstraintEBLeftSide sfc1p0 = new SingleFieldConstraintEBLeftSide(); sfc1p0.setConstraintValueType( BaseSingleFieldConstraint.TYPE_TEMPLATE ); sfc1p0.setOperator( "==" ); sfc1p0.setValue( "sfc1p0Value" ); fp0.addConstraint( sfc1p0 ); SuggestionCompletionEngine.TYPE_STRING ); efl0sfc1p0.appendPart( ef0sfc1p0 ); sfc1p0.setExpressionLeftSide( efl0sfc1p0 ); SingleFieldConstraintEBLeftSide sfc0p1 = new SingleFieldConstraintEBLeftSide(); sfc0p1.setConstraintValueType( BaseSingleFieldConstraint.TYPE_TEMPLATE ); sfc0p1.setOperator( "==" ); sfc0p1.setValue( "sfc0p1Value" ); fp1.addConstraint( sfc0p1 ); SuggestionCompletionEngine.TYPE_STRING ); efl0sfc0p1.appendPart( ef0sfc0p1 ); sfc0p1.setExpressionLeftSide( efl0sfc0p1 );
SingleFieldConstraintEBLeftSide sfc0 = new SingleFieldConstraintEBLeftSide(); ExpressionText eflhs0p0 = new ExpressionText( "eflhs0p0" ); eflhs0.appendPart( eflhs0p0 ); sfc0.setExpressionLeftSide( eflhs0 ); ExpressionText efl0p0 = new ExpressionText( "efl0p0" ); efl0.appendPart( efl0p0 ); sfc0.setExpressionValue( efl0 ); assertNotSame( sfc0.getExpressionLeftSide(), sfc0Clone.getExpressionLeftSide() ); assertNotNull( sfc0Clone.getExpressionLeftSide() ); assertTrue( sfc0Clone.getExpressionLeftSide() instanceof ExpressionFormLine ); ExpressionFormLine eflhs0Clone = (ExpressionFormLine) sfc0Clone.getExpressionLeftSide(); sfc0Clone.getExpressionLeftSide().getParts().size() ); assertTrue( sfc0Clone.getExpressionLeftSide().getParts().get( 0 ) instanceof ExpressionText ); ExpressionText eflhs0p0Clone = (ExpressionText) sfc0Clone.getExpressionLeftSide().getParts().get( 0 ); assertEquals( eflhs0p0.getClassType(), eflhs0p0Clone.getClassType() ); assertNotSame( sfc0.getExpressionValue(), sfc0Clone.getExpressionValue() ); assertNotNull( sfc0Clone.getExpressionValue() ); assertTrue( sfc0Clone.getExpressionValue() instanceof ExpressionFormLine ); ExpressionFormLine efl0Clone = (ExpressionFormLine) sfc0Clone.getExpressionValue(); sfc0Clone.getExpressionValue().getParts().size() );
@Override public String getFieldName() { return getExpressionLeftSide().getFieldName(); }
protected String getFieldBinding(FieldConstraint fc, String var) { String fieldType = null; if ( fc instanceof SingleFieldConstraint ) { SingleFieldConstraint s = (SingleFieldConstraint) fc; if ( s.isBound() && var.equals( s.getFieldBinding() ) ) { fieldType = s.getFieldType(); } } if ( fc instanceof SingleFieldConstraintEBLeftSide ) { SingleFieldConstraintEBLeftSide s = (SingleFieldConstraintEBLeftSide) fc; if ( s.isBound() && var.equals( s.getFieldBinding() ) ) { fieldType = s.getExpressionLeftSide().getGenericType(); } } if ( fc instanceof CompositeFieldConstraint ) { CompositeFieldConstraint s = (CompositeFieldConstraint) fc; if ( s.constraints != null ) { for ( FieldConstraint ss : s.constraints ) { fieldType = getFieldBinding( ss, var ); } } } return fieldType; }
buf.append( ( (SingleFieldConstraintEBLeftSide) constr ).getExpressionLeftSide().getText() ); } else { String fieldName = constr.getFieldName(); SingleFieldConstraintEBLeftSide sfexp = (SingleFieldConstraintEBLeftSide) constr; addFieldRestriction( buf, sfexp.getConstraintValueType(), sfexp.getExpressionLeftSide().getGenericType(), sfexp.getOperator(), parameters, sfexp.getValue(),
@Test public void testAllVariableBindings2() { final RuleModel model = new RuleModel(); model.lhs = new IPattern[1]; final FactPattern fp = new FactPattern( "Car" ); model.lhs[0] = fp; fp.setBoundName( "$c" ); SingleFieldConstraint sfc = new SingleFieldConstraintEBLeftSide( "make" ); sfc.getExpressionValue().appendPart( new ExpressionField( "make", "java.lang.String", SuggestionCompletionEngine.TYPE_STRING ) ); sfc.setFieldBinding( "$m" ); fp.addConstraint( sfc ); List<String> vars = model.getAllVariables(); assertEquals( 2, vars.size() ); assertEquals( "$c", vars.get( 0 ) ); assertEquals( "$m", vars.get( 1 ) ); }
@Test public void testLHSExpressionNumber() { RuleModel m = new RuleModel(); m.name = "test expressionsNumber"; FactPattern p = new FactPattern( "Person" ); SingleFieldConstraintEBLeftSide con = new SingleFieldConstraintEBLeftSide(); con.getExpressionLeftSide().appendPart( new ExpressionUnboundFact( p ) ); con.getExpressionLeftSide().appendPart( new ExpressionField( "field1", "java.lang.Integer", SuggestionCompletionEngine.TYPE_NUMERIC_INTEGER ) ); con.setOperator( "==" ); con.setValue( "55" ); con.setConstraintValueType( SingleFieldConstraint.TYPE_LITERAL ); p.addConstraint( con ); m.addLhsItem( p ); String result = BRDRLPersistence.getInstance().marshal( m ); assertEqualsIgnoreWhitespace( "rule \"test expressionsNumber\"" + "\tdialect \"mvel\"\n when " + " Person( field1 == 55 )" + " then " + "end", result ); }
private void visitSingleFieldConstraint(SingleFieldConstraintEBLeftSide sfexp) { String genericType = sfexp.getExpressionLeftSide().getGenericType(); String factType = sfexp.getExpressionLeftSide().getPreviousClassType(); if ( factType == null ) { factType = sfexp.getExpressionLeftSide().getClassType(); } InterpolationVariable var = new InterpolationVariable( sfexp.getValue(), genericType, factType, sfexp.getFieldName() ); if ( BaseSingleFieldConstraint.TYPE_TEMPLATE == sfexp.getConstraintValueType() && !vars.containsKey( var ) ) { vars.put( var, vars.size() ); } //Visit Connection constraints if ( sfexp.connectives != null ) { for ( int i = 0; i < sfexp.connectives.length; i++ ) { final ConnectiveConstraint cc = sfexp.connectives[i]; InterpolationVariable ccVar = new InterpolationVariable( cc.getValue(), genericType, factType, cc.getFieldName() ); if ( BaseSingleFieldConstraint.TYPE_TEMPLATE == cc.getConstraintValueType() && !vars.containsKey( ccVar ) ) { vars.put( ccVar, vars.size() ); } } } }
@Override public String getFieldBinding() { return getExpressionLeftSide().getBinding(); }
protected String getFieldBinding(FieldConstraint fc, String var) { String fieldType = null; if ( fc instanceof SingleFieldConstraint ) { SingleFieldConstraint s = (SingleFieldConstraint) fc; if ( s.isBound() && var.equals( s.getFieldBinding() ) ) { fieldType = s.getFieldType(); } } if ( fc instanceof SingleFieldConstraintEBLeftSide ) { SingleFieldConstraintEBLeftSide s = (SingleFieldConstraintEBLeftSide) fc; if ( s.isBound() && var.equals( s.getFieldBinding() ) ) { fieldType = s.getExpressionLeftSide().getGenericType(); } } if ( fc instanceof CompositeFieldConstraint ) { CompositeFieldConstraint s = (CompositeFieldConstraint) fc; if ( s.constraints != null ) { for ( FieldConstraint ss : s.constraints ) { fieldType = getFieldBinding( ss, var ); } } } return fieldType; }
buf.append( ( (SingleFieldConstraintEBLeftSide) constr ).getExpressionLeftSide().getText() ); } else { String fieldName = constr.getFieldName(); SingleFieldConstraintEBLeftSide sfexp = (SingleFieldConstraintEBLeftSide) constr; addFieldRestriction( buf, sfexp.getConstraintValueType(), sfexp.getExpressionLeftSide().getGenericType(), sfexp.getOperator(), parameters, sfexp.getValue(),
private void visitSingleFieldConstraint(final SingleFieldConstraintEBLeftSide sfexp) { if ( sfexp.getConstraintValueType() == BaseSingleFieldConstraint.TYPE_TEMPLATE ) { this.peerVariables.add( new ValueHolder( sfexp.getFieldName(), sfexp.getValue(), ValueHolder.Type.TEMPLATE_KEY ) ); } else { this.peerVariables.add( new ValueHolder( sfexp.getFieldName(), sfexp.getValue(), ValueHolder.Type.VALUE ) ); } }
private SingleFieldConstraintEBLeftSide visitSingleFieldConstraint(SingleFieldConstraintEBLeftSide sfexp) { SingleFieldConstraintEBLeftSide clone = new SingleFieldConstraintEBLeftSide(); clone.setConstraintValueType( sfexp.getConstraintValueType() ); clone.setExpressionLeftSide( (ExpressionFormLine) visit( sfexp.getExpressionLeftSide() ) ); clone.setExpressionValue( (ExpressionFormLine) visit( sfexp.getExpressionValue() ) ); clone.setFieldBinding( sfexp.getFieldBinding() ); clone.setFactType( sfexp.getFactType() ); clone.setFieldName( sfexp.getFieldName() ); clone.setFieldType( sfexp.getFieldType() ); clone.setOperator( sfexp.getOperator() ); for ( Map.Entry<String, String> entry : sfexp.getParameters().entrySet() ) { clone.setParameter( entry.getKey(), entry.getValue() ); } clone.setParent( sfexp.getParent() ); clone.setValue( sfexp.getValue() ); if ( sfexp.connectives != null ) { clone.connectives = new ConnectiveConstraint[sfexp.connectives.length]; for ( int i = 0; i < sfexp.connectives.length; i++ ) { clone.connectives[i] = (ConnectiveConstraint) visit( sfexp.connectives[i] ); } } return clone; }
@Test public void testLHSExpressionBoolean() { RuleModel m = new RuleModel(); m.name = "test expressionsBoolean"; FactPattern p = new FactPattern( "Person" ); SingleFieldConstraintEBLeftSide con = new SingleFieldConstraintEBLeftSide(); con.getExpressionLeftSide().appendPart( new ExpressionUnboundFact( p ) ); con.getExpressionLeftSide().appendPart( new ExpressionField( "field1", "java.lang.Boolean", SuggestionCompletionEngine.TYPE_BOOLEAN ) ); con.setOperator( "==" ); con.setValue( "true" ); con.setConstraintValueType( SingleFieldConstraint.TYPE_LITERAL ); p.addConstraint( con ); m.addLhsItem( p ); String result = BRDRLPersistence.getInstance().marshal( m ); assertEqualsIgnoreWhitespace( "rule \"test expressionsBoolean\"" + "\tdialect \"mvel\"\n when " + " Person( field1 == true )" + " then " + "end", result ); }
@Override public void setFieldBinding(String fieldBinding) { getExpressionLeftSide().setBinding( fieldBinding ); }
@Test public void testLHSExpressionNestedJavaEnum() { RuleModel m = new RuleModel(); m.name = "test expressionsNestedJavaEnum"; FactPattern p = new FactPattern( "Person" ); SingleFieldConstraintEBLeftSide con = new SingleFieldConstraintEBLeftSide(); con.getExpressionLeftSide().appendPart( new ExpressionUnboundFact( p ) ); con.getExpressionLeftSide().appendPart( new ExpressionField( "favouriteCheese", "Cheese", SuggestionCompletionEngine.TYPE_OBJECT ) ); con.getExpressionLeftSide().appendPart( new ExpressionField( "genericName", "CHEESE", SuggestionCompletionEngine.TYPE_COMPARABLE ) ); con.setOperator( "==" ); con.setValue( "CHEESE.Cheddar" ); con.setConstraintValueType( SingleFieldConstraint.TYPE_LITERAL ); p.addConstraint( con ); m.addLhsItem( p ); String result = BRDRLPersistence.getInstance().marshal( m ); assertEqualsIgnoreWhitespace( "rule \"test expressionsNestedJavaEnum\"" + "\tdialect \"mvel\"\n when " + " Person( favouriteCheese.genericName == CHEESE.Cheddar )" + " then " + "end", result ); }