X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/e4d7b3ee6631e1c5aee23ebe52adb32c716f5cbd..226c41be692452129227f30d67f2d847e510015c:/app/models/way.rb?ds=sidebyside diff --git a/app/models/way.rb b/app/models/way.rb index f9d36be93..8206eecb3 100644 --- a/app/models/way.rb +++ b/app/models/way.rb @@ -25,6 +25,9 @@ class Way < ActiveRecord::Base validates_numericality_of :id, :on => :update, :integer_only => true validates_associated :changeset + scope :visible, where(:visible => true) + scope :invisible, where(:visible => false) + # Read in xml as text and return it's Way object representation def self.from_xml(xml, create=false) begin @@ -34,6 +37,7 @@ class Way < ActiveRecord::Base doc.find('//osm/way').each do |pt| return Way.from_xml_node(pt, create) end + raise OSM::APIBadXMLError.new("node", xml, "XML doesn't contain an osm/way element.") rescue LibXML::XML::Error, ArgumentError => ex raise OSM::APIBadXMLError.new("way", xml, ex.message) end @@ -61,6 +65,8 @@ class Way < ActiveRecord::Base way.visible = true pt.find('tag').each do |tag| + raise OSM::APIBadXMLError.new("way", pt, "tag is missing key") if tag['k'].nil? + raise OSM::APIBadXMLError.new("way", pt, "tag is missing value") if tag['v'].nil? way.add_tag_keyval(tag['k'], tag['v']) end @@ -231,8 +237,8 @@ class Way < ActiveRecord::Base def preconditions_ok?(old_nodes = []) return false if self.nds.empty? - if self.nds.length > APP_CONFIG['max_number_of_way_nodes'] - raise OSM::APITooManyWayNodesError.new(self.nds.length, APP_CONFIG['max_number_of_way_nodes']) + if self.nds.length > MAX_NUMBER_OF_WAY_NODES + raise OSM::APITooManyWayNodesError.new(self.id, self.nds.length, MAX_NUMBER_OF_WAY_NODES) end # check only the new nodes, for efficiency - old nodes having been checked last time and can't