// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.core.database;
import org.openstreetmap.osmosis.core.store.GenericObjectReader;
import org.openstreetmap.osmosis.core.store.GenericObjectWriter;
import org.openstreetmap.osmosis.core.store.StoreClassRegister;
import org.openstreetmap.osmosis.core.store.StoreReader;
import org.openstreetmap.osmosis.core.store.StoreWriter;
import org.openstreetmap.osmosis.core.store.Storeable;
/**
* A data class representing a history record for an entity feature.
*
* @author Brett Henderson
* @param <T>
* The type of entity feature that this class stores history for.
*/
public class DbFeatureHistory<T extends Storeable> implements Storeable {
private T feature;
private int version;
/**
* Creates a new instance.
*
* @param feature
* The contained feature.
* @param version
* The version field.
*/
public DbFeatureHistory(T feature, int version) {
this.feature = feature;
this.version = version;
}
/**
* Creates a new instance.
*
* @param sr
* The store to read state from.
* @param scr
* Maintains the mapping between classes and their identifiers
* within the store.
*/
@SuppressWarnings("unchecked")
public DbFeatureHistory(StoreReader sr, StoreClassRegister scr) {
feature = (T) new GenericObjectReader(sr, scr).readObject();
version = sr.readInteger();
}
/**
* {@inheritDoc}
*/
public void store(StoreWriter sw, StoreClassRegister scr) {
new GenericObjectWriter(sw, scr).writeObject(feature);
sw.writeInteger(version);
}
/**
* Gets the contained feature.
*
* @return The feature.
*/
public T getFeature() {
return feature;
}
/**
* Gets the version value.
*
* @return The version value.
*/
public int getVersion() {
return version;
}
}