public PatternDescrBuilder<P> bind( String var, String target, boolean isUnification ) { descr.addConstraint( new BindingDescr( var, target, isUnification ) ); return this; }
/** * Returns the remaining patterns from the forall CE * @return */ public List<BaseDescr> getRemainingPatterns() { if ( this.patterns.size() > 1 ) { return this.patterns.subList( 1, this.patterns.size() ); } else if ( this.patterns.size() == 1 ) { // in case there is only one pattern, we do a rewrite, so: // forall( Cheese( type == "stilton" ) ) // becomes // forall( BASE_IDENTIFIER : Cheese() Cheese( this == BASE_IDENTIFIER, type == "stilton" ) ) PatternDescr original = (PatternDescr) this.patterns.get( 0 ); PatternDescr remaining = (PatternDescr) original.clone(); remaining.addConstraint( new ExprConstraintDescr( "this == " + BASE_IDENTIFIER ) ); return Collections.singletonList( (BaseDescr)remaining ); } return Collections.emptyList(); }
public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException { final Element element = parser.endElementBuilder(); final String expression =((org.w3c.dom.Text)element.getChildNodes().item( 0 )).getWholeText(); if ( expression == null || expression.trim().equals( "" ) ) { throw new SAXParseException( "<predicate> must have some content", parser.getLocator() ); } final PatternDescr patternDescr = (PatternDescr) parser.getParent(); ExprConstraintDescr expr = new ExprConstraintDescr("eval(" + expression + ")"); patternDescr.addConstraint( expr ); return expr; }
public Object end( final String uri, final String localName, final ExtensibleXmlParser parser ) throws SAXException { final Element element = parser.endElementBuilder(); final BindingDescr fieldBindingDescr = (BindingDescr) parser.getCurrent(); final PatternDescr patternDescr = (PatternDescr) parser.getParent(); patternDescr.addConstraint( fieldBindingDescr ); return fieldBindingDescr; }
public PatternDescrBuilder<P> constraint( String constraint, boolean positional ) { ExprConstraintDescr constr = new ExprConstraintDescr( constraint ); constr.setType( positional ? ExprConstraintDescr.Type.POSITIONAL : ExprConstraintDescr.Type.NAMED ); constr.setPosition( descr.getConstraint().getDescrs().size() ); descr.addConstraint( constr ); return this; }
public PatternDescrBuilder<P> constraint( String constraint ) { ExprConstraintDescr constr = new ExprConstraintDescr( constraint ); constr.setType( ExprConstraintDescr.Type.NAMED ); constr.setPosition( descr.getConstraint().getDescrs().size() ); descr.addConstraint( constr ); return this; }
public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException { final Element element = parser.endElementBuilder(); Object op = parser.getParent(); ConnectiveDescr c = (ConnectiveDescr) parser.getCurrent(); if ( op instanceof PatternDescr ) { StringBuilder sb = new StringBuilder(); c.buildExpression( sb ); ExprConstraintDescr expr = new ExprConstraintDescr( ); expr.setExpression( sb.toString() ); final PatternDescr patternDescr = (PatternDescr)op; patternDescr.addConstraint( expr ); } else { ConnectiveDescr p = (ConnectiveDescr)op; p.add( c ); } return c; }
public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException { final Element element = parser.endElementBuilder(); final ConnectiveDescr c = (ConnectiveDescr) parser.getCurrent(); Object p = parser.getParent(); if ( p instanceof PatternDescr ) { StringBuilder sb = new StringBuilder(); c.buildExpression( sb ); ExprConstraintDescr expr = new ExprConstraintDescr(); expr.setExpression( sb.toString() ); final PatternDescr patternDescr = (PatternDescr) parser.getParent(); patternDescr.addConstraint( expr ); } else if ( p instanceof ConnectiveDescr ) { ((ConnectiveDescr) p).add( c ); } return c; }
public Object clone() { PatternDescr clone = new PatternDescr( this.objectType, this.identifier ); clone.setQuery( this.query ); clone.setUnification( unification ); clone.setLeftParentCharacter( this.leftParentCharacter ); clone.setRightParentCharacter( this.rightParentCharacter ); clone.setSource( this.source ); clone.setStartCharacter( this.getStartCharacter() ); clone.setEndCharacter( this.getEndCharacter() ); clone.setLocation( this.getLine(), this.getColumn() ); clone.setEndLocation( this.getEndLine(), this.getEndColumn() ); clone.setText( this.getText() ); for ( BaseDescr constraint : this.getDescrs() ) { clone.addConstraint( constraint ); } if ( behaviors != null ) { for ( BehaviorDescr behavior : behaviors ) { clone.addBehavior( behavior ); } } return clone; }