public boolean isSinglePattern() { return this.input instanceof PatternDescr || (this.input instanceof AndDescr && ((AndDescr) this.input).getDescrs().size() == 1); }
public void visitAndDescr(final AndDescr descr) { this.template = new String(); if ( descr.getDescrs() != Collections.EMPTY_LIST ) { if ( !this.patternContext ) this.template = "<and-conditional-element>" + processDescrList( descr.getDescrs() ) + "</and-conditional-element>"; else this.template = "<and-constraint-connective>" + processDescrList( descr.getDescrs() ) + "</and-constraint-connective>"; } }
public PatternDescr getInputPattern() { if ( isSinglePattern() ) { if( this.input instanceof PatternDescr ) { return (PatternDescr) this.input; } else { return (PatternDescr) ((AndDescr)this.input).getDescrs().get( 0 ); } } return null; }
public void visitQueryDescr(final QueryDescr descr) { this.template = new String(); this.template = "<query name=\"" + descr.getName() + "\">" + "<lhs>" + processDescrList( descr.getLhs().getDescrs() ) + "</lhs>" + "</query>"; }
private String processRules(final List rules) { String ruleList = ""; for ( final Iterator iterator = rules.iterator(); iterator.hasNext(); ) { final RuleDescr ruleDescr = (RuleDescr) iterator.next(); String rule = "<rule name=\"" + ruleDescr.getName() + "\">" + XmlDumper.eol; final String attribute = processAttribute( ruleDescr.getAttributes().values() ); String lhs = ""; if ( ruleDescr.getLhs().getDescrs() != Collections.EMPTY_LIST ) { lhs = "<lhs>" + processDescrList( ruleDescr.getLhs().getDescrs() ) + "</lhs>"; } else { lhs = "<lhs> </lhs>"; } final String rhs = "<rhs>" + replaceIllegalChars( (String) ruleDescr.getConsequence() ) + "</rhs>" + XmlDumper.eol; rule += attribute; rule += lhs; rule += rhs; rule += "</rule>"; ruleList += rule; } return ruleList + XmlDumper.eol; }
public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException { final Element element = parser.endElementBuilder(); final QueryDescr queryDescr = (QueryDescr) parser.getCurrent(); final AndDescr lhs = queryDescr.getLhs(); if ( lhs == null || lhs.getDescrs().isEmpty() ) { throw new SAXParseException( "<query> requires a LHS", parser.getLocator() ); } (( PackageDescr ) parser.getData()).addRule( queryDescr ); return queryDescr; }
public void addOrMerge(final BaseDescr baseDescr) { if ( baseDescr instanceof AndDescr ) { AndDescr and = (AndDescr) baseDescr; for( BaseDescr descr : and.getDescrs() ) { addDescr( descr ); for ( String annKey : and.getAnnotationNames() ) { addAnnotation( and.getAnnotation( annKey ) ); } } } else { addDescr( baseDescr ); } }
public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException { final Element element = parser.endElementBuilder(); final AndDescr andDescr = (AndDescr) parser.getCurrent(); final Object parent = parser.getParent(); if ( !andDescr.getDescrs().isEmpty() ) { if ( parent instanceof RuleDescr || parent instanceof QueryDescr ) { final RuleDescr ruleDescr = (RuleDescr) parent; ruleDescr.setLhs( andDescr ); } else if ( parent instanceof MultiPatternDestinationDescr ) { final MultiPatternDestinationDescr mpDescr = (MultiPatternDestinationDescr) parent; mpDescr.setInput( andDescr ); } else if ( parent instanceof ConditionalElementDescr ) { final ConditionalElementDescr ceDescr = (ConditionalElementDescr) parent; ceDescr.addDescr( andDescr ); } } return andDescr; }