X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/849397a33616f0802294047131fbca52b844ce51..6d6c9ddc8c80215b015037254e019aa05f643741:/app/controllers/amf_controller.rb diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index bffff484e..20d667b8e 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -29,6 +29,7 @@ class AmfController < ApplicationController # (cf http://www.ruby-forum.com/topic/122163) req.read(2) # Skip version indicator and client ID results={} # Results of each body + renumberednodes={} # Shared across repeated putways # ------------- # Parse request @@ -56,7 +57,9 @@ class AmfController < ApplicationController when 'getway'; results[index]=putdata(index,getway(args)) when 'getway_old'; results[index]=putdata(index,getway_old(args)) when 'getway_history'; results[index]=putdata(index,getway_history(args)) - when 'putway'; results[index]=putdata(index,putway(args)) + when 'putway'; r=putway(args,renumberednodes) + renumberednodes=r[3] + results[index]=putdata(index,r) when 'deleteway'; results[index]=putdata(index,deleteway(args)) when 'putpoi'; results[index]=putdata(index,putpoi(args)) when 'getpoi'; results[index]=putdata(index,getpoi(args)) @@ -132,6 +135,7 @@ navigable drain: waterway=drain,boat=yes,name=(type name here) derelict canal: waterway=derelict_canal,name=(type name here) unnavigable river: waterway=river,boat=no,name=(type name here) unnavigable drain: waterway=drain,boat=no,name=(type name here) +stream: waterway=stream,boat=no,name=(type name here) way/railway railway: railway=rail @@ -197,7 +201,7 @@ post office: amenity=post_office,tourism=,name=,religion=,denomination= pub: tourism=,amenity=pub,name=(type name here),religion=,denomination= POI/natural -peak: point=peak +peak: natural=peak EOF StringIO.open(txt) do |file| @@ -375,7 +379,7 @@ EOF # returns current way ID, new way ID, hash of renumbered nodes, # xmin,xmax,ymin,ymax - def putway(args) + def putway(args,renumberednodes) RAILS_DEFAULT_LOGGER.info(" putway started") usertoken,originalway,points,attributes,oldversion,baselong,basey,masterscale=args uid=getuserid(usertoken) @@ -434,7 +438,6 @@ EOF xmin=ymin= 999999 xmax=ymax=-999999 insertsql='' - renumberednodes={} nodelist=[] points.each_index do |i| @@ -793,31 +796,25 @@ end def sqlescape(a) - a.gsub(/[\000-\037]/,"").gsub("'","''").gsub(92.chr,92.chr+92.chr) + a.gsub(/[\000-\037]/,"").gsub("'","''").gsub(92.chr) {92.chr+92.chr} end def tag2array(a) tags={} - a.gsub(';;;','#%').split(';').each do |b| - b.gsub!('#%',';;;') - b.gsub!('===','#%') - k,v=b.split('=') - if k.nil? then k='' end - if v.nil? then v='' end - tags[k.gsub('#%','=').gsub(':','|')]=v.gsub('#%','=') + Tags.split(a) do |k, v| + tags[k.gsub(':','|')]=v end tags end def array2tag(a) - str='' + tags = [] a.each do |k,v| if v=='' then next end if v[0,6]=='(type ' then next end - if str!='' then str+=';' end - str+=k.gsub(';',';;;').gsub('=','===').gsub('|',':')+'='+v.gsub(';',';;;').gsub('=','===') + tags << [k.gsub('|',':'), v] end - str + return Tags.join(tags) end def getuserid(token)