aboutsummaryrefslogtreecommitdiffstats
path: root/src/nodejs/xmlGenerator.js
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2011-01-21 18:25:32 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2011-01-21 18:25:32 +0100
commit70a449fe462386009d345fb92efe3534fd99d12e (patch)
tree803317a7080649857443c2fe20f23f0116cc0f11 /src/nodejs/xmlGenerator.js
parent0ea9b3200dacf84a22be03bbcf62915ff28debf3 (diff)
parentdda92dc140c951b7511937e5927e783f47b347cf (diff)
downloadosm-xapi-70a449fe462386009d345fb92efe3534fd99d12e.tar.gz
osm-xapi-70a449fe462386009d345fb92efe3534fd99d12e.tar.xz
osm-xapi-70a449fe462386009d345fb92efe3534fd99d12e.zip
Merge remote branch 'upstream/master'
Conflicts: src/nodejs/no1.js
Diffstat (limited to 'src/nodejs/xmlGenerator.js')
-rw-r--r--src/nodejs/xmlGenerator.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/nodejs/xmlGenerator.js b/src/nodejs/xmlGenerator.js
new file mode 100644
index 0000000..e982e18
--- /dev/null
+++ b/src/nodejs/xmlGenerator.js
@@ -0,0 +1,71 @@
+var builder = require('xmlbuilder');
+//set up logger
+var log4js = require('log4js')(); //note the need to call the function
+//log4js.addAppender(log4js.fileAppender('osm-xapi.log'), 'cheese');
+
+var log = log4js.getLogger('xmlGenerator');
+log.setLevel('ALL');
+
+
+exports.createNode = function (row) {
+ log.debug(row);
+ var node = builder.begin('node')
+ .att('id', row.id)
+ .att('timestamp', toISO8601(row.tstamp))
+ .att('version', row.version)
+ .att('changeset', row.changeset_id)
+ .att('lat', row.lat)
+ .att('lon', row.lon);
+ if(row.tags != '{}') {
+ var temp = row.tags.replace("{","").replace("}","").split(",");
+ for(var x=0;x<temp.length;x=x+2)
+ node.ele('tag')
+ .att('k',escape(temp[x]))
+ .att('v',escape(temp[x+1]));
+ }
+ return builder.toString({ pretty: true });
+}
+
+exports.createWay = function (row) {
+ var way = builder.begin('way')
+ .att('id', row.id)
+ .att('timestamp', toISO8601(row.tstamp))
+ .att('version', row.version)
+ .att('changeset', row.changeset_id);
+ if(row.tags != '{}') {
+ var temp = row.tags.replace("{","").replace("}","").split(",");
+ for(var x=0;x<temp.length;x=x+2)
+ way.ele('tag')
+ .att('k',escape(temp[x]))
+ .att('v',escape(temp[x+1]));
+ }
+
+ var temp = row.nodes.replace("{","").replace("}","").split(",");
+ for(var x=0;x<temp.length;x++) {
+ way.ele('nd')
+ .att('ref',temp[x]);
+ }
+ return builder.toString({pretty:'true'});
+}
+
+function toISO8601(date) {
+ //2007-03-31T00:09:22+01:00
+ var pad_two = function(n) {
+ return (n < 10 ? '0' : '') + n;
+ };
+
+ return [
+ date.getUTCFullYear(),
+ '-',
+ pad_two(date.getUTCMonth() + 1),
+ '-',
+ pad_two(date.getUTCDate()),
+ 'T',
+ pad_two(date.getUTCHours()),
+ ':',
+ pad_two(date.getUTCMinutes()),
+ ':',
+ pad_two(date.getUTCSeconds()),
+ '+01:00' //FIX ME
+ ].join('');
+}