# coding: utf-8

# Dependency: python-mysqldb

class safnarinn:
   def __init__(self, fname):
      # My imaginary constructor
      self.filename = fname
      self.sql = ""

   def mysqlQuery(self, table_name):
      import csv
      import MySQLdb
      import sys

      try:
         print "----------"
         print "Sýnishorn"
         print "----------"
         print "Nú eru sýnd sýnishorn úr flokkanum, vinsamlegast skrifaðu gangagrunnsheitið þitt á hvejrum flokki á þessu formi:"
         print "Dæmi: bilnr, tegund, argerd, eigandi"
         print "ATH: aðskilja flokka með kommu. Flokkar er row heiti í gangagrunni"
         print "----------"
         samplestream = open(self.filename)
         for f in range(0,3):
            print samplestream.readline()[:-1]
         
         rownames = raw_input()
         
         # Opnar csv-skrá til að lesa úr og breyta í mysql
         csvFile = open(self.filename)
         csvReader = csv.reader(csvFile, delimiter=',')
         
         #Listi notad til að þurfa ekki að concatta stóra strengi
         
         sqlL = []
         
         #hver lina verdur listi
         for row in csvReader:
            cellL = []
            
            #og rowid sjalft er listi med hverju csv value
            for cell in row:
               cellL.append("'" + cell.strip() + "'")
            row = ", ".join(cellL) + "\n)"
            sqlL.append(row)
			
         # herna gerist magic-id med kommurnar! (og allt annad) 
         self.sql = "INSERT INTO `" + table_name + "` ( \n" + rownames.strip() + "\n) \n VALUES (\n" + ", (\n".join(sqlL) + ";"
         return self.sql
		
      except Exception:
         print "Something screwed up!", sys.exc_info()

	#################################

   def toMysql(self, host, user, passwd, db):
      import sys
      import MySQLdb
      try:
         #connect to MySQL
         db = MySQLdb.connect(host, user, passwd, db, use_unicode=True, charset="utf8")

         #create a cursor
         cursor = db.cursor()

         #ex	ecute sql statement
         cursor.execute(self.sql)

         #ge	t result as tuple
         result = cursor.fetchall()

      except Exception:
         print "Something screwed up!", sys.exc_info()

   #################################
   
   def get_sql(self):
      return self.sql
   
   #################################

   def get_sampledata(self, filename):
      import csv
      import MySQLdb
      import sys
      
      try:
         # On windows, gaeti thurft ad nota b flag
         csvFile = open(self.filename)
         csvReader = csv.reader(csvFile, delimiter=',')
   
         return csvReader.next()

      except Exception:
         print "Something screwed up!", sys.exc_info()
	
   #################################
   
if __name__ == "__main__":
   import getpass
   
   print "----------"
   print "Gagnasafnarinn"
   print "----------"
   
   file = raw_input("Skráarheit til að safna gögnum úr: ")
   x = safnarinn(file)
   tname = raw_input("Sláðu inn nafnið á töfluni þinni: ")
   print "....er að converta í MySQL syntax, haltu þér fast!"
   pass
   x.mysqlQuery(tname)
   
   pass
   
   while True:
      print "Hvað villtu gera við gögnin?"
      print "[1] Skrifa í MySQL gangagrunn"
      print "[2] Skrifa í skrá"
      print "[3] Prenta út á skjá"
      print "[0] Ekki neitt"
      try:
         val = int(raw_input())
         break
      except ValueError:
         print "Sláðu inn tölu"
   
   if (val == 1):
      # Skrifa í MySQL
      host = raw_input("Sláðu inn hostname á MySQL servernum: ")
      user = raw_input("Sláðu inn notendanafn: ")
      passwd = getpass.getpass("Sláðu inn lykilorðið: ")
      db = raw_input("Sláðu inn heiti á gangagrunni: ")
      
      print "Skrifar í gagnagrunn....",
      pass
      x.toMysql(host, user, passwd, db)
      pass
      print "...done"
   
   if (val == 2):
      # Vista í skrá
      skranafn = raw_input("Hvert villtu vista?: ")
      skra = open(skranafn, 'w')
      skra.write(x.get_sql())
   
   if (val == 3):
      # Prenta út á skjá
      print x.get_sql()
