public Object next() { ObjectEntry current = this.nextEntry; if ( current != null ) { setNext(); } else { throw new NoSuchElementException( "No more elements to return" ); } if ( this.type == OBJECT ) { return ((InternalFactHandle) current.getKey()).getObject(); } else { return current.getKey(); } }
public static void writeTruthMaintenanceSystem(MarshallerWriteContext context) throws IOException { ObjectOutputStream stream = context.stream; ObjectHashMap assertMap = context.wm.getTruthMaintenanceSystem().getAssertMap(); EqualityKey[] keys = new EqualityKey[assertMap.size()]; org.drools.core.util.Iterator it = assertMap.iterator(); int i = 0; for ( org.drools.core.util.ObjectHashMap.ObjectEntry entry = (org.drools.core.util.ObjectHashMap.ObjectEntry) it.next(); entry != null; entry = (org.drools.core.util.ObjectHashMap.ObjectEntry) it.next() ) { EqualityKey key = (EqualityKey) entry.getKey(); keys[i++] = key; } Arrays.sort( keys, EqualityKeySorter.instance ); // write the assert map of Equality keys for ( EqualityKey key : keys ) { stream.writeShort( PersisterEnums.EQUALITY_KEY ); stream.writeInt( key.getStatus() ); InternalFactHandle handle = key.getFactHandle(); stream.writeInt( handle.getId() ); //context.out.println( "EqualityKey int:" + key.getStatus() + " int:" + handle.getId() ); if ( key.getOtherFactHandle() != null && !key.getOtherFactHandle().isEmpty() ) { for ( InternalFactHandle handle2 : key.getOtherFactHandle() ) { stream.writeShort( PersisterEnums.FACT_HANDLE ); stream.writeInt( handle2.getId() ); //context.out.println( "OtherHandle int:" + handle2.getId() ); } } stream.writeShort( PersisterEnums.END ); } stream.writeShort( PersisterEnums.END ); }
int i = 0; for (org.drools.core.util.ObjectHashMap.ObjectEntry entry = (org.drools.core.util.ObjectHashMap.ObjectEntry) it.next(); entry != null; entry = (org.drools.core.util.ObjectHashMap.ObjectEntry) it.next()) { EqualityKey key = (EqualityKey) entry.getKey(); keys[i++] = key; for (org.drools.core.util.ObjectHashMap.ObjectEntry entry = (org.drools.core.util.ObjectHashMap.ObjectEntry) it.next(); entry != null; entry = (org.drools.core.util.ObjectHashMap.ObjectEntry) it.next()) { ProtobufMessages.Justification.Builder _justification = ProtobufMessages.Justification.newBuilder(); _justification.setHandleId(((Integer) entry.getKey()).intValue());
final Iterator it = this.hashedSinkMap.newIterator(); for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) { HashKey hashKey = (HashKey) entry.getKey(); if (hashKey.getIndex() == index) { sinks[at++] = (ObjectSink) entry.getValue();
private static ProtobufMessages.NodeMemory writeRIANodeMemory(final int nodeId, final Memory memory) { // for RIA nodes, we need to store the ID of the created handles RIAMemory mem = (RIAMemory) memory; if (!mem.memory.isEmpty()) { ProtobufMessages.NodeMemory.RIANodeMemory.Builder _ria = ProtobufMessages.NodeMemory.RIANodeMemory.newBuilder(); final org.drools.core.util.Iterator it = mem.memory.iterator(); // iterates over all propagated handles and assert them to the new sink for (ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next()) { LeftTuple leftTuple = (LeftTuple) entry.getKey(); InternalFactHandle handle = (InternalFactHandle) entry.getValue(); FactHandle _handle = ProtobufMessages.FactHandle.newBuilder() .setId(handle.getId()) .setRecency(handle.getRecency()) .build(); _ria.addContext(ProtobufMessages.NodeMemory.RIANodeMemory.RIAContext.newBuilder() .setTuple(PersisterHelper.createTuple(leftTuple)) .setResultHandle(_handle) .build()); } return ProtobufMessages.NodeMemory.newBuilder() .setNodeId(nodeId) .setNodeType(ProtobufMessages.NodeMemory.NodeType.RIA) .setRia(_ria.build()) .build(); } return null; }
private void setNext() { ObjectEntry entry = null; while ( entry == null ) { entry = (ObjectEntry) this.iterator.next(); if ( entry == null ) { break; } if ( this.filter != null ) { Object object = ((InternalFactHandle) entry.getKey()).getObject(); if ( this.filter.accept( object ) == false ) { entry = null; } } } this.nextEntry = entry; // this.nextHandle = handle; // this.nextObject = object; }
protected void doRemove(final RuleRemovalContext context, final ReteooBuilder builder, final InternalWorkingMemory[] workingMemories) { if ( !this.isInUse() ) { for ( InternalWorkingMemory workingMemory : workingMemories ) { final RIAMemory memory = (RIAMemory) workingMemory.getNodeMemory( this ); Iterator it = memory.memory.iterator(); for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) { LeftTuple leftTuple = (LeftTuple) entry.getKey(); leftTuple.unlinkFromLeftParent(); leftTuple.unlinkFromRightParent(); } workingMemory.clearNodeMemory( this ); } } if ( !isInUse() ) { tupleSource.removeTupleSink(this); } }
private void traverseHashedAlphaNodes(ObjectHashMap hashedAlphaNodes, NetworkHandler handler) { if (hashedAlphaNodes != null && hashedAlphaNodes.size() > 0) { AlphaNode firstAlpha = getFirstAlphaNode(hashedAlphaNodes); ClassFieldReader hashedFieldReader = getClassFieldReaderForHashedAlpha(firstAlpha); // start the hashed alphas handler.startHashedAlphaNodes(hashedFieldReader); Iterator iter = hashedAlphaNodes.iterator(); for (ObjectHashMap.ObjectEntry entry = (ObjectHashMap.ObjectEntry) iter.next(); entry != null; entry = (ObjectHashMap.ObjectEntry) iter.next()) { CompositeObjectSinkAdapter.HashKey hashKey = (CompositeObjectSinkAdapter.HashKey) entry.getKey(); AlphaNode alphaNode = (AlphaNode) entry.getValue(); handler.startHashedAlphaNode(alphaNode, hashKey.getObjectValue()); // traverse the propagator for each alpha traversePropagator(alphaNode.getSinkPropagator(), handler); handler.endHashedAlphaNode(alphaNode, hashKey.getObjectValue()); } // end of the hashed alphas handler.endHashedAlphaNodes(hashedFieldReader); } }
public int getLogicalCount(TruthMaintenanceSystem tms) { ObjectHashMap map = tms.getEqualityKeyMap(); final Iterator<ObjectEntry> it = map.iterator(); int i = 0; for ( ObjectEntry entry = it.next(); entry != null; entry = it.next() ) { EqualityKey key = (EqualityKey) entry.getKey(); if ( key.getStatus() == EqualityKey.JUSTIFIED ) { i++; } } return i; } }