// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.dataset.v0_6.impl;
import org.openstreetmap.osmosis.core.domain.v0_6.Node;
import org.openstreetmap.osmosis.core.lifecycle.Closeable;
import org.openstreetmap.osmosis.core.lifecycle.ReleasableContainer;
import org.openstreetmap.osmosis.core.store.IndexStoreReader;
import org.openstreetmap.osmosis.core.store.IntegerLongIndexElement;
import org.openstreetmap.osmosis.core.store.LongLongIndexElement;
import org.openstreetmap.osmosis.core.store.RandomAccessObjectStoreReader;
/**
* Holds references to all of the node storage related classes.
*
* @author Brett Henderson
*/
public class NodeStorageContainer implements Closeable {
private ReleasableContainer releasableContainer;
private RandomAccessObjectStoreReader<Node> nodeObjectReader;
private IndexStoreReader<Long, LongLongIndexElement> nodeObjectOffsetIndexReader;
private IndexStoreReader<Integer, IntegerLongIndexElement> nodeTileIndexReader;
private IndexStoreReader<Long, LongLongIndexElement> nodeWayIndexReader;
private IndexStoreReader<Long, LongLongIndexElement> nodeRelationIndexReader;
/**
* Creates a new instance.
*
* @param nodeObjectReader
* The raw node objects.
* @param nodeObjectOffsetIndexReader
* The node object offsets.
* @param nodeTileIndexReader
* The tile to node index.
* @param nodeWayIndexReader
* The node to way index.
* @param nodeRelationIndexReader
* The node to relation index.
*/
public NodeStorageContainer(
RandomAccessObjectStoreReader<Node> nodeObjectReader,
IndexStoreReader<Long, LongLongIndexElement> nodeObjectOffsetIndexReader,
IndexStoreReader<Integer, IntegerLongIndexElement> nodeTileIndexReader,
IndexStoreReader<Long, LongLongIndexElement> nodeWayIndexReader,
IndexStoreReader<Long, LongLongIndexElement> nodeRelationIndexReader) {
releasableContainer = new ReleasableContainer();
this.nodeObjectReader = releasableContainer.add(nodeObjectReader);
this.nodeObjectOffsetIndexReader = releasableContainer.add(nodeObjectOffsetIndexReader);
this.nodeTileIndexReader = releasableContainer.add(nodeTileIndexReader);
this.nodeWayIndexReader = releasableContainer.add(nodeWayIndexReader);
this.nodeRelationIndexReader = releasableContainer.add(nodeRelationIndexReader);
}
/**
* Gets the raw node reader.
*
* @return The raw node reader.
*/
public RandomAccessObjectStoreReader<Node> getNodeObjectReader() {
return nodeObjectReader;
}
/**
* Gets the node object offset reader.
*
* @return The node object offset reader.
*/
public IndexStoreReader<Long, LongLongIndexElement> getNodeObjectOffsetIndexReader() {
return nodeObjectOffsetIndexReader;
}
/**
* Gets the tile to node index reader.
*
* @return The tile to node index reader.
*/
public IndexStoreReader<Integer, IntegerLongIndexElement> getNodeTileIndexReader() {
return nodeTileIndexReader;
}
/**
* Gets the node to way index reader.
*
* @return The node to way index reader.
*/
public IndexStoreReader<Long, LongLongIndexElement> getNodeWayIndexReader() {
return nodeWayIndexReader;
}
/**
* Gets the node to relation index reader.
*
* @return The node to relation index reader.
*/
public IndexStoreReader<Long, LongLongIndexElement> getNodeRelationIndexReader() {
return nodeRelationIndexReader;
}
/**
* {@inheritDoc}
*/
@Override
public void close() {
releasableContainer.close();
}
}