# All conversions from sql arrays to objects (python dicts)

if __name__ == '__main__':
    print 'This file should be imported, not directly executed.'

def fromMachineSource(sql_array):
    return {
        'id': sql_array[0],
        'source': sql_array[1],
        'type': sql_array[2],
        'active': sql_array[3],
        'temp_name': sql_array[4],
        'idle_temp': sql_array[5],
        'gr_cal': sql_array[6],
        'sto': sql_array[7],
        'tip': sql_array[8],
        'tip_idle': sql_array[9],
        'base': sql_array[10],
        'base_idle': sql_array[11],
        'flux': sql_array[12],
        'valve': sql_array[13],
        'valve_idle': sql_array[14],
        'sub': sql_array[15],
        'sub_idle': sql_array[16],
        'crk': sql_array[17],
        'crk_idle': sql_array[18],
    }

def fromMachineGrowth(sql_array):
    if len(sql_array) == 70:
        return {
            'id': sql_array[0],
            'sampleID': sql_array[1],
            'grower': sql_array[33],
            'machine': sql_array[34],
            'date': str(sql_array[35]),
            'holderID': sql_array[36],
            'growthNum': sql_array[37],
            'substrate': sql_array[2],
            'substrateSize': sql_array[3],
            'GaTip': sql_array[4],
            'GaBase': sql_array[5],
            'GaFlux': sql_array[6],
            'InTip': sql_array[7],
            'InBase': sql_array[8],
            'InFlux': sql_array[9],
            'AlBase': sql_array[10],
            'AlFlux': sql_array[11],
            'Er': sql_array[12],
            'ErFlux': sql_array[13],
            'Si': sql_array[14],
            'Be': sql_array[15],
            'GaTe': sql_array[16],
            'AsSub': sql_array[17],
            'AsCrk': sql_array[18],
            'AsValve': sql_array[19],
            'AsFlux': sql_array[20],
            'SbSub': sql_array[21],
            'SbCrk': sql_array[22],
            'SbValve': sql_array[23],
            'SbFlux': sql_array[24],
            'NRF': sql_array[25],
            'ReflectedRF': sql_array[26],
            'NFlow': sql_array[27],
            'ForlinePressure': sql_array[28],
            'PyroDeox': sql_array[29],
            'TCDeox': sql_array[30],
            'PyroGrowth': sql_array[31],
            'TCGrowth': sql_array[32],
            'GCPressure': sql_array[38],
            'BFBackground': sql_array[39],
            'HVP': sql_array[40],
            'PyroOffset': sql_array[41],
            'Description': sql_array[42],
            'Ga_Tip': sql_array[43],
            'Ga_Base': sql_array[44],
            'Ga_Flux': sql_array[45],
            'In_Tip': sql_array[46],
            'In_Base': sql_array[47],
            'In_Flux': sql_array[48],
            'Al_Base': sql_array[49],
            'Al_Flux': sql_array[50],
            'La_Temp': sql_array[51],
            'La_Flux': sql_array[52],
            'Lu_Temp': sql_array[53],
            'Lu_Flux': sql_array[54],
            'As_Sub': sql_array[55],
            'As_Crk': sql_array[56],
            'Chamber_Background': sql_array[57],
            'BF_Background': sql_array[58],
            'Bi_Temp': sql_array[59],
            'Bi_Flux': sql_array[60],
            'Bi_Tip': sql_array[61],
            'Bi_Base': sql_array[62],
            'Gd_Temp': sql_array[63],
            'Gd_Flux': sql_array[64],
            'B_Temp': sql_array[65],
            'B_Flux': sql_array[66],
            'waferTracked': sql_array[67],
            'GaP_Temp': sql_array[68],
            'GaP_Flux': sql_array[69]
        }
    return {
        'id': sql_array[0],
        'sampleID': sql_array[1],
        'grower': sql_array[19],
        'machine': sql_array[20],
        'date': str(sql_array[21]),
        'holderID': sql_array[22],
        'growthNum': sql_array[23],
        'substrate': sql_array[2],
        'substrateSize': sql_array[3],
        'Si': sql_array[4],
        'Be': sql_array[5],
        'GaTe': sql_array[6],
        'AsValve': sql_array[7],
        'AsFlux': sql_array[8],
        'SbValve': sql_array[9],
        'SbFlux': sql_array[10],
        'NRF': sql_array[11],
        'ReflectedRF': sql_array[12],
        'NFlow': sql_array[13],
        'ForlinePressure': sql_array[14],
        'PyroDeox': sql_array[15],
        'TCDeox': sql_array[16],
        'PyroGrowth': sql_array[17],
        'TCGrowth': sql_array[18],
        'GCPressure': sql_array[24],
        'BFBackground': sql_array[25],
        'HVP': sql_array[26],
        'PyroOffset': sql_array[27],
        'Description': sql_array[28],
        'Ga_Tip': sql_array[29],
        'Ga_Base': sql_array[30],
        'Ga_Flux': sql_array[31],
        'In_Tip': sql_array[32],
        'In_Base': sql_array[33],
        'In_Flux': sql_array[34],
        'Al_Base': sql_array[35],
        'Al_Flux': sql_array[36],
        'Er_Temp': sql_array[37],
        'Er_Flux': sql_array[38],
        'As_Sub': sql_array[39],
        'As_Crk': sql_array[40],
        'Sb_Sub': sql_array[41],
        'Sb_Crk': sql_array[42],
        'Chamber_Background': sql_array[43],
        'BF_Background': sql_array[44],
        'Bi_Tip': sql_array[45],
        'Bi_Base': sql_array[46],
        'Bi_Flux': sql_array[47],
        'wafer_tracked': sql_array[48],
    }

def fromMachineRecipe(sql_array):
    return {
        'id': sql_array[0],
        'sampleID': sql_array[1],
        'type': sql_array[2],
        'recipe': sql_array[3],
    }

def fromMachineMaterial(sql_array):
    return {
        'id': sql_array[0],
        'SampleID': sql_array[1],
        'GrowthNum': sql_array[2],
        'SubstrateTemp': sql_array[3],
        'SubstrateTC': sql_array[4],
        'Name': sql_array[5],
        'Description': sql_array[6],
        'InShutter': sql_array[7],
        'GaShutter': sql_array[8],
        'AlShutter': sql_array[9],
        'ErShutter': sql_array[10],
        'SiShutter': sql_array[11],
        'SiTemp': sql_array[12],
        'BeShutter': sql_array[13],
        'BeTemp': sql_array[14],
        'GaTeShutter': sql_array[15],
        'GaTeTemp': sql_array[16],
        'AsShutter': sql_array[17],
        'AsValve': sql_array[18],
        'AsFlux': sql_array[19],
        'SbShutter': sql_array[20],
        'SbValve': sql_array[21],
        'SbFlux': sql_array[22],
        'NShutter': sql_array[23],
        'NFlow': sql_array[24],
        'NPower': sql_array[25],
        'ReflectedRF': sql_array[26],
        'ForlinePressure': sql_array[27],
        'NOptical': sql_array[28],
        'mat_name': sql_array[29],
        'mat_description': sql_array[30],
        'As_valve': sql_array[31],
        'As_flux': sql_array[32],
        'Si_temp': sql_array[33],
        'Be_temp': sql_array[34],
        'mat_pyro': sql_array[35],
        'mat_TC': sql_array[36],
        'mat_Rot': sql_array[37],
        'GaTe_temp': sql_array[38],
    }

def fromMember(sql_array):
    return {
        'id': sql_array[0],
        'name': sql_array[1],
        'active': bool(sql_array[2]),
        'grower': bool(sql_array[3]),
    }

def fromSubstrate(sql_array):
    return {
        'id': sql_array[0],
        'substrate': sql_array[1],
        'latticeConstant': sql_array[2],
        'size': sql_array[3],
    }

def fromWaferLog(sql_array):
    return {
        'id': sql_array[0],
        'timestamp': str(sql_array[1]),
        'wafersAdded': float(sql_array[2]),
        'notes': sql_array[3],
    }

def fromPublication(sql_array):
    return {
        'id': sql_array[0],
        'jabref_eid': sql_array[1],
        'typeID': sql_array[2],
        'citeKey': sql_array[3],
        'author': sql_array[4],
        'title': sql_array[5],
        'journal': sql_array[6],
        'year': sql_array[7],
        'volume': sql_array[8],
        'pages': sql_array[9],
        'number': sql_array[10],
        'month': sql_array[11],
        'eid': sql_array[12],
        'note': sql_array[13],
        'crossref': sql_array[14],
        'keywords': sql_array[15],
        'doi': sql_array[16],
        'url': sql_array[17],
        'file': sql_array[18],
        'citeseeurl': sql_array[19],
        'pdf': sql_array[20],
        'abstract': sql_array[21],
        'comment': sql_array[22],
        'owner': sql_array[23],
        'timestamp': sql_array[24],
        'review': sql_array[25],
        'search': sql_array[26],
        'publisher': sql_array[27],
        'editor': sql_array[28],
        'series': sql_array[29],
        'address': sql_array[30],
        'edition': sql_array[31],
        'howPublished': sql_array[32],
        'lastChecked': sql_array[33],
        'bookTitle': sql_array[34],
        'organization': sql_array[35],
        'language': sql_array[36],
        'chapter': sql_array[37],
        'type': sql_array[38],
        'school': sql_array[39],
        'nationality': sql_array[40],
        'yearFiled': sql_array[41],
        'assignee': sql_array[42],
        'day': sql_array[43],
        'dayFiled': sql_array[44],
        'monthFiled': sql_array[45],
        'institution': sql_array[46],
        'revison': sql_array[47]
    }

def fromPublicationType(sql_array):
    return {
        'id': sql_array[0],
        'label': sql_array[1],
        'author': sql_array[2],
        'title': sql_array[3],
        'journal': sql_array[4],
        'year': sql_array[5],
        'volume': sql_array[6],
        'pages': sql_array[7],
        'number': sql_array[8],
        'month': sql_array[9],
        'eid': sql_array[10],
        'note': sql_array[11],
        'crossref': sql_array[12],
        'keywords': sql_array[13],
        'doi': sql_array[14],
        'url': sql_array[15],
        'file': sql_array[16],
        'citeseeurl': sql_array[17],
        'pdf': sql_array[18],
        'abstract': sql_array[19],
        'comment': sql_array[20],
        'owner': sql_array[21],
        'timestamp': sql_array[22],
        'review': sql_array[23],
        'search': sql_array[24],
        'publisher': sql_array[25],
        'editor': sql_array[26],
        'series': sql_array[27],
        'address': sql_array[28],
        'edition': sql_array[29],
        'howPublished': sql_array[30],
        'lastChecked': sql_array[31],
        'bookTitle': sql_array[32],
        'organization': sql_array[33],
        'language': sql_array[34],
        'chapter': sql_array[35],
        'type': sql_array[36],
        'school': sql_array[37],
        'nationality': sql_array[38],
        'yearFiled': sql_array[39],
        'assignee': sql_array[40],
        'day': sql_array[41],
        'dayFiled': sql_array[42],
        'monthFiled': sql_array[43],
        'institution': sql_array[44],
        'revision': sql_array[45]
    }

def fromMaintenanceRecord(sql_array):
    return {
        'id': sql_array[0],
        'date':  sql_array[1],
        'system': sql_array[2],
        'p1': sql_array[3],
        'p2': sql_array[4],
        'summary': sql_array[5],
        'issues': sql_array[6],
        'future': sql_array[7],
        'notes': sql_array[8],
        'recorder': sql_array[9],
    }

def fromMaintenanceSource(sql_array):
    return {
        'record_id': sql_array[1],
        'date': sql_array[2],
        'source': sql_array[3],
        'amount': sql_array[4],
        'system': sql_array[5],
    }

def returnFirst(item):
    return item[0]

fMap = {
    'returnFirst': returnFirst,
    'fromMachineSource': fromMachineSource,
    'fromMachineGrowth': fromMachineGrowth,
    'fromMachineRecipe': fromMachineRecipe,
    'fromMachineMaterial': fromMachineMaterial,
    'fromMember': fromMember,
    'fromSubstrate': fromSubstrate,
    'fromWaferLog': fromWaferLog,
    'fromPublication': fromPublication,
    'fromPublicationType': fromPublicationType,
    'fromMaintenanceRecord': fromMaintenanceRecord,
    'fromMaintenanceSource': fromMaintenanceSource,
}
