# -*- coding: utf-8 -*-
#"""
#Created on Fri May 27 06:02:33 2016
#
#@author: Corey Pace
#"""
import MySQLdb
import datetime
import sys

string = str(sys.argv[1])


def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass
 
    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass
 
    return False

# def submitraw(linein):
#     db = MySQLdb.connect(host="a2nlmysql13plsk.secureserver.net",port=3306,user="coreypace",passwd="Aud12rey",db="corey_pace_Inventory")
#     cursor=db.cursor()
#     cursor.execute("""INSERT into Shivvers_Raw (Shivvers_Raw_Data) VALUES (%s)""",(linein[:-1]))
#     db.commit()

def parsexfer(linein):
    n, T, A = linein.split("=")
    NO_TRANSFERRED = T[1:4]
    NO_AVE = A[1:5]
    return NO_TRANSFERRED, NO_AVE

def parseerr(linein):
    P, M, n = linein.split(",")
    var, P_ERR = P.split("=")
    var, M_ERR = M.split("=")
    return P_ERR, M_ERR
    

def parsedata(linein):
    MOIST, TEMP, AVE, MACH, TGT, ACT = linein.split()
    return MOIST, TEMP[:-1], AVE, MACH, TGT, ACT

def parseline(linein):
    var, val = linein.split("=")
    return var[:-1],val[1:-1]
        

def pickline(line): 
    
    global FAN_SHUTDOWN_TIME, TARGET_TEMP_SETTING, MAX_TEMP_SETTING
    global PLENUM_TEMP_CAL, GRAIN_TYPE, MOISTURE_CAL, NUMBER_OF_SAMPLES_IN_AVE
    global CONT_FLOW_DELAY, MACHINE_TYPE, SWEEP_OFF_TIME, P_ERR, M_ERR
    global MOIST, TEMP, AVE, MACH, TGT, ACT, TRANSFER_MOISTURE, GRAIN_TEMP
    global MIN_TEMP_SETTING, NO_TRANSFERRED, NO_AVE 

    if line[:3] == "FAN":
        var, val = parseline(line)
        FAN_SHUTDOWN_TIME = val
        
    elif line[:3] == "TAR":
        var, val = parseline(line)
        TARGET_TEMP_SETTING = val
        
    elif line[:3] == "MAX":
        var, val = parseline(line)
        MAX_TEMP_SETTING = val

    elif line[:3] == "MIN":
        var, val = parseline(line)
        MIN_TEMP_SETTING = val
        
    elif line[:3] == "PLE":
        var, val = parseline(line)
        PLENUM_TEMP_CAL = val
        
    elif line[:10] == "GRAIN TYPE":
        var, val = parseline(line)
        GRAIN_TYPE = val

    elif line[:3] == "TRA":
        var, val = parseline(line)
        TRANSFER_MOISTURE = val

    elif line[:10] == "GRAIN TEMP":
        var, val = parseline(line)
        GRAIN_TEMP = val

    elif line[:3] == "MOI":
        var, val = parseline(line)
        MOISTURE_CAL = val
        
    elif line[:3] == "NUM":
        var, val = parseline(line)
        NUMBER_OF_SAMPLES_IN_AVE = val
        
    elif line[:3] == "CON":
        var, val = parseline(line)
        CONT_FLOW_DELAY = val
        
    elif line[:3] == "MAC":
        var, val = parseline(line)
        MACHINE_TYPE = val
        
    elif line[:3] == "SWE":
        var, val = parseline(line)
        SWEEP_OFF_TIME = val

    elif line[3:13] == "TRANSFERRED":
        NO_TRANSFERRED, NO_AVE = parsexfer(line)
        
    elif line[:6] == " P-ERR":
        P_ERR, M_ERR = parseerr(line)

    elif line == '\n':
        var=1
        
    elif line[:4] == "SHIV":
        var=1
        
    elif line[:4] == "TIME":
        var=1
    
    elif line[:4] == "DATE":
        var=1
    
    elif is_number(line[3:6]):
       MOIST, TEMP, AVE, MACH, TGT, ACT = parsedata(line[3:])
       times = (datetime.datetime.now() - datetime.timedelta(hours = 5)).strftime('%H:%M')
       date = datetime.datetime.now() - datetime.timedelta(hours = 5)
       db = MySQLdb.connect(host="a2nlmysql13plsk.secureserver.net",port=3306,user="coreypace",passwd="Aud12rey",db="corey_pace_Inventory")
       cursor=db.cursor()
       cursor.execute("""INSERT into Shivvers_Data (Date, TIME, MOIST, TEMP, AVE, MACH, TGT, ACT) VALUES(%s,%s,%s,%s,%s,%s,%s,%s)""",(date, times, MOIST,TEMP,AVE,MACH,TGT,ACT))
       db.commit()
    
    else:
        print("error in input line")


        
# #Main

# pickline('0 12.7 105F 12.8 ON  120 128')
pickline(string)

# line = " "
# ser=serial.Serial(port='/dev/ttyUSB0',baudrate=1200,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,bytesize=serial.EIGHTBITS,timeout=1)
# global SETTINGS       

# ## Open the file with read only permit
# #f = open('C:\Users\cpace\Documents\\input.txt')
# ## Read the first line 
# while True:
#     while line != "":
#         line = ser.readline()
#         if line != "":
# #		if line[:4] != "DATE":
#  #           		pickline(line)
#   #               	if is_number(line[2:5]):
#    #                  		times=datetime.datetime.now().strftime('%H:%M')
#     #                 		line = times + " " + line[2:]
#      #            	if line[:6] == " P-ERR" or line[:6] == " M-ERR":
#       #               		line = line[2:]
#     		# print(line)
# 		submitraw(line)
#     line = " "

