/** * Set the terminal node for a rule. * @param rule The rule. * @param node The node. */ public void putTerminalNode(TerminalNode node) { terminalnodes.put(node.getRule(), node); }
/** * Propagate an indirect object change to this node. * @param object The changed object. */ public void modifyIndirectObject(Object object, OAVAttributeType type, Object oldvalue, Object newvalue, IOAVState state, ReteMemory mem, AbstractAgenda agenda) { // Recheck all tuples Collection input = getTupleSource().getNodeMemory(mem); if(input!=null) { for(Iterator it=input.iterator(); it.hasNext(); ) { modifyTuple((Tuple)it.next(), -1, null, null, null, state, mem, agenda); } } }
/** * Get the memory for this node. * @return The memory. */ public Collection getNodeMemory(ReteMemory mem) { // Hack??? // try { return getTupleSource().getNodeMemory(mem); } // catch(Exception e) // { // Object o = getTupleSource().getNodeMemory(mem); // return null; // } }
/** * Add a new terminal node. * @param rule The rule. * @param context The build context. */ protected void addTerminalNode(IRule rule, BuildContext context) { // Create and connect the terminal node Map varinfos = context.getVarInfos(); Map extractors = new HashMap(); for(Iterator it=varinfos.keySet().iterator(); it.hasNext(); ) { Variable var = (Variable)it.next(); if(!var.isTemporary()) extractors.put(var.getName(), getLeftVariableExtractor(context, var)); } TerminalNode tnode = new TerminalNode(context.getRootNode().getNextNodeId(), rule, extractors); connectLeft(context.getLastBetaNode(), tnode, context); // Save the terminal node for later removal context.getRootNode().putTerminalNode(tnode); }
clone.putTerminalNode((TerminalNode)((TerminalNode)node).clone());
/** * Get the memory for this node. * @return The memory. */ public Collection getNodeMemory(ReteMemory mem) { // Hack??? // try { return getTupleSource().getNodeMemory(mem); } // catch(Exception e) // { // Object o = getTupleSource().getNodeMemory(mem); // return null; // } }
/** * Add a new terminal node. * @param rule The rule. * @param context The build context. */ protected void addTerminalNode(IRule rule, BuildContext context) { // Create and connect the terminal node Map varinfos = context.getVarInfos(); Map extractors = new HashMap(); for(Iterator it=varinfos.keySet().iterator(); it.hasNext(); ) { Variable var = (Variable)it.next(); if(!var.isTemporary()) extractors.put(var.getName(), getLeftVariableExtractor(context, var)); } TerminalNode tnode = new TerminalNode(context.getRootNode().getNextNodeId(), rule, extractors); connectLeft(context.getLastBetaNode(), tnode, context); // Save the terminal node for later removal context.getRootNode().putTerminalNode(tnode); }
clone.putTerminalNode((TerminalNode)((TerminalNode)node).clone());
/** * Propagate an indirect object change to this node. * @param object The changed object. */ public void modifyIndirectObject(Object object, OAVAttributeType type, Object oldvalue, Object newvalue, IOAVState state, ReteMemory mem, AbstractAgenda agenda) { // Recheck all tuples Collection input = getTupleSource().getNodeMemory(mem); if(input!=null) { for(Iterator it=input.iterator(); it.hasNext(); ) { modifyTuple((Tuple)it.next(), -1, null, null, null, state, mem, agenda); } } }
/** * Set the terminal node for a rule. * @param rule The rule. * @param node The node. */ public void putTerminalNode(TerminalNode node) { terminalnodes.put(node.getRule(), node); }