Class PropagatorCompilerHandler
- java.lang.Object
-
- org.drools.ancompiler.NetworkHandlerAdaptor
-
- org.drools.ancompiler.PropagatorCompilerHandler
-
- All Implemented Interfaces:
NetworkHandler
- Direct Known Subclasses:
AssertHandler,ModifyHandler
public abstract class PropagatorCompilerHandler extends NetworkHandlerAdaptor
-
-
Field Summary
Fields Modifier and Type Field Description protected com.github.javaparser.ast.stmt.BlockStmtallStatementsprotected booleanalphaNetContainsHashedFieldThis states if there is at least 1 set of hashed alpha nodes in the networkprotected Deque<com.github.javaparser.ast.Node>currentStatementprotected List<com.github.javaparser.ast.body.MethodDeclaration>extractedMethodsprotected static StringFACT_HANDLE_PARAM_NAMEprotected StringfactClassNameprotected static StringLOCAL_FACT_VAR_NAMEprotected static StringMODIFY_PREVIOUS_TUPLE_PARAM_NAMEprotected static StringNEWLINEprotected static StringPROP_CONTEXT_PARAM_NAMEprotected static StringRANGE_INDEX_VARIABLE_NAME_PREFIXprotected static StringWORKING_MEMORY_PARAM_NAME
-
Constructor Summary
Constructors Modifier Constructor Description protectedPropagatorCompilerHandler(boolean alphaNetContainsHashedField, String factClassName)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract com.github.javaparser.ast.NodeList<com.github.javaparser.ast.expr.Expression>arguments()protected booleancanInlineValue(Class<?> fieldType)StringemitCode()voidendHashedAlphaNode(org.drools.core.reteoo.AlphaNode hashedAlpha, Object hashedValue)voidendNonHashedAlphaNode(org.drools.core.reteoo.AlphaNode alphaNode)Receive notification of the end of a non-hashedorg.kie.reteoo.AlphaNode.voidendRangeIndex(org.drools.core.util.index.AlphaRangeIndex alphaRangeIndex)voidendRangeIndexedAlphaNode(org.drools.core.reteoo.AlphaNode alphaNode)com.github.javaparser.ast.type.ClassOrInterfaceTypefactHandleType()protected StringgetAlphaNodeVariableName(org.drools.core.reteoo.AlphaNode alphaNode)protected StringgetContextVariableName(org.drools.core.reteoo.AlphaNode alphaNode)com.github.javaparser.ast.stmt.BlockStmtgetCurrentBlockStatement()com.github.javaparser.ast.stmt.SwitchEntrygetLastSwitchEntry()protected intgetMinIdFromRangeIndex(org.drools.core.util.index.AlphaRangeIndex alphaRangeIndex)protected StringgetRangeIndexVariableName(org.drools.core.util.index.AlphaRangeIndex alphaRangeIndex, int minId)protected StringgetVariableName()protected static StringgetVariableName(Class<?> clazz, int nodeId)Returns a variable name based on the simple name of the specified class appended with the specified nodeId.protected static StringgetVariableName(org.drools.core.reteoo.AlphaNode alphaNode)protected static StringgetVariableName(org.drools.core.reteoo.Sink sink)static Class<?>getVariableType(org.drools.core.reteoo.AlphaNode alphaNode)static Class<?>getVariableType(org.drools.core.reteoo.Sink sink)protected com.github.javaparser.ast.stmt.ExpressionStmtlocalVariable(com.github.javaparser.ast.type.Type type, String variableName, com.github.javaparser.ast.expr.MethodCallExpr source)protected com.github.javaparser.ast.stmt.ExpressionStmtlocalVariableWithCastInitializer(com.github.javaparser.ast.type.Type type, String variableName, com.github.javaparser.ast.expr.MethodCallExpr source)protected abstract com.github.javaparser.ast.NodeList<com.github.javaparser.ast.body.Parameter>methodParameters()com.github.javaparser.ast.type.ClassOrInterfaceTypemodifyPreviousTuplesType()protected abstract com.github.javaparser.ast.stmt.StatementpropagateMethod(org.drools.core.reteoo.Sink sink)protected abstract StringpropagateMethodName()com.github.javaparser.ast.type.ClassOrInterfaceTypepropagationContextType()static booleansinkCanBeInlined(org.drools.core.reteoo.Sink sink)voidstartBetaNode(org.drools.core.reteoo.BetaNode betaNode)voidstartHashedAlphaNode(org.drools.core.reteoo.AlphaNode hashedAlpha, Object hashedValue)voidstartHashedAlphaNodes(org.drools.core.rule.IndexableConstraint indexableConstraint)Receive notification of the a group of hashedorg.kie.reteoo.AlphaNodes.voidstartLeftInputAdapterNode(org.drools.core.reteoo.LeftInputAdapterNode leftInputAdapterNode)voidstartNonHashedAlphaNode(org.drools.core.reteoo.AlphaNode alphaNode)Receive notification of the a non-hashedorg.kie.reteoo.AlphaNode.voidstartObjectTypeNode(org.drools.core.reteoo.ObjectTypeNode objectTypeNode)Receive notification of the beginning of anorg.kie.reteoo.ObjectTypeNodevoidstartRangeIndex(org.drools.core.util.index.AlphaRangeIndex alphaRangeIndex)Receive notification of alpha node range indexvoidstartRangeIndexedAlphaNode(org.drools.core.reteoo.AlphaNode alphaNode)voidstartWindowNode(org.drools.core.reteoo.WindowNode windowNode)com.github.javaparser.ast.type.ClassOrInterfaceTypeworkingMemoryType()-
Methods inherited from class org.drools.ancompiler.NetworkHandlerAdaptor
endBetaNode, endHashedAlphaNodes, endObjectTypeNode, endWindowNode, endWindowNode, nullCaseAlphaNodeEnd, nullCaseAlphaNodeStart, replaceNameExpr
-
-
-
-
Field Detail
-
alphaNetContainsHashedField
protected final boolean alphaNetContainsHashedField
This states if there is at least 1 set of hashed alpha nodes in the network
-
factClassName
protected final String factClassName
-
FACT_HANDLE_PARAM_NAME
protected static final String FACT_HANDLE_PARAM_NAME
- See Also:
- Constant Field Values
-
PROP_CONTEXT_PARAM_NAME
protected static final String PROP_CONTEXT_PARAM_NAME
- See Also:
- Constant Field Values
-
WORKING_MEMORY_PARAM_NAME
protected static final String WORKING_MEMORY_PARAM_NAME
- See Also:
- Constant Field Values
-
MODIFY_PREVIOUS_TUPLE_PARAM_NAME
protected static final String MODIFY_PREVIOUS_TUPLE_PARAM_NAME
- See Also:
- Constant Field Values
-
LOCAL_FACT_VAR_NAME
protected static final String LOCAL_FACT_VAR_NAME
- See Also:
- Constant Field Values
-
allStatements
protected com.github.javaparser.ast.stmt.BlockStmt allStatements
-
currentStatement
protected Deque<com.github.javaparser.ast.Node> currentStatement
-
extractedMethods
protected List<com.github.javaparser.ast.body.MethodDeclaration> extractedMethods
-
NEWLINE
protected static final String NEWLINE
- See Also:
- Constant Field Values
-
RANGE_INDEX_VARIABLE_NAME_PREFIX
protected static final String RANGE_INDEX_VARIABLE_NAME_PREFIX
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PropagatorCompilerHandler
protected PropagatorCompilerHandler(boolean alphaNetContainsHashedField, String factClassName)
-
-
Method Detail
-
propagateMethod
protected abstract com.github.javaparser.ast.stmt.Statement propagateMethod(org.drools.core.reteoo.Sink sink)
-
methodParameters
protected abstract com.github.javaparser.ast.NodeList<com.github.javaparser.ast.body.Parameter> methodParameters()
-
arguments
protected abstract com.github.javaparser.ast.NodeList<com.github.javaparser.ast.expr.Expression> arguments()
-
startObjectTypeNode
public void startObjectTypeNode(org.drools.core.reteoo.ObjectTypeNode objectTypeNode)
Description copied from interface:NetworkHandlerReceive notification of the beginning of anorg.kie.reteoo.ObjectTypeNodeThe Network parser will invoke this method only once, before any other event callback.
- Specified by:
startObjectTypeNodein interfaceNetworkHandler- Overrides:
startObjectTypeNodein classNetworkHandlerAdaptor- Parameters:
objectTypeNode- the object type node- See Also:
NetworkHandler.endObjectTypeNode(org.kie.reteoo.ObjectTypeNode)
-
startBetaNode
public void startBetaNode(org.drools.core.reteoo.BetaNode betaNode)
- Specified by:
startBetaNodein interfaceNetworkHandler- Overrides:
startBetaNodein classNetworkHandlerAdaptor
-
startWindowNode
public void startWindowNode(org.drools.core.reteoo.WindowNode windowNode)
- Specified by:
startWindowNodein interfaceNetworkHandler- Overrides:
startWindowNodein classNetworkHandlerAdaptor
-
startLeftInputAdapterNode
public void startLeftInputAdapterNode(org.drools.core.reteoo.LeftInputAdapterNode leftInputAdapterNode)
- Specified by:
startLeftInputAdapterNodein interfaceNetworkHandler- Overrides:
startLeftInputAdapterNodein classNetworkHandlerAdaptor
-
startNonHashedAlphaNode
public void startNonHashedAlphaNode(org.drools.core.reteoo.AlphaNode alphaNode)
Description copied from interface:NetworkHandlerReceive notification of the a non-hashedorg.kie.reteoo.AlphaNode.The Parser will invoke this method at the beginning of every non-hashed Alpha in the Network; there will be a corresponding endNonHashedAlphaNode() event for every startNonHashedAlphaNode() event. All of the node's decendants will be reported, in order, before the corresponding endNonHashedAlphaNode() event.
- Specified by:
startNonHashedAlphaNodein interfaceNetworkHandler- Overrides:
startNonHashedAlphaNodein classNetworkHandlerAdaptor- Parameters:
alphaNode- non-hashed AlphaNode- See Also:
NetworkHandler.endNonHashedAlphaNode(org.drools.core.reteoo.AlphaNode)
-
endNonHashedAlphaNode
public void endNonHashedAlphaNode(org.drools.core.reteoo.AlphaNode alphaNode)
Description copied from interface:NetworkHandlerReceive notification of the end of a non-hashedorg.kie.reteoo.AlphaNode.The parser will invoke this method at the end of every alpha in the network; there will be a corresponding
NetworkHandler.startNonHashedAlphaNode(org.kie.reteoo.AlphaNode)event for every endNonHashedAlphaNode event.- Specified by:
endNonHashedAlphaNodein interfaceNetworkHandler- Overrides:
endNonHashedAlphaNodein classNetworkHandlerAdaptor- Parameters:
alphaNode- non-hashed AlphaNode
-
startHashedAlphaNodes
public void startHashedAlphaNodes(org.drools.core.rule.IndexableConstraint indexableConstraint)
Description copied from interface:NetworkHandlerReceive notification of the a group of hashedorg.kie.reteoo.AlphaNodes.The Parser will invoke this method at the beginning of every groups of hashed Alphas in the Network; there will be a corresponding
NetworkHandler.endHashedAlphaNodes(org.drools.core.rule.IndexableConstraint)event for every startHashedAlphaNodes() event. The actual alpha nodes will be reported via theNetworkHandler.startHashedAlphaNode(org.drools.core.reteoo.AlphaNode, java.lang.Object)method, along with all of the node's decendants, in order, before the correspondingNetworkHandler.endHashedAlphaNode(org.drools.core.reteoo.AlphaNode, java.lang.Object)event.- Specified by:
startHashedAlphaNodesin interfaceNetworkHandler- Overrides:
startHashedAlphaNodesin classNetworkHandlerAdaptor- Parameters:
indexableConstraint- field reader that is used to access the hashed attribute- See Also:
NetworkHandler.endHashedAlphaNodes(org.drools.core.rule.IndexableConstraint),NetworkHandler.startHashedAlphaNode(org.drools.core.reteoo.AlphaNode, java.lang.Object)
-
canInlineValue
protected boolean canInlineValue(Class<?> fieldType)
-
startHashedAlphaNode
public void startHashedAlphaNode(org.drools.core.reteoo.AlphaNode hashedAlpha, Object hashedValue)- Specified by:
startHashedAlphaNodein interfaceNetworkHandler- Overrides:
startHashedAlphaNodein classNetworkHandlerAdaptor
-
endHashedAlphaNode
public void endHashedAlphaNode(org.drools.core.reteoo.AlphaNode hashedAlpha, Object hashedValue)- Specified by:
endHashedAlphaNodein interfaceNetworkHandler- Overrides:
endHashedAlphaNodein classNetworkHandlerAdaptor
-
startRangeIndex
public void startRangeIndex(org.drools.core.util.index.AlphaRangeIndex alphaRangeIndex)
Description copied from interface:NetworkHandlerReceive notification of alpha node range index- Specified by:
startRangeIndexin interfaceNetworkHandler- Overrides:
startRangeIndexin classNetworkHandlerAdaptor
-
startRangeIndexedAlphaNode
public void startRangeIndexedAlphaNode(org.drools.core.reteoo.AlphaNode alphaNode)
- Specified by:
startRangeIndexedAlphaNodein interfaceNetworkHandler- Overrides:
startRangeIndexedAlphaNodein classNetworkHandlerAdaptor
-
endRangeIndexedAlphaNode
public void endRangeIndexedAlphaNode(org.drools.core.reteoo.AlphaNode alphaNode)
- Specified by:
endRangeIndexedAlphaNodein interfaceNetworkHandler- Overrides:
endRangeIndexedAlphaNodein classNetworkHandlerAdaptor
-
getLastSwitchEntry
public com.github.javaparser.ast.stmt.SwitchEntry getLastSwitchEntry()
-
endRangeIndex
public void endRangeIndex(org.drools.core.util.index.AlphaRangeIndex alphaRangeIndex)
- Specified by:
endRangeIndexin interfaceNetworkHandler- Overrides:
endRangeIndexin classNetworkHandlerAdaptor
-
getCurrentBlockStatement
public com.github.javaparser.ast.stmt.BlockStmt getCurrentBlockStatement()
-
propagateMethodName
protected abstract String propagateMethodName()
-
emitCode
public String emitCode()
-
modifyPreviousTuplesType
public com.github.javaparser.ast.type.ClassOrInterfaceType modifyPreviousTuplesType()
-
factHandleType
public com.github.javaparser.ast.type.ClassOrInterfaceType factHandleType()
-
propagationContextType
public com.github.javaparser.ast.type.ClassOrInterfaceType propagationContextType()
-
workingMemoryType
public com.github.javaparser.ast.type.ClassOrInterfaceType workingMemoryType()
-
localVariableWithCastInitializer
protected com.github.javaparser.ast.stmt.ExpressionStmt localVariableWithCastInitializer(com.github.javaparser.ast.type.Type type, String variableName, com.github.javaparser.ast.expr.MethodCallExpr source)
-
localVariable
protected com.github.javaparser.ast.stmt.ExpressionStmt localVariable(com.github.javaparser.ast.type.Type type, String variableName, com.github.javaparser.ast.expr.MethodCallExpr source)
-
getVariableType
public static Class<?> getVariableType(org.drools.core.reteoo.AlphaNode alphaNode)
-
getVariableType
public static Class<?> getVariableType(org.drools.core.reteoo.Sink sink)
-
sinkCanBeInlined
public static boolean sinkCanBeInlined(org.drools.core.reteoo.Sink sink)
-
getVariableName
protected static String getVariableName(org.drools.core.reteoo.AlphaNode alphaNode)
-
getContextVariableName
protected String getContextVariableName(org.drools.core.reteoo.AlphaNode alphaNode)
-
getVariableName
protected static String getVariableName(org.drools.core.reteoo.Sink sink)
-
getVariableName
protected String getVariableName()
-
getVariableName
protected static String getVariableName(Class<?> clazz, int nodeId)
Returns a variable name based on the simple name of the specified class appended with the specified nodeId.- Parameters:
clazz- class whose simple name is lowercased and user as the prefix of the variable namenodeId- id oforg.kie.common.NetworkNode- Returns:
- variable name
- See Also:
Class.getSimpleName()
-
getAlphaNodeVariableName
protected String getAlphaNodeVariableName(org.drools.core.reteoo.AlphaNode alphaNode)
-
getRangeIndexVariableName
protected String getRangeIndexVariableName(org.drools.core.util.index.AlphaRangeIndex alphaRangeIndex, int minId)
-
getMinIdFromRangeIndex
protected int getMinIdFromRangeIndex(org.drools.core.util.index.AlphaRangeIndex alphaRangeIndex)
-
-