From 3065af398d20b9c8a1270075780dd66003f0d894 Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Sun, 9 Nov 2008 23:50:03 +0000 Subject: [PATCH] 0.6-friendly Potlatch (work in progress). DO NOT SET POTLATCH_USE_SQL=false as it won't work --- app/controllers/amf_controller.rb | 169 ++++++++++++++++++++---------- app/models/way.rb | 16 +-- config/initializers/potlatch.rb | 2 +- config/routes.rb | 3 +- lib/potlatch.rb | 4 + public/potlatch/potlatch.swf | Bin 166392 -> 167436 bytes 6 files changed, 128 insertions(+), 66 deletions(-) diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index d04166aea..4034ce10d 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -110,8 +110,9 @@ class AmfController < ApplicationController end results[index]=AMF.putdata(index,r) when 'putrelation'; results[index]=AMF.putdata(index,putrelation(renumberednodes, renumberedways, *args)) - when 'deleteway'; results[index]=AMF.putdata(index,deleteway(args[0],args[1].to_i)) + when 'deleteway'; results[index]=AMF.putdata(index,deleteway(*args)) when 'putpoi'; results[index]=AMF.putdata(index,putpoi(*args)) + when 'startchangeset'; results[index]=AMF.putdata(index,startchangeset(*args)) end end sendresponse(results) @@ -119,6 +120,25 @@ class AmfController < ApplicationController private + # Start new changeset + + def startchangeset(usertoken, cstags, closeid, closecomment) + uid = getuserid(usertoken) + if !uid then return -1,"You are not logged in, so Potlatch can't write any changes to the database." end + + # close previous changeset and add comment + if closeid + end + + # open a new changeset + cs = Changeset.new + cs.tags = cstags + cs.user_id = uid + cs.created_at = Time.now + cs.save_with_tags! + return [0,cs.id] + end + # Return presets (default tags, localisation etc.): # uses POTLATCH_PRESETS global, set up in OSM::Potlatch. @@ -144,17 +164,18 @@ class AmfController < ApplicationController end if POTLATCH_USE_SQL then - way_ids = sql_find_way_ids_in_area(xmin, ymin, xmax, ymax) + ways = sql_find_ways_in_area(xmin, ymin, xmax, ymax) points = sql_find_pois_in_area(xmin, ymin, xmax, ymax) - relation_ids = sql_find_relations_in_area_and_ways(xmin, ymin, xmax, ymax, way_ids) + relation_ids = sql_find_relations_in_area_and_ways(xmin, ymin, xmax, ymax, ways.collect {|x| x[0]}) else # find the way ids in an area - nodes_in_area = Node.find_by_area(ymin, xmin, ymax, xmax, :conditions => ["current_nodes.visible = ?", true], :include => :ways) + nodes_in_area = Node.find_by_area(ymin, xmin, ymax, xmax, :conditions => ["current_nodes.visible = ?", true], :include => :ways) # ** include causes problems way_ids = nodes_in_area.collect { |node| node.way_ids }.flatten.uniq + # ** get versions # find the node ids in an area that aren't part of ways nodes_not_used_in_area = nodes_in_area.select { |node| node.ways.empty? } - points = nodes_not_used_in_area.collect { |n| [n.id, n.lon, n.lat, n.tags_as_hash] } + points = nodes_not_used_in_area.collect { |n| [n.id, n.lon, n.lat, n.tags] } # find the relations used by those nodes and ways relations = Relation.find_for_nodes(nodes_in_area.collect { |n| n.id }, :conditions => {:visible => true}) + @@ -162,7 +183,7 @@ class AmfController < ApplicationController relation_ids = relations.collect { |relation| relation.id }.uniq end - [way_ids, points, relation_ids] + [ways, points, relation_ids] end # Find deleted ways in current bounding box (similar to whichways, but ways @@ -188,12 +209,13 @@ class AmfController < ApplicationController end # Get a way including nodes and tags. - # Returns 0 (success), a Potlatch-style array of points, and a hash of tags. + # Returns the way id, a Potlatch-style array of points, a hash of tags, and the version number. def getway(wayid) #:doc: if POTLATCH_USE_SQL then points = sql_get_nodes_in_way(wayid) tags = sql_get_tags_in_way(wayid) + version = sql_get_way_version(wayid) else # Ideally we would do ":include => :nodes" here but if we do that # then rails only seems to return the first copy of a node when a @@ -208,14 +230,15 @@ class AmfController < ApplicationController return [wayid,[],{}] if way.nil? or !way.visible points = way.nodes.collect do |node| - nodetags=node.tags_as_hash + nodetags=node.tags nodetags.delete('created_by') [node.lon, node.lat, node.id, nodetags] end tags = way.tags + version = way.version end - [wayid, points, tags] + [wayid, points, tags, version] end # Get an old version of a way, and all constituent nodes. @@ -224,6 +247,14 @@ class AmfController < ApplicationController # even if it's moved. For revert (version >= 0), uses the node in existence # at the time, generating a new id if it's still visible and has been moved/ # retagged. + # + # Returns: + # 0. success code, + # 1. id, + # 2. array of points, + # 3. hash of tags, + # 4. version, + # 5. is this the current, visible version? (boolean) def getway_old(id, version) #:doc: if version < 0 @@ -235,10 +266,11 @@ class AmfController < ApplicationController end if old_way.nil? - return [0, id, [], {}, -1] + return [-1, id, [], {}, -1,0] else + curway=Way.find(id) old_way.tags['history'] = "Retrieved from v#{old_way.version}" - return [0, id, points, old_way.tags, old_way.version] + return [0, id, points, old_way.tags, old_way.version, (curway.version==old_way.version and curway.visible)] end end @@ -269,7 +301,7 @@ class AmfController < ApplicationController user_object = old_node.changeset.user user = user_object.data_public? ? user_object.display_name : 'anonymous' uid = user_object.data_public? ? user_object.id : 0 - [old_node.timestamp.to_i, old_node.timestamp.strftime("%d %b %Y, %H:%M"), old_node.visible ? 1 : 0, user, uid] + [old_node.version, old_node.timestamp.strftime("%d %b %Y, %H:%M"), old_node.visible ? 1 : 0, user, uid] end return ['node',nodeid,history] @@ -282,7 +314,8 @@ class AmfController < ApplicationController # Returns: # 0. relation id, # 1. hash of tags, - # 2. list of members. + # 2. list of members, + # 3. version. def getrelation(relid) #:doc: begin @@ -291,9 +324,8 @@ class AmfController < ApplicationController return [relid, {}, []] end - return [relid, {}, []] if rel.nil? or !rel.visible - - [relid, rel.tags, rel.members] + return [relid, {}, [], nil] if rel.nil? or !rel.visible + [relid, rel.tags, rel.members, rel.version] end # Find relations with specified name/id. @@ -322,7 +354,7 @@ class AmfController < ApplicationController # 1. original relation id (unchanged), # 2. new relation id. - def putrelation(renumberednodes, renumberedways, usertoken, relid, tags, members, visible) #:doc: + def putrelation(renumberednodes, renumberedways, usertoken, changeset, relid, tags, members, visible) #:doc: uid = getuserid(usertoken) if !uid then return -1,"You are not logged in, so the relation could not be saved." end @@ -332,6 +364,7 @@ class AmfController < ApplicationController # create a new relation, or find the existing one if relid <= 0 rel = Relation.new + rel.version = 0 else rel = Relation.find(relid) end @@ -353,7 +386,7 @@ class AmfController < ApplicationController rel.members = typedmembers rel.tags = tags rel.visible = visible - rel.user_id = uid + rel.changeset_id = changeset # check it then save it # BUG: the following is commented out because it always fails on my @@ -375,9 +408,10 @@ class AmfController < ApplicationController # 0. '0' (code for success), # 1. original way id (unchanged), # 2. new way id, - # 3. hash of renumbered nodes (old id=>new id) + # 3. hash of renumbered nodes (old id=>new id), + # 4. version - def putway(renumberednodes, usertoken, originalway, points, attributes) #:doc: + def putway(renumberednodes, usertoken, changeset, originalway, points, attributes) #:doc: # -- Initialise and carry out checks @@ -397,6 +431,7 @@ class AmfController < ApplicationController if originalway < 0 way = Way.new + way.version = 0 # otherwise +=1 breaks uniques = [] else way = Way.find(originalway) @@ -418,10 +453,11 @@ class AmfController < ApplicationController elsif id < 0 # Create new node node = Node.new + node.version = 0 # otherwise +=1 breaks savenode = true else node = Node.find(id) - nodetags=node.tags_as_hash + nodetags=node.tags nodetags.delete('created_by') if !fpcomp(lat, node.lat) or !fpcomp(lon, node.lon) or n[4] != nodetags or !node.visible? @@ -430,10 +466,10 @@ class AmfController < ApplicationController end if savenode - node.user_id = uid + node.changeset_id = changeset node.lat = lat node.lon = lon - node.tags = Tags.join(n[4]) + node.tags = n[4] node.visible = true node.save_with_history! @@ -453,20 +489,22 @@ class AmfController < ApplicationController deleteitemrelations(n, 'node') node = Node.find(n) - node.user_id = uid + node.changeset_id = changeset node.visible = false node.save_with_history! end # -- Save revised way - way.tags = attributes - way.nds = nodes - way.user_id = uid - way.visible = true - way.save_with_history! + if way.tags!=attributes or way.nds!=nodes or !way.visible? + way.tags = attributes + way.nds = nodes + way.changeset_id = changeset + way.visible = true + way.save_with_history! + end - [0, originalway, way.id, renumberednodes] + [0, originalway, way.id, renumberednodes, way.version] end # Save POI to the database. @@ -474,9 +512,10 @@ class AmfController < ApplicationController # Returns: # 0. 0 (success), # 1. original node id (unchanged), - # 2. new node id. + # 2. new node id, + # 3. version. - def putpoi(usertoken, id, lon, lat, tags, visible) #:doc: + def putpoi(usertoken, changeset, id, lon, lat, tags, visible) #:doc: uid = getuserid(usertoken) if !uid then return -1,"You are not logged in, so the point could not be saved." end @@ -492,54 +531,55 @@ class AmfController < ApplicationController end else node = Node.new + node.version = 0 end - node.user_id = uid + node.changeset_id = changeset node.lat = lat node.lon = lon - node.tags = Tags.join(tags) + node.tags = tags node.visible = visible node.save_with_history! - [0, id, node.id] + [0, id, node.id, node.version] end # Read POI from database # (only called on revert: POIs are usually read by whichways). # - # Returns array of id, long, lat, hash of tags. + # Returns array of id, long, lat, hash of tags, version. - def getpoi(id,timestamp) #:doc: - if timestamp>0 then - n = OldNode.find(id, :conditions=>['UNIX_TIMESTAMP(timestamp)=?',timestamp]) + def getpoi(id,version) #:doc: + if version>0 then + n = OldNode.find(id, :conditions=>['version=?',version]) else n = Node.find(id) end if n - return [n.id, n.lon, n.lat, n.tags_as_hash] + return [n.id, n.lon, n.lat, n.tags, n.version] else - return [nil, nil, nil, ''] + return [nil, nil, nil, {}, nil] end end # Delete way and all constituent nodes. Also removes from any relations. # Returns 0 (success), unchanged way id. - def deleteway(usertoken, way_id) #:doc: - uid = getuserid(usertoken) - if !uid then return -1,"You are not logged in, so the way could not be deleted." end + def deleteway(usertoken, changeset_id, way_id) #:doc: + if !getuserid(usertoken) then return -1,"You are not logged in, so the way could not be deleted." end + + way_id = way_id.to_i # FIXME: would be good not to make two history entries when removing # two nodes from the same relation - user = User.find(uid) way = Way.find(way_id) way.unshared_node_ids.each do |n| deleteitemrelations(n, 'node') end deleteitemrelations(way_id, 'way') - way.delete_with_relations_and_nodes_and_history(user) + way.delete_with_relations_and_nodes_and_history(changeset_id.to_i) [0, way_id] end @@ -596,6 +636,9 @@ class AmfController < ApplicationController def sendresponse(results) a,b=results.length.divmod(256) render :content_type => "application/x-amf", :text => proc { |response, output| + # ** move amf writing loop into here - + # basically we read the messages in first (into an array of some sort), + # then iterate through that array within here, and do all the AMF writing output.write 0.chr+0.chr+0.chr+0.chr+a.chr+b.chr results.each do |k,v| output.write(v) @@ -607,9 +650,9 @@ class AmfController < ApplicationController # ==================================================================== # Alternative SQL queries for getway/whichways - def sql_find_way_ids_in_area(xmin,ymin,xmax,ymax) + def sql_find_ways_in_area(xmin,ymin,xmax,ymax) sql=<<-EOF - SELECT DISTINCT current_way_nodes.id AS wayid + SELECT DISTINCT current_ways.id AS wayid,current_ways.version AS version FROM current_way_nodes INNER JOIN current_nodes ON current_nodes.id=current_way_nodes.node_id INNER JOIN current_ways ON current_ways.id =current_way_nodes.id @@ -617,26 +660,34 @@ class AmfController < ApplicationController AND current_ways.visible=TRUE AND #{OSM.sql_for_area(ymin, xmin, ymax, xmax, "current_nodes.")} EOF - return ActiveRecord::Base.connection.select_all(sql).collect { |a| a['wayid'].to_i } + return ActiveRecord::Base.connection.select_all(sql).collect { |a| [a['wayid'].to_i,a['version'].to_i] } end def sql_find_pois_in_area(xmin,ymin,xmax,ymax) + pois=[] sql=<<-EOF - SELECT current_nodes.id,current_nodes.latitude*0.0000001 AS lat,current_nodes.longitude*0.0000001 AS lon,current_nodes.tags + SELECT current_nodes.id,current_nodes.latitude*0.0000001 AS lat,current_nodes.longitude*0.0000001 AS lon,current_nodes.version FROM current_nodes LEFT OUTER JOIN current_way_nodes cwn ON cwn.node_id=current_nodes.id WHERE current_nodes.visible=TRUE AND cwn.id IS NULL AND #{OSM.sql_for_area(ymin, xmin, ymax, xmax, "current_nodes.")} EOF - return ActiveRecord::Base.connection.select_all(sql).collect { |n| [n['id'].to_i,n['lon'].to_f,n['lat'].to_f,tagstring_to_hash(n['tags'])] } + ActiveRecord::Base.connection.select_all(sql).each do |row| + poitags={} + ActiveRecord::Base.connection.select_all("SELECT k,v FROM current_node_tags WHERE id=#{row['id']}").each do |n| + poitags[n['k']]=n['v'] + end + pois << [row['id'].to_i, row['lon'].to_f, row['lat'].to_f, poitags, row['version'].to_i] + end + pois end def sql_find_relations_in_area_and_ways(xmin,ymin,xmax,ymax,way_ids) # ** It would be more Potlatchy to get relations for nodes within ways # during 'getway', not here sql=<<-EOF - SELECT DISTINCT cr.id AS relid + SELECT DISTINCT cr.id AS relid,cr.version AS version FROM current_relations cr INNER JOIN current_relation_members crm ON crm.id=cr.id INNER JOIN current_nodes cn ON crm.member_id=cn.id AND crm.member_type='node' @@ -645,20 +696,20 @@ class AmfController < ApplicationController unless way_ids.empty? sql+=<<-EOF UNION - SELECT DISTINCT cr.id AS relid + SELECT DISTINCT cr.id AS relid,cr.version AS version FROM current_relations cr INNER JOIN current_relation_members crm ON crm.id=cr.id WHERE crm.member_type='way' AND crm.member_id IN (#{way_ids.join(',')}) EOF end - return ActiveRecord::Base.connection.select_all(sql).collect { |a| a['relid'].to_i }.uniq + return 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,tags + SELECT latitude*0.0000001 AS lat,longitude*0.0000001 AS lon,current_nodes.id FROM current_way_nodes,current_nodes WHERE current_way_nodes.id=#{wayid.to_i} AND current_way_nodes.node_id=current_nodes.id @@ -666,7 +717,10 @@ class AmfController < ApplicationController ORDER BY sequence_id EOF ActiveRecord::Base.connection.select_all(sql).each do |row| - nodetags=tagstring_to_hash(row['tags']) + nodetags={} + ActiveRecord::Base.connection.select_all("SELECT k,v FROM current_node_tags WHERE id=#{row['id']}").each do |n| + nodetags[n['k']]=n['v'] + end nodetags.delete('created_by') points << [row['lon'].to_f,row['lat'].to_f,row['id'].to_i,nodetags] end @@ -681,6 +735,9 @@ class AmfController < ApplicationController tags end + def sql_get_way_version(wayid) + ActiveRecord::Base.connection.select_one("SELECT version FROM current_ways WHERE id=#{wayid.to_i}") + end end # Local Variables: diff --git a/app/models/way.rb b/app/models/way.rb index da7b8d733..7c29a44b3 100644 --- a/app/models/way.rb +++ b/app/models/way.rb @@ -291,22 +291,24 @@ class Way < ActiveRecord::Base end end - # delete a way and it's nodes that aren't part of other ways, with history + # delete a way and its nodes that aren't part of other ways, with history # FIXME: merge the potlatch code to delete the relations - def delete_with_relations_and_nodes_and_history(user) + # and refactor to use delete_with_history! + def delete_with_relations_and_nodes_and_history(changeset_id) # delete the nodes not used by other ways self.unshared_node_ids.each do |node_id| n = Node.find(node_id) - n.user_id = user.id + n.changeset_id = changeset_id n.visible = false n.save_with_history! end - # FIXME needs more information passed in so that the changeset can be updated - self.user_id = user.id - - self.delete_with_history(user) + self.changeset_id = changeset_id + self.tags = [] + self.nds = [] + self.visible = false + self.save_with_history! end # Find nodes that belong to this way only diff --git a/config/initializers/potlatch.rb b/config/initializers/potlatch.rb index b98d60e1a..880947148 100644 --- a/config/initializers/potlatch.rb +++ b/config/initializers/potlatch.rb @@ -3,4 +3,4 @@ POTLATCH_PRESETS = Potlatch::Potlatch.get_presets() # Use SQL (faster) or Rails (more elegant) for common Potlatch reads # getway speedup is approximately x2, whichways approximately x7 -POTLATCH_USE_SQL = false +POTLATCH_USE_SQL = true diff --git a/config/routes.rb b/config/routes.rb index 91130b9b0..ddaaa5401 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -61,11 +61,10 @@ ActionController::Routing::Routes.draw do |map| map.connect "api/#{API_VERSION}/gpx/:id/details", :controller => 'trace', :action => 'api_details' map.connect "api/#{API_VERSION}/gpx/:id/data", :controller => 'trace', :action => 'api_data' - # Potlatch API + # AMF (ActionScript) API map.connect "api/#{API_VERSION}/amf/read", :controller =>'amf', :action =>'amf_read' map.connect "api/#{API_VERSION}/amf/write", :controller =>'amf', :action =>'amf_write' - map.connect "api/#{API_VERSION}/amf", :controller =>'amf', :action =>'talk' map.connect "api/#{API_VERSION}/swf/trackpoints", :controller =>'swf', :action =>'trackpoints' # Data browsing diff --git a/lib/potlatch.rb b/lib/potlatch.rb index cf8f5903d..ebafbce00 100644 --- a/lib/potlatch.rb +++ b/lib/potlatch.rb @@ -92,6 +92,10 @@ module Potlatch 0.chr+encodedouble(n) when 'NilClass' 5.chr + when 'TrueClass' + 0.chr+encodedouble(1) + when 'FalseClass' + 0.chr+encodedouble(0) else RAILS_DEFAULT_LOGGER.error("Unexpected Ruby type for AMF conversion: "+n.class.to_s) end diff --git a/public/potlatch/potlatch.swf b/public/potlatch/potlatch.swf index 0381868f00f36b23c82221c3c73ef4d620ad29da..afef53f8c01e649de32886e084f798ec46887c89 100755 GIT binary patch delta 44980 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 XNV`l9ypdlSn;HBaAD`TJBQO6yxznnE delta 44531 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 -- 2.39.5