require 'rubygems'
require 'sqlite3'
require 'csv'
require 'nokogiri'

output_db = "./longnames.db"
puts "Creating db file '#{output_db}'" unless File.exist?(output_db)
@db = SQLite3::Database.new(output_db)
@db.execute('DROP TABLE IF EXISTS longnames;')

@db.execute('CREATE TABLE IF NOT EXISTS longnames ' \
            '(id INTEGER PRIMARY KEY AUTOINCREMENT, ' \
            ' osm_id BIGINT, ' \
            ' type VARCHAR(8), ' \
            ' orig_name VARCHAR(256), ' \
            ' cur_name VARCHAR(256), ' \
            ' user_name VARCHAR(256), ' \
            ' timestamp VARCHAR(40));')

obj_line = ''
CSV.open("longnames.csv", "w") do |csv|
  doc = Nokogiri::XML(ARGF)
  doc.xpath('/osm/*').each do |elem|
    name = nil
    elem.xpath("tag[@k='name']").each do |tag|
      name = tag.attr('v')
    end
    fields = Hash[elem.attributes.map { |name, attr| [name, attr.value] }]

    puts "#{name.length} #{name}"

    # CSV and SQLite output
    csv << fields.values
    @db.execute('INSERT INTO longnames ' \
         '(osm_id, type, orig_name, cur_name, user_name, timestamp) ' \
         'VALUES (?, ?, ?, ?, ?, ?);',
            [ fields['id'],
              elem.name,
              name,
              name,
              fields['user'],
              fields['timestamp'] ] )
  end
end

