hollow/src/main/java/com/netflix/hollow/tools/history/HollowHistoricalStateCreator.java
public HollowHistoricalStateDataAccess createHistoricalStateFromDoubleSnapshot(long version, HollowReadStateEngine previous, HollowReadStateEngine current, DiffEqualityMappingOrdinalRemapper ordinalRemapper) {
        HollowWriteStateEngine writeEngine = HollowWriteStateCreator.createWithSchemas(schemasWithoutKeys(previous.getSchemas()));
        IntMapOrdinalRemapper typeRemovedOrdinalLookupMaps = new IntMapOrdinalRemapper();

        for(HollowSchema previousSchema : HollowSchemaSorter.dependencyOrderedSchemaList(previous)) {
            HollowTypeReadState previousTypeState = previous.getTypeState(previousSchema.getName());
            String typeName = previousTypeState.getSchema().getName();
            IntMap ordinalLookupMap;

            if(current.getTypeState(typeName) == null) {
                ordinalLookupMap = copyAllRecords(previousTypeState, ordinalRemapper, writeEngine);
            } else {
                HollowTypeReadState currentTypeState = current.getTypeState(typeName);
                BitSet currentlyPopulatedOrdinals = currentTypeState.getListener(PopulatedOrdinalListener.class).getPopulatedOrdinals();
                ordinalLookupMap = copyUnmatchedRecords(previousTypeState, ordinalRemapper, currentlyPopulatedOrdinals, writeEngine);
            }
            typeRemovedOrdinalLookupMaps.addOrdinalRemapping(typeName, ordinalLookupMap);
        }

        Map<String, HollowHistoricalSchemaChange> schemaChanges = calculateSchemaChanges(previous, current, ordinalRemapper.getDiffEqualityMapping());

        return new HollowHistoricalStateDataAccess(totalHistory, version, roundTripStateEngine(writeEngine), typeRemovedOrdinalLookupMaps, schemaChanges);
    }
public HollowHistoricalStateDataAccess createHistoricalStateFromDoubleSnapshot(long version, HollowReadStateEngine previous, HollowReadStateEngine current, DiffEqualityMappingOrdinalRemapper ordinalRemapper) {
        HollowWriteStateEngine writeEngine = HollowWriteStateCreator.createWithSchemas(schemasWithoutKeys(previous.getSchemas()));
        IntMapOrdinalRemapper typeRemovedOrdinalLookupMaps = new IntMapOrdinalRemapper();

        for(HollowSchema previousSchema : HollowSchemaSorter.dependencyOrderedSchemaList(previous)) {
            HollowTypeReadState previousTypeState = previous.getTypeState(previousSchema.getName());
            String typeName = previousTypeState.getSchema().getName();
            IntMap ordinalLookupMap;

            if(current.getTypeState(typeName) == null) {
                ordinalLookupMap = copyAllRecords(previousTypeState, ordinalRemapper, writeEngine);
            } else {
                HollowTypeReadState currentTypeState = current.getTypeState(typeName);
                BitSet currentlyPopulatedOrdinals = currentTypeState.getListener(PopulatedOrdinalListener.class).getPopulatedOrdinals();
                ordinalLookupMap = copyUnmatchedRecords(previousTypeState, ordinalRemapper, currentlyPopulatedOrdinals, writeEngine);
            }
            typeRemovedOrdinalLookupMaps.addOrdinalRemapping(typeName, ordinalLookupMap);
        }

        Map<String, HollowHistoricalSchemaChange> schemaChanges = calculateSchemaChanges(previous, current, ordinalRemapper.getDiffEqualityMapping());

        return new HollowHistoricalStateDataAccess(totalHistory, version, roundTripStateEngine(writeEngine), typeRemovedOrdinalLookupMaps, schemaChanges);
    }
public HollowHistoricalStateDataAccess createHistoricalStateFromDoubleSnapshot ( long version , HollowReadStateEngine previous , HollowReadStateEngine current , DiffEqualityMappingOrdinalRemapper ordinalRemapper ) { HollowWriteStateEngine writeEngine = HollowWriteStateCreator . createWithSchemas ( schemasWithoutKeys ( previous . getSchemas ( ) ) ) ; IntMapOrdinalRemapper typeRemovedOrdinalLookupMaps = new IntMapOrdinalRemapper ( ) ; for ( HollowSchema previousSchema : HollowSchemaSorter . dependencyOrderedSchemaList ( previous ) ) { HollowTypeReadState previousTypeState = previous . getTypeState ( previousSchema . getName ( ) ) ; String typeName = previousTypeState . getSchema ( ) . getName ( ) ; IntMap ordinalLookupMap ; if ( current . getTypeState ( typeName ) == null ) { ordinalLookupMap = copyAllRecords ( previousTypeState , ordinalRemapper , writeEngine ) ; } else { HollowTypeReadState currentTypeState = current . getTypeState ( typeName ) ; BitSet currentlyPopulatedOrdinals = currentTypeState . getListener ( PopulatedOrdinalListener . class ) . getPopulatedOrdinals ( ) ; ordinalLookupMap = copyUnmatchedRecords ( previousTypeState , ordinalRemapper , currentlyPopulatedOrdinals , writeEngine ) ; } typeRemovedOrdinalLookupMaps . addOrdinalRemapping ( typeName , ordinalLookupMap ) ; } Map < String , HollowHistoricalSchemaChange > schemaChanges = calculateSchemaChanges ( previous , current , ordinalRemapper . getDiffEqualityMapping ( ) ) ; return new HollowHistoricalStateDataAccess ( totalHistory , version , roundTripStateEngine ( writeEngine ) , typeRemovedOrdinalLookupMaps , schemaChanges ) ; }
Create a {@link HollowDataAccess} for a historical state after a double snapshot occurs, without a {@link HollowHistory}.

@param version the version
@param previous the previous state
@param current the current state
@param ordinalRemapper the ordinal remapper
@return the data access for a history
Create a { @link HollowDataAccess } for a historical state after a double snapshot occurs without a { @link HollowHistory } .