Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save vparihar01/5480489 to your computer and use it in GitHub Desktop.

Select an option

Save vparihar01/5480489 to your computer and use it in GitHub Desktop.
namespace :db do
desc "copying the xml country_region data to database of country"
task :country => :environment do
data = Nokogiri::XML.parse(File.read("#{Rails.root}/public/xml/country.xml"))
data.xpath("//countries/country").each do |node_country|
@country = Country.create(:code => node_country.xpath("./code").inner_text,:name => node_country.xpath("./name").inner_text)
node_country.xpath("./regions/region").each do |node_region|
@region = @country.regions.create(:code => node_region.xpath("./code").inner_text,:name => node_region.xpath("./name").inner_text)
node_region.xpath("./places/place").each do |node_place|
@place = @region.places.create(:code => node_place.xpath("./code").inner_text,:name => node_place.xpath("./name").inner_text)
node_place.xpath("./subplaces/subplace").each do |node_sub_place|
@region.places.create(:code => node_sub_place.xpath("./code").inner_text,:name => node_sub_place.xpath("./name").inner_text)
end
end
node_region.xpath("./subregions/subregion").each do |node_subregion|
@region = @country.regions.create(:code => node_subregion.xpath("./code").inner_text,:name => node_subregion.xpath("./name").inner_text)
node_subregion.xpath("./places/place").each do |node_place|
@place = @region.places.create(:code => node_place.xpath("./code").inner_text,:name => node_place.xpath("./name").inner_text)
node_place.xpath("./subplaces/subplace").each do |node_sub_place|
@region.places.create(:code => node_sub_place.xpath("./code").inner_text,:name => node_sub_place.xpath("./name").inner_text)
end
end
end
end
end
end
task :property_list => :environment do
data = Nokogiri::XML.parse(File.read("#{Rails.root}/public/xml/property.xml"))
data.xpath("//accommodations/accommodation").each do |node|
begin
Property.create(:code => node.xpath("./code").inner_text,:name => node.xpath("./name").inner_text,
:country => node.xpath("./country").inner_text,
:region => node.xpath("./region").inner_text,:place => node.xpath("./place").inner_text,
:property_type => node.xpath("./type").inner_text,:quality => node.xpath("./quality").inner_text,
:url => node.xpath("./url").inner_text,:picture1 => node.xpath("./picture1").inner_text,
:min_rental_price => node.xpath("./minrentalprice").inner_text,:max_rental_price => node.xpath("./maxrentalprice").inner_text,
:picture2 => node.xpath("./picture2").inner_text)
rescue
next
end
end
end
task :property_summary => :environment do
data = Nokogiri::XML.parse(File.read("#{Rails.root}/public/xml/accommodation.xml"))
data.xpath("//accommodations/accommodation").each do |node_accommodation|
begin
@property = Property.create(:code => node_accommodation.xpath("./code").inner_text,:name => node_accommodation.xpath("./name").inner_text,
:country => node_accommodation.xpath("./country").inner_text,
:region => node_accommodation.xpath("./region").inner_text,:place => node_accommodation.xpath("./place").inner_text,
:property_type => node_accommodation.xpath("./type").inner_text,:quality => node_accommodation.xpath("./quality").inner_text,
:picture1 => node_accommodation.search("./pictures/picture/url").first)
@accommodation = @property.build_property_summary
@accommodation.room = node_accommodation.xpath("./rooms").inner_text
@accommodation.bedroom = node_accommodation.xpath("./bedrooms").inner_text
@accommodation.bathroom = node_accommodation.xpath("./bathrooms").inner_text
@accommodation.save
puts "PropertySummary #{@accommodation}"
node_accommodation.xpath("./geodata").each do |node_geo|
@accommodation = @property.build_geo_data
@accommodation.latitude = node_geo.xpath("./lat").inner_text
@accommodation.longitude = node_geo.xpath("./lng").inner_text
@accommodation.save
puts "GeoData#{@accommodation}"
end
node_accommodation.xpath("./attributes/attribute").each do |node_att|
@accommodation = @property.amenities.new
@accommodation.name = node_att.content
# @accommodation.longitude = node_geo.xpath("./lng").inner_text
@accommodation.save
puts "Amenity#{@accommodation}"
end
node_accommodation.xpath("./pictures/picture").each do |node_pic|
@accommodation = @property.pictures.new
@accommodation.picture_type = node_pic.xpath("./type").inner_text
@accommodation.url = node_pic.xpath("./url").inner_text
@accommodation.season = node_pic.xpath("./season").inner_text
# @accommodation.longitude = node_geo.xpath("./lng").inner_text
@accommodation.save
puts "Picture#{@accommodation}"
end
node_accommodation.xpath("./themes/theme").each do |node_att|
@accommodation = @property.themes.new
@accommodation.name = node_att.content
# @accommodation.longitude = node_geo.xpath("./lng").inner_text
@accommodation.save
puts "Theme#{@accommodation}"
end
rescue Exception => e
puts e.backtrace
end
end
end
task :property_vacancy => :environment do
data = Nokogiri::XML.parse(File.read("#{Rails.root}/public/xml/vacancy.xml"))
data.xpath("//vacancies/vacancy").each do |node|
begin
@property = Property.find_by_code(node.xpath("./code").inner_text)
@vacant = node.xpath("./startday").inner_text.to_date
@availability = node.xpath("./availability").inner_text
@change_over = node.xpath("./changeover").inner_text
@min_stay = node.xpath("./minstay").inner_text
@flex_booking = node.xpath("./flexbooking").inner_text
puts @availability.length
0.upto(@availability.length) do |i|
@vacancy = @property.vacancies.new
puts node.xpath("./startday").inner_text.to_date + i.day
@vacancy.vacancy_date = @vacant.to_date + i.day
@vacancy.availability = @availability[i..i].to_s
@vacancy.change_over = @change_over[i..i].to_s
@vacancy.min_stay = @min_stay[i..i].to_s
@vacancy.flex_booking = @flex_booking[i..i].to_s
@vacancy.save
end
rescue Exception => e
puts e.backtrace
end
end
end
task :property_text => :environment do
data = Nokogiri::XML.parse(File.read("#{Rails.root}/public/xml/insidedescription_en.xml"))
data.xpath("//descriptions/description").each do |node|
begin
@property = Property.find_by_code(node.xpath("./code").inner_text)
@property.property_summary.update_attributes(:inside_description => node.xpath("./text").inner_text)
rescue Exception => e
puts e.backtrace
end
end
end
task :property_price => :environment do
data = Nokogiri::XML.parse(File.read("#{Rails.root}/public/xml/dailyprice_3535_gbp.xml"))
data.xpath("//prices/price").each do |node|
begin
@property = Property.find_by_code(node.xpath("./code").inner_text)
@property.update_attributes(:min_rental_price => node.xpath("./rentalprice").inner_text)
rescue Exception => e
puts e.backtrace
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment