import numpy as np
import os
import xml.etree.ElementTree as ET
from xml.dom import minidom


def getAcceptance(Directory):
    configDirectory = Directory + "/Configuration"
    configList = os.listdir(configDirectory)
    for files in configList:
        if files.endswith('.xml'):
            xmlFile = files

    tree = ET.parse(configDirectory + "/" + xmlFile)
    root = tree.getroot()

    # print root.tag
    # print root[0][7][1][2][1][1].tag
    # print ""

    Subject_Data = root.find('Subject_Data')
    # print " ", Subject_Data.tag
    USarray = Subject_Data.find('Ultrasound_File_Path_Array')
    # print "  ", USarray.tag
    TDMSList = []
    acceptanceList = []
    for clusters in USarray:
        # UScluster = USarray.find('Ultrasound_File_Path_Cluster')
        # print "   ", clusters.tag
        TDMSarray = clusters.find('TDMS_File_Path_Array')
        # print "    ", TDMSarray.tag
        location = clusters.find('Location_File_Abbreviation')
        # print "    ", location.text, TDMSarray.attrib['dim']
        dim = int(TDMSarray.attrib['dim'][1])
        cnt = 1
        for arrays in TDMSarray:
            # print "     ", arrays.tag

            # TDMSfilename = arrays.find('Data_File_Path')
            # # runNumber = arrays.find('Run_Number')
            # acceptance = arrays.find('Accepted')
            # TDMSList.append(TDMSfilename.text[-31:])
            # # print "       Run Number: ", runNumber.text
            # if np.array(cnt) == dim:
            #     if acceptance.text == 'TRUE':
            #         # print "       Accepted"
            #         acceptanceList.append(1)
            #     else:
            #         # print "       Rejected"
            #         acceptanceList.append(0)
            # else:
            #     acceptanceList.append(0)
            # cnt += 1
            try:

                TDMSfilename = arrays.find('Data_File_Path')
                # runNumber = arrays.find('Run_Number')
                acceptance = arrays.find('Accepted')
                TDMSList.append(TDMSfilename.text[-30:])
                # name = os.path.split(TDMSfilename.text)
                # path = os.path.split(name[-1])
                # print path
                # print "       Run Number: ", runNumber.text
                if np.array(cnt) == dim:
                    if acceptance.text == 'TRUE':
                        # print "       Accepted"
                        acceptanceList.append(1)
                    else:
                        # print "       Rejected"
                        acceptanceList.append(0)
                else:
                    acceptanceList.append(0)
                cnt += 1
            except TypeError: #when partial data collection occurs
                continue


    trial_acceptance_list = sorted(zip(TDMSList ,acceptanceList))

    # for items, things in trial_acceptance_list:
    #     print items, things

    Total_Accepted = sum(acceptanceList)
    # print "Total Accepted: ", Total_Accepted
    return trial_acceptance_list, Total_Accepted



# Directory = "../MULTIS_trials/MULTIS037-1_associated"  # change Directory for each subject
#
# trial_acceptance_list, Total_Accepted = getAcceptance(Directory)
# print trial_acceptance_list[0][:]