X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/e192c779862acdde8b0191faca8a2910f2008719..6c66507427961a22a8f282b5b2f4ab7fda1dad6f:/app/controllers/amf_controller.rb diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index c7eb4ae4c..d729fdd45 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -452,7 +452,8 @@ class AmfController < ApplicationController # Returns # 0. 0 (success), # 1. original relation id (unchanged), - # 2. new relation id. + # 2. new relation id, + # 3. version. def putrelation(renumberednodes, renumberedways, usertoken, changeset_id, version, relid, tags, members, visible) #:doc: user = getuser(usertoken) @@ -476,8 +477,8 @@ class AmfController < ApplicationController members.each do |m| mid = m[1].to_i if mid < 0 - mid = renumberednodes[mid] if m[0] == 'node' - mid = renumberedways[mid] if m[0] == 'way' + mid = renumberednodes[mid] if m[0] == 'Node' + mid = renumberedways[mid] if m[0] == 'Way' end if mid typedmembers << [m[0], mid, m[2]] @@ -491,7 +492,6 @@ class AmfController < ApplicationController new_relation.changeset_id = changeset_id new_relation.version = version - # NOTE: id or relid here? id doesn't seem to be set above if relid <= 0 # We're creating the node new_relation.create_with_history(user) @@ -504,10 +504,10 @@ class AmfController < ApplicationController end end # transaction - if id <= 0 + if relid <= 0 return [0, relid, new_relation.id, new_relation.version] else - return [0, relid, relation.id, relation.version] + return [0, relid, relid, relation.version] end rescue OSM::APIChangesetAlreadyClosedError => ex return [-1, "The changeset #{ex.changeset.id} was closed at #{ex.changeset.closed_at}."] @@ -520,7 +520,7 @@ class AmfController < ApplicationController return [-1, "The relation has already been deleted."] rescue OSM::APIError => ex # Some error that we don't specifically catch - return [-2, "An unusual error happened (in 'putrelation')."] + return [-2, "An unusual error happened (in 'putrelation' #{relid})."] end # Save a way to the database, including all nodes. Any nodes in the previous @@ -621,7 +621,7 @@ class AmfController < ApplicationController uniques=uniques-pointlist uniques.each do |n| node = Node.find(n) - deleteitemrelations(user, changeset_id, id, 'node', node.version) + deleteitemrelations(user, changeset_id, id, 'Node', node.version) new_node = Node.new new_node.changeset_id = changeset_id new_node.version = node.version @@ -644,7 +644,7 @@ class AmfController < ApplicationController return [-1, "The point has already been deleted."] rescue OSM::APIError => ex # Some error that we don't specifically catch - return [-2, "An unusual error happened (in 'putway')."] + return [-2, "An unusual error happened (in 'putway' #{originalway})."] end # Save POI to the database. @@ -707,7 +707,7 @@ class AmfController < ApplicationController return [-1, "The point has already been deleted"] rescue OSM::APIError => ex # Some error that we don't specifically catch - return [-2, "An unusual error happened (in 'putpoi')."] + return [-2, "An unusual error happened (in 'putpoi' #{id})."] end # Read POI from database @@ -749,12 +749,13 @@ class AmfController < ApplicationController # delete the way old_way = Way.find(way_id) + u = old_way.unshared_node_ids delete_way = Way.new delete_way.version = way_version delete_way.changeset_id = changeset_id old_way.delete_with_history!(delete_way, user) - old_way.unshared_node_ids.each do |node_id| + u.each do |node_id| # delete the node node = Node.find(node_id) delete_node = Node.new @@ -764,7 +765,7 @@ class AmfController < ApplicationController else # in case the node wasn't passed (i.e. if it was previously removed # from the way in Potlatch) - deleteitemrelations(user, changeset_id, node_id, 'node', node.version) + deleteitemrelations(user, changeset_id, node_id, 'Node', node.version) delete_node.version = node.version end node.delete_with_history!(delete_node, user) @@ -782,7 +783,7 @@ class AmfController < ApplicationController return [-1, "The way has already been deleted."] rescue OSM::APIError => ex # Some error that we don't specifically catch - return [-2, "An unusual error happened (in 'deleteway')."] + return [-2, "An unusual error happened (in 'deleteway' #{way_id})."] end @@ -897,13 +898,13 @@ class AmfController < ApplicationController AND crm.member_id IN (#{way_ids.join(',')}) EOF end - return ActiveRecord::Base.connection.select_all(sql).collect { |a| [a['relid'].to_i,a['version'].to_i] } + ActiveRecord::Base.connection.select_all(sql).collect { |a| [a['relid'].to_i,a['version'].to_i] } end def sql_get_nodes_in_way(wayid) points=[] sql=<<-EOF - SELECT latitude*0.0000001 AS lat,longitude*0.0000001 AS lon,current_nodes.id + SELECT latitude*0.0000001 AS lat,longitude*0.0000001 AS lon,current_nodes.id,current_nodes.version FROM current_way_nodes,current_nodes WHERE current_way_nodes.id=#{wayid.to_i} AND current_way_nodes.node_id=current_nodes.id @@ -916,7 +917,7 @@ class AmfController < ApplicationController nodetags[n['k']]=n['v'] end nodetags.delete('created_by') - points << [row['lon'].to_f,row['lat'].to_f,row['id'].to_i,nodetags] + points << [row['lon'].to_f,row['lat'].to_f,row['id'].to_i,nodetags,row['version'].to_i] end points end