All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.osmtools.api.ChangesetTemplate Maven / Gradle / Ivy

package org.osmtools.api;

import java.math.BigInteger;

import org.osm.schema.Osm;
import org.osm.schema.OsmNode;
import org.osm.schema.OsmRelation;
import org.osm.schema.OsmWay;
import org.osmtools.oauth.OauthCredentials;

public class ChangesetTemplate extends OsmApiBinding implements ChangesetOperations {

	private OsmSchemaService osmSchemaService;

	private long changesetId;
	private long created = System.currentTimeMillis();

	public ChangesetTemplate(OsmSchemaService osmSchemaService, String osmApiBaseUrl, Osm osmWithComment,
			OauthCredentials oauthCredentials) {
		super(osmApiBaseUrl, oauthCredentials);
		this.osmSchemaService = osmSchemaService;
		openChangeset(osmWithComment);
	}

	private void openChangeset(Osm osmWithComment) {
		String url = osmApiBaseUrl + "/api/0.6/changeset/create";
		changesetId = putForId(url, osmWithComment);
	}

	@Override
	public long getChangesetId() {
		return changesetId;
	}

	@Override
	public long getCreated() {
		return created;
	}

	@Override
	public void closeChangeset() {
		String url = osmApiBaseUrl + "/api/0.6/changeset/" + changesetId + "/close";
		getRestTemplate().put(url, null);
	}

	@Override
	public long putWay(OsmWay osmWay) {
		Osm osm = osmSchemaService.createOsmNode();
		osmWay.setChangeset(BigInteger.valueOf(changesetId));
		osm.getWay().add(osmWay);
		String url = osmApiBaseUrl + "/api/0.6/way/" + osmWay.getId().longValue();
		return putForId(url, osm);
	}

	@Override
	public long putNode(OsmNode osmNode) {
		Osm osm = osmSchemaService.createOsmNode();
		osmNode.setChangeset(BigInteger.valueOf(changesetId));
		String url = osmApiBaseUrl + "/api/0.6/node/" + osmNode.getId().longValue();
		osm.getNode().add(osmNode);
		return putForId(url, osm);
	}

	@Override
	public long putRelation(OsmRelation relation) {
		String url = osmApiBaseUrl + "/api/0.6/relation/" + relation.getId().longValue();

		Osm osm = osmSchemaService.createOsmNode();
		relation.setChangeset(BigInteger.valueOf(changesetId));
		osm.getRelation().add(relation);
		return putForId(url, osm);
	}

	@Override
	public long putNewWay(OsmWay osmWay) {
		String url = osmApiBaseUrl + "/api/0.6/way/create";

		Osm osm = osmSchemaService.createOsmNode();
		osmWay.setChangeset(BigInteger.valueOf(changesetId));
		osm.getWay().add(osmWay);
		return putForId(url, osm);
	}

	@Override
	public long putNewNode(OsmNode osmNode) {
		String url = osmApiBaseUrl + "/api/0.6/node/create";
		
		Osm osm = osmSchemaService.createOsmNode();
		osmNode.setChangeset(BigInteger.valueOf(changesetId));
		osm.getNode().add(osmNode);
		return putForId(url, osm);
	}

	@Override
	public long putNewRelation(OsmRelation osmRelation) {
		String url = osmApiBaseUrl + "/api/0.6/relation/create";

		Osm osm = osmSchemaService.createOsmNode();
		osmRelation.setChangeset(BigInteger.valueOf(changesetId));
		osm.getRelation().add(osmRelation);
		return putForId(url, osm);
	}

	@Override
	public void deleteNode(long nodeId) {
		String url = osmApiBaseUrl + "/api/0.6/node/" + nodeId;

		deleteForId(url);
	}

	@Override
	public void deleteRelation(long relationId) {
		String url = osmApiBaseUrl + "/api/0.6/relation/" + relationId;

		deleteForId(url);
	}

	@Override
	public void deleteWay(long wayId) {
		String url = osmApiBaseUrl + "/api/0.6/way/" + wayId;

		deleteForId(url);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy