# -*- coding: utf-8 -*-

# *******************************************************************
# programme de calcul de moyenne des valeurs stockées dans un fichier
# *******************************************************************

from echantillon import Echantillon


class CampagneEchantillon:
    """ modelise une campagne de dosage d'une sbustance
        a partir d'un fichier """

    def __init__(self, filename):

        # ouverture du fichier
        fechantillons = open(filename, "r")

        # lecture du nom de la substance mesurée dans la campagne de mesures
        self.substance_ = fechantillons.readline().rstrip()

        # lecture de la suite du fichier pour constuire la liste des échantillons
        self.listeEchantillons_ = []
        # parcours du fichier
        for ligne in fechantillons:
            # creation d'un objet Echantillon
            # transformation de la valeur lue comme une chaîne de caractères
            # en un reel
            nom, poids, poidsX = ligne.split()
            echan = Echantillon(nom, float(poids), float(poidsX))
            self.listeEchantillons_.append(echan)

        # fermeture du fichier
        fechantillons.close()
        
    def __repr__(self):
        
        txt = self.sbstance_ + "\n"
        
        for ech in self.listeEchantillons_:
            
            txt += str(ech)
            
        return txt

    def moyenne(self):
        """

        :return:    la moyenne des teneurs de la substance dans les échantillons de la campagne de dosages
        """

        somTeneur = 0.  # somme des teneurs pour chaque échantillon

        for echan in self.listeEchantillons_:
            somTeneur += echan.getTeneur()

        moy = somTeneur / len(self.listeEchantillons_)
        return moy

    def filtre(self, limite, filename):
        """

        :param limite:  limite du pourcentage recherché
        :return:        liste des eaux qui dépasse ce pourcentage
        """

        fichier_filtre = open(filename, 'w', encoding = 'utf-8')

        for echan in self.listeEchantillons_:
            
            if echan.getTeneur() > limite:
                fichier_filtre.write(str(echan))

        fichier_filtre.close()



if __name__ == "__main__":
    campagne = CampagneEchantillon("teneur_calcium_eaux.txt")
    teneurMoyenne = campagne.moyenne()
    print(teneurMoyenne)
    campagne.filtre(12, 'calcium_filtre.txt')
