[gnome-maps/wip/osm-edit: 30/47] osmApi: plug in skeleton code to create OSM XML for updated objects
- From: Marcus Lundblad <mlundblad src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-maps/wip/osm-edit: 30/47] osmApi: plug in skeleton code to create OSM XML for updated objects
- Date: Thu, 30 Apr 2015 12:59:53 +0000 (UTC)
commit 9ab51035b98dc34f06201dbbb337451adeb5bd8e
Author: Marcus Lundblad <ml update uu se>
Date: Mon Feb 16 23:36:02 2015 +0100
osmApi: plug in skeleton code to create OSM XML for updated objects
Added callbacks fired on successful OSM changeset creation.
Added XML generation for nodes and ways (relations still missing).
src/osmConnection.js | 11 ++++++++++-
src/osmEdit.js | 21 +++++++++++++++++++--
src/osmNode.js | 18 ++++++++++++++++++
src/osmObject.js | 4 ++++
src/osmWay.js | 20 ++++++++++++++++++++
5 files changed, 71 insertions(+), 3 deletions(-)
---
diff --git a/src/osmConnection.js b/src/osmConnection.js
index 8654856..74d9959 100644
--- a/src/osmConnection.js
+++ b/src/osmConnection.js
@@ -146,8 +146,17 @@ const OSMConnection = new Lang.Class({
}
print ('data received: ' + message.response_body.data);
+ callback(true, message.status_code, message.response_body.data);
+
+ }));
+ },
- }).bind(this));
+ uploadObject: function(object, changeset, callback) {
+ object.changeset = changeset;
+
+ let xml = object.toXML();
+
+ print('about to upload object:\n' + xml + '\n');
},
_getOpenChangesetUrl: function() {
diff --git a/src/osmEdit.js b/src/osmEdit.js
index f233bda..6bc88e7 100644
--- a/src/osmEdit.js
+++ b/src/osmEdit.js
@@ -76,7 +76,24 @@ const OSMEditManager = new Lang.Class({
return osmType;
},
- uploadObject: function(place, comment, source, callback) {
- this._osmConnection.openChangeset(comment, source, callback);
+ uploadObject: function(object, comment, source, callback) {
+ this._osmConnection.openChangeset(comment, source,
+ function(success, status,
+ changeset) {
+ print('open changeset CB:');
+ print('success: ' + success);
+ print('status: ' + status);
+ print('changeset: ' + changeset);
+ if (success)
+ this._uploadObject(object,
+ changeset,
+ callback);
+ else
+ callback(false, status, null);
+ }.bind(this));
+ },
+
+ _uploadObject: function(object, changeset, callback) {
+ this._osmConnection.uploadObject(object, changeset, callback);
}
});
diff --git a/src/osmNode.js b/src/osmNode.js
index 6a35305..c8acb79 100644
--- a/src/osmNode.js
+++ b/src/osmNode.js
@@ -24,6 +24,8 @@ const Lang = imports.lang;
const OSMObject = imports.osmObject;
const OSMConnection = imports.osmConnection;
+const GLib = imports.gi.GLib;
+
const OSMNode = new Lang.Class({
Name: 'OSMNode',
Extends: OSMObject.OSMObject,
@@ -42,6 +44,22 @@ const OSMNode = new Lang.Class({
return this._lon;
},
+ toXML: function() {
+ let tags = this._serializeTagsToList();
+ let attrs = this._serializeAttributes();
+ let result = '<osm>\n' +
+ '\t<node ' + attrs + ' lat="' + this._lat + '" lon="' + this._lon + '">\n';
+
+ for (var i = 0; i < tags.length; i++) {
+ result += '\t\t' + tags[i] + '\n';
+ }
+
+ result += '\t</node>\n' +
+ '</osm>';
+
+ return result;
+ },
+
toString: function() {
let s = 'node changeset: ' + this._changeset + ' lat: ' + this._lat +
' lon: ' + this._lon;
diff --git a/src/osmObject.js b/src/osmObject.js
index 29e4350..3dbb864 100644
--- a/src/osmObject.js
+++ b/src/osmObject.js
@@ -63,6 +63,10 @@ const OSMObject = new Lang.Class({
return this._changeset;
},
+ set changeset(changeset) {
+ this._changeset = changeset;
+ },
+
setTag: function(key, value) {
this._tags[key] = value;
},
diff --git a/src/osmWay.js b/src/osmWay.js
index 04ac482..180a6ec 100644
--- a/src/osmWay.js
+++ b/src/osmWay.js
@@ -35,5 +35,25 @@ const OSMWay = new Lang.Class({
get nodeRefs() {
return this._nodeRefs;
+ },
+
+ toXML: function() {
+ let tags = this._serializeTagsToList();
+ let attrs = this._serializeAttributes();
+ let result = '<osm>\n' +
+ '\t<way ' + attrs + '">\n';
+
+ for (var i = 0; i < this._nodeRefs.length; i++) {
+ result += '\t\t<nd ref="' + this._nodeRefs[i] + '"/>\n';
+ }
+
+ for (var i = 0; i < tags.length; i++) {
+ result += '\t\t' + tags[i] + '\n';
+ }
+
+ result += '\t</node>\n' +
+ '</osm>';
+
+ return result;
}
})
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]