public HollowMapDeltaHistoricalStateCreator(HollowMapTypeReadState typeState) { this.typeState = typeState; this.stateEngineDataElements = typeState.currentDataElements(); this.historicalDataElements = new HollowMapTypeDataElements(WastefulRecycler.DEFAULT_INSTANCE); this.iter = new RemovedOrdinalIterator(typeState.getListener(PopulatedOrdinalListener.class)); this.shardNumberMask = stateEngineDataElements.length - 1; this.shardOrdinalShift = 31 - Integer.numberOfLeadingZeros(stateEngineDataElements.length); }
public HollowListDeltaHistoricalStateCreator(HollowListTypeReadState typeState) { this.typeState = typeState; this.stateEngineDataElements = typeState.currentDataElements(); this.historicalDataElements = new HollowListTypeDataElements(WastefulRecycler.DEFAULT_INSTANCE); this.iter = new RemovedOrdinalIterator(typeState.getListener(PopulatedOrdinalListener.class)); this.shardNumberMask = stateEngineDataElements.length - 1; this.shardOrdinalShift = 31 - Integer.numberOfLeadingZeros(stateEngineDataElements.length); }
public HollowSetDeltaHistoricalStateCreator(HollowSetTypeReadState typeState) { this.typeState = typeState; this.stateEngineDataElements = typeState.currentDataElements(); this.historicalDataElements = new HollowSetTypeDataElements(WastefulRecycler.DEFAULT_INSTANCE); this.iter = new RemovedOrdinalIterator(typeState.getListener(PopulatedOrdinalListener.class)); this.shardNumberMask = stateEngineDataElements.length - 1; this.shardOrdinalShift = 31 - Integer.numberOfLeadingZeros(stateEngineDataElements.length); }
public HollowObjectDeltaHistoricalStateCreator(HollowObjectTypeReadState typeState) { this.typeState = typeState; this.stateEngineDataElements = typeState.currentDataElements(); this.historicalDataElements = new HollowObjectTypeDataElements(typeState.getSchema(), WastefulRecycler.DEFAULT_INSTANCE); this.iter = new RemovedOrdinalIterator(typeState.getListener(PopulatedOrdinalListener.class)); this.currentWriteVarLengthDataPointers = new long[typeState.getSchema().numFields()]; this.shardNumberMask = stateEngineDataElements.length - 1; this.shardOrdinalShift = 31 - Integer.numberOfLeadingZeros(stateEngineDataElements.length); }
private void populateNewCurrentRecordKeys(HollowObjectTypeReadState typeState) { HollowObjectWriteRecord rec = new HollowObjectWriteRecord(keySchema); PopulatedOrdinalListener listener = typeState.getListener(PopulatedOrdinalListener.class); BitSet populatedOrdinals = listener.getPopulatedOrdinals(); BitSet previousOrdinals = listener.getPreviousOrdinals(); RemovedOrdinalIterator iter = new RemovedOrdinalIterator(populatedOrdinals, previousOrdinals); int ordinal = iter.next(); while(ordinal != -1) { writeKeyObject(typeState, ordinal, rec); ordinal = iter.next(); } }
private HollowHistoricalStateKeyOrdinalMapping createKeyOrdinalMappingFromDelta() { HollowHistoricalStateKeyOrdinalMapping keyOrdinalMapping = new HollowHistoricalStateKeyOrdinalMapping(keyIndex); for(String keyType : keyIndex.getTypeKeyIndexes().keySet()) { HollowHistoricalStateTypeKeyOrdinalMapping typeMapping = keyOrdinalMapping.getTypeMapping(keyType); HollowObjectTypeReadState typeState = (HollowObjectTypeReadState) latestHollowReadStateEngine.getTypeState(keyType); if (typeState==null) { // The type is present in the history's primary key index but is not present // in the latest read state; ensure the mapping is initialized to the default state typeMapping.prepare(0, 0); typeMapping.finish(); continue; } PopulatedOrdinalListener listener = typeState.getListener(PopulatedOrdinalListener.class); RemovedOrdinalIterator removalIterator = new RemovedOrdinalIterator(listener); RemovedOrdinalIterator additionsIterator = new RemovedOrdinalIterator(listener.getPopulatedOrdinals(), listener.getPreviousOrdinals()); typeMapping.prepare(additionsIterator.countTotal(), removalIterator.countTotal()); int removedOrdinal = removalIterator.next(); while(removedOrdinal != -1) { typeMapping.removed(typeState, removedOrdinal); removedOrdinal = removalIterator.next(); } int addedOrdinal = additionsIterator.next(); while(addedOrdinal != -1) { typeMapping.added(typeState, addedOrdinal); addedOrdinal = additionsIterator.next(); } typeMapping.finish(); } return keyOrdinalMapping; }
@Test public void iteratesOverRemovedOrdinals() { BitSet previousOrdinals = bitSet(1, 2, 3, 4, 6, 7, 9, 10); BitSet currentOrdinals = bitSet(1, 3, 4, 5, 7, 8, 9); RemovedOrdinalIterator iter = new RemovedOrdinalIterator(previousOrdinals, currentOrdinals); Assert.assertEquals(2, iter.next()); Assert.assertEquals(6, iter.next()); Assert.assertEquals(10, iter.next()); Assert.assertEquals(-1, iter.next()); }