// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.dataset.v0_6.impl; import java.io.File; import java.util.HashMap; import java.util.Map; /** * Implements a dataset store file manager using permanent files stored in a specified directory. * * @author Brett Henderson */ public class PermanentFileDatasetStoreFileManager implements DatasetStoreFileManager { private File directory; private File nodeObjectFile; private File nodeObjectOffsetIndexFile; private File nodeTileIndexFile; private File wayObjectFile; private File wayObjectOffsetIndexFile; private Map<Integer, File> wayTileIndexFileMap; private File nodeWayIndexFile; private File relationObjectFile; private File relationObjectOffsetIndexFile; private File nodeRelationIndexFile; private File wayRelationIndexFile; private File relationRelationIndexFile; /** * Creates a new instance. * * @param directory * The directory to store all datafiles in. */ public PermanentFileDatasetStoreFileManager(File directory) { this.directory = directory; wayTileIndexFileMap = new HashMap<Integer, File>(); } /** * Creates a file object with the specified file name. It will be located in * the data directory. * * @param fileName * The name of the data file. * @return A file object representing the data file. */ private File createDataFile(String fileName) { return new File(directory, fileName); } /** * {@inheritDoc} */ @Override public File getNodeObjectFile() { if (nodeObjectFile == null) { nodeObjectFile = createDataFile("dsno"); } return nodeObjectFile; } /** * {@inheritDoc} */ @Override public File getNodeObjectOffsetIndexFile() { if (nodeObjectOffsetIndexFile == null) { nodeObjectOffsetIndexFile = createDataFile("dsnooi"); } return nodeObjectOffsetIndexFile; } /** * {@inheritDoc} */ @Override public File getNodeTileIndexFile() { if (nodeTileIndexFile == null) { nodeTileIndexFile = createDataFile("dsnti"); } return nodeTileIndexFile; } /** * {@inheritDoc} */ @Override public File getWayObjectFile() { if (wayObjectFile == null) { wayObjectFile = createDataFile("dswo"); } return wayObjectFile; } /** * {@inheritDoc} */ @Override public File getWayObjectOffsetIndexFile() { if (wayObjectOffsetIndexFile == null) { wayObjectOffsetIndexFile = createDataFile("dswooi"); } return wayObjectOffsetIndexFile; } /** * {@inheritDoc} */ @Override public File getWayTileIndexFile(int instance) { if (!wayTileIndexFileMap.containsKey(instance)) { wayTileIndexFileMap.put(instance, createDataFile("dswti" + instance)); } return wayTileIndexFileMap.get(instance); } /** * {@inheritDoc} */ @Override public File getNodeWayIndexFile() { if (nodeWayIndexFile == null) { nodeWayIndexFile = createDataFile("dsnwi"); } return nodeWayIndexFile; } /** * {@inheritDoc} */ @Override public File getRelationObjectFile() { if (relationObjectFile == null) { relationObjectFile = createDataFile("dsro"); } return relationObjectFile; } /** * {@inheritDoc} */ @Override public File getRelationObjectOffsetIndexFile() { if (relationObjectOffsetIndexFile == null) { relationObjectOffsetIndexFile = createDataFile("dsrooi"); } return relationObjectOffsetIndexFile; } /** * {@inheritDoc} */ @Override public File getNodeRelationIndexFile() { if (nodeRelationIndexFile == null) { nodeRelationIndexFile = createDataFile("dsnri"); } return nodeRelationIndexFile; } /** * {@inheritDoc} */ @Override public File getWayRelationIndexFile() { if (wayRelationIndexFile == null) { wayRelationIndexFile = createDataFile("dswri"); } return wayRelationIndexFile; } /** * {@inheritDoc} */ @Override public File getRelationRelationIndexFile() { if (relationRelationIndexFile == null) { relationRelationIndexFile = createDataFile("dsrri"); } return relationRelationIndexFile; } /** * {@inheritDoc} */ @Override public void close() { // Do nothing. } }