-
- def to_xml
- doc = OSM::API.new.get_xml_doc
- doc.root << to_xml_node()
- return doc
- end
-
- def to_xml_node(user_display_name_cache = nil)
- el1 = XML::Node.new 'changeset'
- el1['id'] = self.id.to_s
-
- user_display_name_cache = {} if user_display_name_cache.nil?
-
- if user_display_name_cache and user_display_name_cache.key?(self.user_id)
- # use the cache if available
- elsif self.user.data_public?
- user_display_name_cache[self.user_id] = self.user.display_name
- else
- user_display_name_cache[self.user_id] = nil
- end
-
- el1['user'] = user_display_name_cache[self.user_id] unless user_display_name_cache[self.user_id].nil?
- el1['uid'] = self.user_id.to_s if self.user.data_public?
-
- self.tags.each do |k,v|
- el2 = XML::Node.new('tag')
- el2['k'] = k.to_s
- el2['v'] = v.to_s
- el1 << el2
- end
-
- el1['created_at'] = self.created_at.xmlschema
- el1['closed_at'] = self.closed_at.xmlschema unless is_open?
- el1['open'] = is_open?.to_s
-
- el1['min_lon'] = (bbox[0].to_f / GeoRecord::SCALE).to_s unless bbox[0].nil?
- el1['min_lat'] = (bbox[1].to_f / GeoRecord::SCALE).to_s unless bbox[1].nil?
- el1['max_lon'] = (bbox[2].to_f / GeoRecord::SCALE).to_s unless bbox[2].nil?
- el1['max_lat'] = (bbox[3].to_f / GeoRecord::SCALE).to_s unless bbox[3].nil?
-
- # NOTE: changesets don't include the XML of the changes within them,
- # they are just structures for tagging. to get the osmChange of a
- # changeset, see the download method of the controller.
-
- return el1
- end