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; }