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 RuleDescr ruleDescr = (RuleDescr) parser.getCurrent(); final AndDescr lhs = ruleDescr.getLhs(); if ( lhs == null ) { throw new SAXParseException( "<rule> requires a LHS", parser.getLocator() ); } NodeList list = element.getElementsByTagName( "rhs" ); if ( list.getLength() == 0 ) { throw new SAXParseException( "<rule> requires a <rh> child element", parser.getLocator() ); } ruleDescr.setConsequence( ((org.w3c.dom.Text)list.item( 0 ).getChildNodes().item( 0 )).getWholeText() ); NodeList attributes = element.getElementsByTagName( "rule-attribute" ); for ( int i = 0, length = attributes.getLength(); i < length; i++ ) { final String name = ((Element) attributes.item( i )).getAttribute( "name" ); emptyAttributeCheck( "rule-attribute", "name", name, parser ); final String value = ((Element) attributes.item( i )).getAttribute( "value" ); ruleDescr.addAttribute( new AttributeDescr( name, value ) ); } ((PackageDescr) parser.getData()).addRule( ruleDescr ); return ruleDescr; }
public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException { final Element element = parser.endElementBuilder(); final OrDescr orDescr = (OrDescr) parser.getCurrent(); final Object parent = parser.getParent(); if ( !orDescr.getDescrs().isEmpty() ) { if ( parent instanceof RuleDescr || parent instanceof QueryDescr ) { final RuleDescr ruleDescr = (RuleDescr) parent; ruleDescr.getLhs().addDescr( orDescr ); } else if ( parent instanceof MultiPatternDestinationDescr ) { final MultiPatternDestinationDescr mpDescr = (MultiPatternDestinationDescr) parent; mpDescr.setInput( orDescr ); } else if ( parent instanceof ConditionalElementDescr ) { final ConditionalElementDescr ceDescr = (ConditionalElementDescr) parent; ceDescr.addDescr( orDescr ); } } return orDescr; }
final RuleConditionBuilder builder = (RuleConditionBuilder) context.getDialect().getBuilder( ruleDescr.getLhs().getClass() ); if ( builder != null ) { Pattern prefixPattern = null; ruleDescr.getLhs(), prefixPattern ); throw new RuntimeDroolsException( "BUG: builder not found for descriptor class " + ruleDescr.getLhs().getClass() );