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.setFactType(sfexp.getFactType()); // skip setting fieldBinding, fieldName and fieldType, these are computed from expressionLeftSide clone.setId(sfexp.getId()); 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.getConnectives() != null) { clone.setConnectives(new ConnectiveConstraint[sfexp.getConnectives().length]); for (int i = 0; i < sfexp.getConnectives().length; i++) { clone.getConnectives()[i] = (ConnectiveConstraint) visit(sfexp.getConnectives()[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 ) ); } }
SingleFieldConstraintEBLeftSide makeSingleFieldConstraintEBLeftSide(final String factType) { final SingleFieldConstraintEBLeftSide constraint = new SingleFieldConstraintEBLeftSide(); final ExpressionFormLine expression = makeExpressionFormLine(factType); constraint.setConstraintValueType(SingleFieldConstraint.TYPE_UNDEFINED); constraint.setExpressionLeftSide(expression); constraint.setFactType(factType); return constraint; }
private void visitSingleFieldConstraint(final SingleFieldConstraintEBLeftSide sfexp) { final String genericType = sfexp.getExpressionLeftSide().getGenericType(); String factType = sfexp.getExpressionLeftSide().getPreviousClassType(); if (factType == null) { factType = sfexp.getExpressionLeftSide().getClassType(); final InterpolationVariable var = new InterpolationVariable(sfexp.getValue(), genericType, factType, sfexp.getFieldName()); if (BaseSingleFieldConstraint.TYPE_TEMPLATE == sfexp.getConstraintValueType() && !vars.contains(var)) { vars.add(var); } else { if (sfexp.getConnectives() != null) { for (int i = 0; i < sfexp.getConnectives().length; i++) { final ConnectiveConstraint cc = sfexp.getConnectives()[i]; InterpolationVariable ccVar = new InterpolationVariable(cc.getValue(), genericType,
private static SingleFieldConstraintEBLeftSide buildSingleFieldConstraintEBLeftSide() { SingleFieldConstraintEBLeftSide sfc = new SingleFieldConstraintEBLeftSide(); sfc.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL ); sfc.setExpressionValue( buildExpressionFormLine() ); sfc.setExpressionLeftSide( buildExpressionFormLine() ); sfc.setFactType( "FactType" ); // do not set fieldBinding, fieldName and fieldType, these are computed from expressionLeftSide sfc.setId( "id" ); sfc.setOperator( "operator" ); sfc.setParameter( "key", "parameter" ); sfc.setParent( new SingleFieldConstraint( "parentFieldName" ) ); sfc.setValue( "value" ); sfc.addNewConnective(); return sfc; }
private void generateNormalFieldRestriction(final SingleFieldConstraint constr, final Map<String, String> parameters) { if (constr instanceof SingleFieldConstraintEBLeftSide) { SingleFieldConstraintEBLeftSide sfexp = (SingleFieldConstraintEBLeftSide) constr; addFieldRestriction(buf, sfexp.getConstraintValueType(), sfexp.getExpressionLeftSide().getGenericType(), sfexp.getOperator(), parameters, sfexp.getValue(), sfexp.getExpressionValue(), true); } else { addFieldRestriction(buf, constr.getConstraintValueType(), constr.getFieldType(), constr.getOperator(), parameters, constr.getValue(), constr.getExpressionValue(), true); } }
private Set<String> visitSingleFieldConstraint(SingleFieldConstraintEBLeftSide sfexp) { final Set<String> factTypes = new HashSet<String>(); if (sfexp.getFactType() != null) { factTypes.add(sfexp.getFactType()); } factTypes.addAll(visit(sfexp.getExpressionValue())); factTypes.addAll(visit(sfexp.getExpressionLeftSide())); if (sfexp.getConnectives() != null) { for (int i = 0; i < sfexp.getConnectives().length; i++) { factTypes.addAll(visit(sfexp.getConnectives()[i])); } } return factTypes; } }
private void setUpSingleFieldConstraintEBLeftSide(SingleFieldConstraintEBLeftSide sfexp) { this.factType = sfexp.getExpressionLeftSide().getPreviousClassType(); if (this.factType == null) { this.factType = sfexp.getExpressionLeftSide().getClassType(); } this.fieldName = sfexp.getExpressionLeftSide().getFieldName(); this.fieldType = sfexp.getExpressionLeftSide().getGenericType(); }
private void visitSingleFieldConstraint(final SingleFieldConstraintEBLeftSide sfexp) { visit(sfexp.getExpressionLeftSide()); visit(sfexp.getExpressionValue()); if (sfexp.getConnectives() != null) { for (int i = 0; i < sfexp.getConnectives().length; i++) { visit(sfexp.getConnectives()[i]); } } }
@Test public void testMakeSingleFieldConstraintEBLeftSide() { final String expectedFactType = "factType"; final ExpressionFormLine expectedExpressionFormLine = mock(ExpressionFormLine.class); final int expectedConstraintValueType = SingleFieldConstraint.TYPE_UNDEFINED; doReturn(expectedExpressionFormLine).when(popupCreator).makeExpressionFormLine(expectedFactType); final SingleFieldConstraintEBLeftSide constraint = popupCreator.makeSingleFieldConstraintEBLeftSide(expectedFactType); assertEquals(expectedConstraintValueType, constraint.getConstraintValueType()); assertEquals(expectedExpressionFormLine, constraint.getExpressionLeftSide()); assertEquals(expectedFactType, constraint.getFactType()); }
/** * This adds a new connective. */ @Override public void addNewConnective() { String factType = getExpressionLeftSide().getPreviousGenericType(); if ( factType == null ) { factType = getExpressionLeftSide().getGenericType(); } String fieldName = getExpressionLeftSide().getFieldName(); String fieldType = getExpressionLeftSide().getGenericType(); if ( this.getConnectives() == null ) { this.setConnectives( new ConnectiveConstraint[]{ new ConnectiveConstraint( factType, fieldName, fieldType ) } ); } else { final ConnectiveConstraint[] newList = new ConnectiveConstraint[ this.getConnectives().length + 1 ]; for ( int i = 0; i < this.getConnectives().length; i++ ) { newList[ i ] = this.getConnectives()[ i ]; } newList[ this.getConnectives().length ] = new ConnectiveConstraint( factType, fieldName, fieldType ); this.setConnectives( newList ); } }
private HorizontalPanel expressionBuilderLS(final SingleFieldConstraintEBLeftSide con, boolean showBinding) { HorizontalPanel ab = new HorizontalPanel(); ab.setStyleName("modeller-field-Label"); if (!con.isBound()) { if (bindable && showBinding && !this.readOnly) { ab.add(new ExpressionBuilder(getModeller(), getEventBus(), con.getExpressionLeftSide())); } else { final DRLConstraintValueBuilder constraintValueBuilder = DRLConstraintValueBuilder.getBuilder(getRuleDialect()); final ToStringExpressionVisitor visitor = new ToStringExpressionVisitor(constraintValueBuilder); ab.add(new SmallLabel(con.getExpressionLeftSide().getText(visitor))); } } else { ab.add(new ExpressionBuilder(getModeller(), getEventBus(), con.getExpressionLeftSide())); } return ab; }
private SingleFieldConstraintEBLeftSide createSingleFieldConstraintEBLeftSide(final RuleModel m, final FactPattern factPattern, String fieldName, final String operator, final String value) { SingleFieldConstraintEBLeftSide con = new SingleFieldConstraintEBLeftSide(); fieldName = setFieldBindingOnContraint(factPattern.getFactType(), fieldName, m, con, boundParams); String classType = RuleModelPersistenceHelper.getFQFactType(m, factPattern.getFactType(), dmo); con.getExpressionLeftSide().appendPart(new ExpressionUnboundFact(factPattern.getFactType())); parseExpression(m, classType, fieldName, con.getExpressionLeftSide()); setOperatorAndValueOnConstraint(m, operator, value, factPattern, con); return con; }
public 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.getConstraints() != null) { for (FieldConstraint ss : s.getConstraints()) { fieldType = getFieldBinding(ss, var); } } } return fieldType; }
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.getConnectives() != null) { for (int i = 0; i < sfexp.getConnectives().length; i++) { final ConnectiveConstraint cc = sfexp.getConnectives()[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()); } } } }
SingleFieldConstraintEBLeftSide sfexp = (SingleFieldConstraintEBLeftSide) constr; addConnectiveFieldRestriction(buf, sfexp.getConstraintValueType(), sfexp.getExpressionLeftSide().getGenericType(), sfexp.getOperator(), parameters, sfexp.getValue(), sfexp.getExpressionValue(), cctx, true);
private Set<String> visitSingleFieldConstraint(SingleFieldConstraintEBLeftSide sfexp) { final Set<String> factTypes = new HashSet<String>(); if (sfexp.getFactType() != null) { factTypes.add(sfexp.getFactType()); } factTypes.addAll(visit(sfexp.getExpressionValue())); factTypes.addAll(visit(sfexp.getExpressionLeftSide())); if (sfexp.getConnectives() != null) { for (int i = 0; i < sfexp.getConnectives().length; i++) { factTypes.addAll(visit(sfexp.getConnectives()[i])); } } return factTypes; } }
@Override public String getFieldType() { return getExpressionLeftSide().getClassType(); }
private void visitSingleFieldConstraint(final SingleFieldConstraintEBLeftSide sfexp) { visit(sfexp.getExpressionLeftSide()); visit(sfexp.getExpressionValue()); if (sfexp.getConnectives() != null) { for (int i = 0; i < sfexp.getConnectives().length; i++) { visit(sfexp.getConnectives()[i]); } } }
@Test public void testMakeSingleFieldConstraintEBLeftSide() { final String expectedFactType = "factType"; final ExpressionFormLine expectedExpressionFormLine = mock(ExpressionFormLine.class); final int expectedConstraintValueType = SingleFieldConstraint.TYPE_UNDEFINED; doReturn(expectedExpressionFormLine).when(popupCreator).makeExpressionFormLine(expectedFactType); final SingleFieldConstraintEBLeftSide constraint = popupCreator.makeSingleFieldConstraintEBLeftSide(expectedFactType); assertEquals(expectedConstraintValueType, constraint.getConstraintValueType()); assertEquals(expectedExpressionFormLine, constraint.getExpressionLeftSide()); assertEquals(expectedFactType, constraint.getFactType()); }