diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nodejs/no1.js | 190 |
1 files changed, 95 insertions, 95 deletions
diff --git a/src/nodejs/no1.js b/src/nodejs/no1.js index 112d736..d63a8bb 100644 --- a/src/nodejs/no1.js +++ b/src/nodejs/no1.js @@ -47,18 +47,18 @@ function toISO8601(date) { pad_two(date.getUTCMinutes()), ':', pad_two(date.getUTCSeconds()), - '+01:00' //FIX ME + '+01:00' //FIX ME ].join(''); } function createWayBboxQuery(key, value, left, bottom, right, top) { return "SELECT id,tstamp,version,changeset_id, nodes, user_id, hstore_to_array(tags) as tags FROM ways WHERE (tags @> hstore('" + key + "','" + value + "') AND linestring && st_setsrid(st_makebox2d(st_setsrid(st_makepoint(" + - left + "," + bottom + "),4326), st_setsrid(st_makepoint(" + right + "," + top + "),4326)),4326));"; + left + "," + bottom + "),4326), st_setsrid(st_makepoint(" + right + "," + top + "),4326)),4326));"; } function createNodeBboxQuery(key, value, left, bottom, right, top) { return "SELECT id, user_id,tstamp,version,changeset_id, hstore_to_array(tags) as tags, X(geom) as lat, Y(geom) as lon FROM nodes WHERE (tags @> hstore('" + key + "','" + value + "') AND geom && st_setsrid(st_makebox2d(st_setsrid(st_makepoint(" + - left + "," + bottom + "),4326), st_setsrid(st_makepoint(" + right + "," + top + "),4326)),4326));"; + left + "," + bottom + "),4326), st_setsrid(st_makepoint(" + right + "," + top + "),4326)),4326));"; } function createNodesForWayQuery(nodes) { @@ -73,38 +73,38 @@ function nodeWorldHandler(req, res, key, value) { function nodeBboxHandler(req, res, key, value, left, bottom, right, top) { log.error("nodeBboxHandler"); db_connect(res, function(client) { - log.info(createNodeBboxQuery(key, value, left, bottom, right, top)); - var success = false; - var query = client.query(createNodeBboxQuery(key, value, left, bottom, right, top)); - - query.on('error', function(err) { - log.error(err); - res.writeHead(404,{}); - res.end('\n'); - }); - - query.on('end', function() { - //console.log("end event\n"); - if(success) { - res.write("</xml>"); - res.end(); - } - else { - //empty response - res.writeHead(404,{}); - res.end(); - //perhaps write 404? is error also raised? - } - }); - - query.on('row', function(row) { - if(!success) { - success = true; - res.writeHead(200, {'Content-Type': 'text/plain'}); - res.write("<xml>"); - } - res.write(createXmlNode(row)); - }); + log.info(createNodeBboxQuery(key, value, left, bottom, right, top)); + var success = false; + var query = client.query(createNodeBboxQuery(key, value, left, bottom, right, top)); + + query.on('error', function(err) { + log.error(err); + res.writeHead(404,{}); + res.end('\n'); + }); + + query.on('end', function() { + //console.log("end event\n"); + if(success) { + res.write("</xml>"); + res.end(); + } + else { + //empty response + res.writeHead(404,{}); + res.end(); + //perhaps write 404? is error also raised? + } + }); + + query.on('row', function(row) { + if(!success) { + success = true; + res.writeHead(200, {'Content-Type': 'text/plain'}); + res.write("<xml>"); + } + res.write(createXmlNode(row)); + }); }); } @@ -138,13 +138,13 @@ function createXmlWay(row) { for(var x=0;x<temp.length;x=x+2) way.ele('tag') .att('k',escape(temp[x])) - .att('v',escape(temp[x+1])); + .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]); + .att('ref',temp[x]); } return builder.toString({pretty:'true'}); } @@ -160,71 +160,71 @@ function connectionError(err, res) { function db_connect(res, callback) { pg.connect(connectionString, function(err, client) { - if(err) { - log.error('message'); - res.writeHead(404,{}); - res.end(); - } else { - log.info("db connection was successfull"); - callback(client); - } + if(err) { + log.error('message'); + res.writeHead(404,{}); + res.end(); + } else { + log.info("db connection was successfull"); + callback(client); + } }); } function wayBboxHandler(req, res, key, value, left, bottom, right, top) { db_connect(res, function(client) { var count = 0; - var success = false; - //console.log(createWayBboxQuery(key, value, left, bottom, right, top)); - var query = client.query(createWayBboxQuery(key, value, left, bottom, right, top)); - - query.on('error', function(err) { - log.error(err); - res.writeHead(404,{}); - res.end(); - }); - - query.on('end', function() { - if(success) { - if(count == 0) { - res.write("</xml>"); - res.end(); - } - //res.write("</xml>"); - //res.end(); //problem!!! - } - else { - res.writeHead(404,{}); - res.end(); - //perhaps write 404? - } - }); - - query.on('row', function(row) { - if(!success) { - success = true; - res.writeHead(200, {'Content-Type': 'text/plain'}); - res.write("<xml>"); - } - //console.log(row); - if(row.nodes != '{}') { - count++; - var subquery = client.query(createNodesForWayQuery(row.nodes)); - subquery.on('error',function(err) {}); - subquery.on('end', function() { - count--; - if(count==0) - res.write("</xml>"); - res.end(); - }); - subquery.on('row', function(row) { - res.write(createXmlNode(row)); - }); - - //console.log(createNodesForWayQuery(row.nodes)); - } + var success = false; + //console.log(createWayBboxQuery(key, value, left, bottom, right, top)); + var query = client.query(createWayBboxQuery(key, value, left, bottom, right, top)); + + query.on('error', function(err) { + log.error(err); + res.writeHead(404,{}); + res.end(); + }); + + query.on('end', function() { + if(success) { + if(count == 0) { + res.write("</xml>"); + res.end(); + } + //res.write("</xml>"); + //res.end(); //problem!!! + } + else { + res.writeHead(404,{}); + res.end(); + //perhaps write 404? + } + }); + + query.on('row', function(row) { + if(!success) { + success = true; + res.writeHead(200, {'Content-Type': 'text/plain'}); + res.write("<xml>"); + } + //console.log(row); + if(row.nodes != '{}') { + count++; + var subquery = client.query(createNodesForWayQuery(row.nodes)); + subquery.on('error',function(err) {}); + subquery.on('end', function() { + count--; + if(count==0) + res.write("</xml>"); + res.end(); + }); + subquery.on('row', function(row) { + res.write(createXmlNode(row)); + }); + + //console.log(createNodesForWayQuery(row.nodes)); + } res.write(createXmlWay(row)); - }); + }); }); } |