// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.core.domain.v0_6; import java.util.Date; import org.openstreetmap.osmosis.core.domain.common.TimestampContainer; import org.openstreetmap.osmosis.core.store.StoreClassRegister; import org.openstreetmap.osmosis.core.store.StoreReader; import org.openstreetmap.osmosis.core.store.StoreWriter; /** * Provides the ability to manipulate nodes. * * @author Brett Henderson * * @deprecated Builder classes are not required because entities are now writeable. */ @Deprecated public class NodeBuilder extends EntityBuilder<Node> { private double latitude; private double longitude; /** * Creates a new instance. */ public NodeBuilder() { super(); } /** * Creates a new instance. * * @param entity * The entity to initialise to. */ public NodeBuilder(Node entity) { this(); initialize(entity); } /** * Creates a new instance. * * @param id * The unique identifier. * @param version * The version of the entity. * @param timestamp * The last updated timestamp. * @param user * The user that last modified this entity. * @param changesetId * The id of the changeset that this version of the entity was created by. * @param latitude * The latitude of the node. * @param longitude * The longitude of the entity. */ public NodeBuilder(long id, int version, Date timestamp, OsmUser user, long changesetId, double latitude, double longitude) { this(); initialize(id, version, timestamp, user, changesetId, latitude, longitude); } /** * Creates a new instance. * * @param id * The unique identifier. * @param version * The version of the entity. * @param timestampContainer * The container holding the timestamp in an alternative * timestamp representation. * @param user * The user that last modified this entity. * @param changesetId * The id of the changeset that this version of the entity was created by. * @param latitude * The latitude of the node. * @param longitude * The longitude of the entity. */ public NodeBuilder( long id, int version, TimestampContainer timestampContainer, OsmUser user, long changesetId, double latitude, double longitude) { this(); initialize(id, version, timestampContainer, user, changesetId, latitude, longitude); } /** * 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. */ public NodeBuilder(StoreReader sr, StoreClassRegister scr) { this(); initialize(new Node(sr, scr)); } /** * {@inheritDoc} */ @Override public void store(StoreWriter sw, StoreClassRegister scr) { buildEntity().store(sw, scr); } /** * Initialises the state of this sub-class. * * @param newLatitude The latitude of the node. * @param newLongitude The longitude of the node. */ private void initializeLocal(double newLatitude, double newLongitude) { this.latitude = newLatitude; this.longitude = newLongitude; } /** * Initializes the contents of the builder to the specified data. * * @param node * The entity to initialise to. * @return This object allowing method chaining. */ public NodeBuilder initialize(Node node) { super.initialize(node); initializeLocal(node.getLatitude(), node.getLongitude()); return this; } /** * Initializes the contents of the builder to the specified data. * * @param newId * The unique identifier. * @param newVersion * The version of the entity. * @param newTimestamp * The last updated timestamp. * @param newUser * The user that last modified this entity. * @param newChangesetId * The id of the changeset that this version of the entity was created by. * @param newLatitude * The latitude of the node. * @param newLongitude * The longitude of the node. * @return This object allowing method chaining. */ public NodeBuilder initialize( long newId, int newVersion, Date newTimestamp, OsmUser newUser, long newChangesetId, double newLatitude, double newLongitude) { super.initialize(newId, newVersion, newTimestamp, newUser, newChangesetId); initializeLocal(newLatitude, newLongitude); return this; } /** * Initializes the contents of the builder to the specified data. * * @param newId * The unique identifier. * @param newVersion * The version of the entity. * @param newTimestampContainer * The container holding the timestamp in an alternative * timestamp representation. * @param newUser * The user that last modified this entity. * @param newChangesetId * The id of the changeset that this version of the entity was created by. * @param newLatitude * The latitude of the node. * @param newLongitude * The longitude of the node. * @return This object allowing method chaining. */ public NodeBuilder initialize( long newId, int newVersion, TimestampContainer newTimestampContainer, OsmUser newUser, long newChangesetId, double newLatitude, double newLongitude) { super.initialize(newId, newVersion, newTimestampContainer, newUser, newChangesetId); initializeLocal(newLatitude, newLongitude); return this; } /** * Sets a new latitude value. * * @param newLatitude * The new latitude. * @return This object allowing method chaining. */ public NodeBuilder setLatitude(double newLatitude) { this.latitude = newLatitude; return this; } /** * Gets the current latitude value. * * @return The latitude. */ public double getLatitude() { return latitude; } /** * Sets a new longitude value. * * @param newLongitude * The new longitude. * @return This object allowing method chaining. */ public NodeBuilder setLongitude(double newLongitude) { this.longitude = newLongitude; return this; } /** * Gets the current longitude value. * * @return The longitude. */ public double getLongitude() { return longitude; } /** * {@inheritDoc} */ @Override public Node buildEntity() { return new Node(id, version, timestampContainer, user, changesetId, tags, latitude, longitude); } /** * ${@inheritDoc}. */ @Override public String toString() { String name = null; for (Tag tag : tags) { if (tag.getKey() != null && tag.getKey().equalsIgnoreCase("name")) { name = tag.getValue(); break; } } if (name != null) { return "NodeBuilder(id=" + getId() + ", #tags=" + getTags().size() + ", name='" + name + "')"; } return "NodeBuilder(id=" + getId() + ", #tags=" + getTags().size() + ")"; } }