from AWK.mitglied import Mitglied
class SVereinDatei(object):
    '''
    classdocs
    '''

    def __init__(self, datei_name):
        '''
        Constructor
        '''
        self.datei_name = datei_name
        self.mitglieder = {}
        self.get_merker = 0
        
        dh = open(datei_name)
        line = dh.readline().rstrip()
        export_header = line.split(";")
        
        sv_pn_spalte = -1
        
        i = 0
        for kopf in export_header:
            if kopf[0] == '"':
                kopf = kopf[1:-1]
            if kopf == 'Mitglieds-Nr':
                sv_pn_spalte = i
            i += 1
        
        if sv_pn_spalte == -1:
            raise RuntimeError("S-Verein-Export enthält keine Partnernummer")

        for line in dh:
            data = line.rstrip().split(";")
            pn = data[sv_pn_spalte]
            if len(pn) == 0:
                print("Diese Zeile (export) hat keine Migliedsnummer: ", line)
            else:
                if pn[0] == '"':
                    pn = pn[1:-1]
                pn = int(pn)
                self.mitglieder[pn] = Mitglied(data)
        # setze zusätzliche Mitgliedschaften im Stamm
        for mnr in self.mitglieder:
            if self.mitglieder[mnr].stammnummer > 0:
                self.mitglieder[self.mitglieder[mnr].stammnummer].add_weitere_mitgliedschaft(mnr)

    def get(self, mnr = None):
        if mnr:
            return self.mitglieder[mnr]
        if self.get_merker == 0:
            for m in self.mitglieder:
                self.get_merker = m
                return self.mitglieder[m]
        return_next = False
        for m in self.mitglieder:
            if return_next:
                self.get_merker = m
                return self.mitglieder[m]
            if m == self.get_merker:
                return_next = True
        return None
