// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.core.container.v0_6; import org.openstreetmap.osmosis.core.domain.v0_6.Node; import org.openstreetmap.osmosis.core.domain.v0_6.Relation; import org.openstreetmap.osmosis.core.domain.v0_6.Way; import org.openstreetmap.osmosis.core.lifecycle.Completable; import org.openstreetmap.osmosis.core.lifecycle.ReleasableIterator; /** * Provides access to data within a Dataset. Every thread must access a Dataset through its own * reader. A reader must be released after use. It must be completed in order to ensure changes are * committed. * * @author Brett Henderson */ public interface DatasetContext extends Completable { /** * Returns the manager for manipulating node instances. * * @return The node manager. */ EntityManager<Node> getNodeManager(); /** * Returns the manager for manipulating way instances. * * @return The way manager. */ EntityManager<Way> getWayManager(); /** * Returns the manager for manipulating relation instances. * * @return The relation manager. */ EntityManager<Relation> getRelationManager(); /** * Retrieves a specific node by its identifier. * * @param id * The id of the node. * @return The node. * @deprecated The node manager should be used instead. */ @Deprecated Node getNode(long id); /** * Retrieves a specific way by its identifier. * * @param id * The id of the way. * @return The way. * @deprecated The node manager should be used instead. */ @Deprecated Way getWay(long id); /** * Retrieves a specific relation by its identifier. * * @param id * The id of the relation. * @return The relation. * @deprecated The node manager should be used instead. */ @Deprecated Relation getRelation(long id); /** * Allows the entire dataset to be iterated across. * * @return An iterator pointing to the start of the collection. */ ReleasableIterator<EntityContainer> iterate(); /** * Allows all data within a bounding box to be iterated across. * * @param left * The longitude marking the left edge of the bounding box. * @param right * The longitude marking the right edge of the bounding box. * @param top * The latitude marking the top edge of the bounding box. * @param bottom * The latitude marking the bottom edge of the bounding box. * @param completeWays * If true, all nodes within the ways will be returned even if * they lie outside the box. * @return An iterator pointing to the start of the result data. */ ReleasableIterator<EntityContainer> iterateBoundingBox( double left, double right, double top, double bottom, boolean completeWays); }