public AccumulateDescrBuilderImpl(P parent) { super( parent, new AccumulateDescr() ); }
public AccumulateDescrBuilder<P> function( String name, String bind, String... parameters ) { descr.addFunction( name, bind, parameters ); return this; }
public void visitAccumulateDescr(final AccumulateDescr descr) { String tmpstr = new String(); tmpstr += this.template + " <from> <accumulate> "; if ( descr.isSinglePattern() ) { visitPatternDescr( descr.getInputPattern() ); } else { this.patternContext = false; visit( descr.getInput() ); } tmpstr += this.template; if ( descr.isExternalFunction() ) { AccumulateFunctionCallDescr func = descr.getFunctions().get( 0 ); tmpstr += "<external-function evaluator=\"" + func.getFunction() + "\" expression=\"" + func.getParams()[0] + "\"/>"; } else tmpstr += "<init>" + descr.getInitCode() + "</init><action>" + descr.getActionCode() + "</action><result>" + descr.getResultCode() + "</result>"; this.template = tmpstr + " </accumulate> </from> "; }
accumDescr.setClassName( className ); accumDescr.getInitCode(), available ); final AnalysisResult actionCodeAnalysis = context.getDialect().analyzeBlock( context, accumDescr, accumDescr.getActionCode(), available ); accumDescr.getResultCode(), available ); if ( accumDescr.getReverseCode() != null ) { final AnalysisResult reverseCodeAnalysis = context.getDialect().analyzeBlock( context, accumDescr, accumDescr.getActionCode(), available ); requiredDeclarations.addAll( reverseCodeAnalysis.getBoundIdentifiers().getDeclrClasses().keySet() ); accumDescr.getClassName() ); map.put( "innerDeclarations", sourceDeclArr ); accumDescr.getInitCode() ); final String actionCode = accumDescr.getActionCode(); final String resultCode = accumDescr.getResultCode(); map.put( "resultCode", resultCode );
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(); final Object parent = parser.getParent(); final AccumulateDescr accumulate = (AccumulateDescr) parent; if ( localName.equals( "init" ) ) { emptyContentCheck( localName, expression, parser ); accumulate.setInitCode( expression.trim() ); } else if ( localName.equals( "action" ) ) { emptyContentCheck( localName, expression, parser ); accumulate.setActionCode( expression.trim() ); } else if ( localName.equals( "result" ) ) { emptyContentCheck( localName, expression, parser ); accumulate.setResultCode( expression.trim() ); } else if ( localName.equals( "reverse" ) ) { emptyContentCheck( localName, expression, parser ); accumulate.setReverseCode( expression.trim() ); } else if ( localName.equals( "external-function" ) ) { accumulate.addFunction( element.getAttribute( "evaluator" ), null, // no support to bindings yet? new String[] { element.getAttribute( "expression" ) }); } return null; }
final MVELAnalysisResult initCodeAnalysis = (MVELAnalysisResult) dialect.analyzeBlock( context, accumDescr, accumDescr.getInitCode(), boundIds ); accumDescr, null, accumDescr.getActionCode(), boundIds, initCodeAnalysis.getMvelVariables(), accumDescr.getResultCode(), boundIds, initCodeAnalysis.getMvelVariables() ); MVELCompilationUnit initUnit = dialect.getMVELCompilationUnit( (String) accumDescr.getInitCode(), initCodeAnalysis, getUsedDeclarations( decls, MVELCompilationUnit actionUnit = dialect.getMVELCompilationUnit( (String) accumDescr.getActionCode(), actionCodeAnalysis, getUsedDeclarations( decls, if ( accumDescr.getReverseCode() != null ) { context.setTypesafe( actionCodeAnalysis.isTypesafe() ); reverseUnit = dialect.getMVELCompilationUnit( (String) accumDescr.getReverseCode(), actionCodeAnalysis, getUsedDeclarations( decls,
final AccumulateDescr accumDescr = (AccumulateDescr) descr; if ( !accumDescr.hasValidInput() ) { return null; final RuleConditionBuilder builder = (RuleConditionBuilder) context.getDialect().getBuilder( accumDescr.getInput().getClass() ); accumDescr.getInput() ); if ( accumDescr.isExternalFunction() ) { null, accumulators, accumDescr.isMultiFunction() );
if ( !accumDescr.hasValidInput() ) { return null; BaseDescr input = accumDescr.getInput(); if( input instanceof AndDescr && ((AndDescr) input).getDescrs().size() == 1 ) { input = ((AndDescr) input).getDescrs().get( 0 ); if ( accumDescr.isExternalFunction() ) {
/** * This method checks for the conditions when local declarations should be read from a tuple instead * of the right object when resolving declarations in an accumulate * * @param accumDescr * @param source * @return */ public static boolean isReadLocalsFromTuple(final AccumulateDescr accumDescr, final RuleConditionElement source) { final boolean readLocalsFromTuple = accumDescr.isMultiPattern() || ( accumDescr.getInputPattern().getSource() != null && !( accumDescr.getInputPattern().getSource() instanceof WindowReferenceDescr ) && !( accumDescr.getInputPattern().getSource() instanceof EntryPointDescr ) ) || source instanceof QueryElement || ( source.getNestedElements().size() == 1 && source.getNestedElements().get( 0 ) instanceof QueryElement ); return readLocalsFromTuple; } }
final boolean readLocalsFromTuple) { final List<AccumulateFunctionCallDescr> funcCalls = accumDescr.getFunctions(); requiredDecl.toArray(new Declaration[requiredDecl.size()]), accumulators, accumDescr.isMultiFunction());
boolean readLocalsFromTuple ) { Accumulator[] accumulators; List<AccumulateFunctionCallDescr> functions = accumDescr.getFunctions();
public void addFunction( String function, String bind, String[] params ) { addFunction( new AccumulateFunctionCallDescr( function, bind, params ) ); }
public Object start(final String uri, final String localName, final Attributes attrs, final ExtensibleXmlParser parser) throws SAXException { parser.startElementBuilder( localName, attrs ); final AccumulateDescr accumulateDesrc = new AccumulateDescr(); return accumulateDesrc; }