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