Esempio n. 1
0
    def FMviderEtats(self, _garder_etat_initial):
        """
            Permet de supprimer l'ensemble des fichiers sauvegardés en local

        :param _garder_etat_initial: boolean, si vrai ne supprime pas les données relatives au premier etat
        """
        _log.Linfo("Début ## FileManager.FMviderEtats")

        _chemin = self.FM_chemin_local + "\\resultats simulation"

        if os.path.exists(_chemin):
            from Controleur.Statistiques import Statistiques
            _statistiques = Statistiques()
            _statistiques.SviderEtats(_garder_etat_initial)
            if _garder_etat_initial:
                for _fichier in os.listdir(_chemin):
                    _acces = os.path.join(_chemin, _fichier)
                    try:
                        if os.path.isfile(_acces) and "etat0" not in _fichier:
                            os.unlink(_acces)
                    except Exception as e:
                        print(e)

            else:
                shutil.rmtree(_chemin)
Esempio n. 2
0
    def FMchargerStatistiques(self):
        """
            Permet de charger en local depuis un fichier XML les informations contenues dans le singleton Statistique

            Les données sont stockées sous la forme suivante :

            <statistique>
                <nbretats>
                <nbrresultats>
                <etats>
                    <etat>
                        <numero_etat>
                        </numero_etat>
                        <niveau_de_batterie_moyen>
                        </niveau_de_batterie_moyen>
                        <nbr_actifs>
                        </nbr_actifs>
                        <cycle>
                        </cycle>
                        <moment_insertion>
                        </moment_insertion>
                    </etat>
                    <etat>
                        ...
                    </etat>
                    ...
                </etats>
                <resultats>
                    <resultat>
                        <intervalle></intervalle>
                        <dureedevie></dureedevie>
                    </resultat>
                <resultats>
            </statistique>
        """
        _log.Linfo("Début ## FileManager.FMchargerStatistiques")

        from Controleur.ReseauControleur import ReseauControleur

        _chemin = self.FM_chemin_local + "\\resultats simulation\\statistiques.xml"

        if os.path.exists(_chemin):
            from Controleur.Statistiques import Statistiques
            _statistiques = Statistiques()

            _racine = parse(_chemin)

            # Récupération des états
            for _etat in _racine.iter("etat"):
                _netat = int(next(_etat.iter("numero_etat")).text)
                _niveau_batterie_moyen = int(
                    next(_etat.iter("niveau_de_batterie_moyen")).text)
                _nbr_actifs = int(next(_etat.iter("nbr_actifs")).text)
                _cycle = int(next(_etat.iter("cycle")).text)
                _moment = int(next(_etat.iter("moment_insertion")).text)

                _statistiques.SajouterDonneesBrutes(_niveau_batterie_moyen,
                                                    _nbr_actifs, _cycle,
                                                    _moment)

            # Récupérations des résultats de performance de la simulation
            for _resultat in _racine.iter("resultat"):
                _intervalle = float(next(_resultat.iter("intervalle")).text)
                _dureedevie = float(next(_resultat.iter("duree")).text)

                _statistiques.SajouterResultat(_intervalle, _dureedevie)

            # Test si le nombre d'états détectés et celui donné correspondent
            _nbr_etats = int(next(_racine.iter("nbretats")).text)
            if _statistiques.S_nombre_etats != _nbr_etats:

                ReseauControleur.RCmessageInformation(
                    "Le nombre d'état en meta et réél ne correspondent pas. "
                    "Chargement des informations statistiques échoué")
                _statistiques.SviderEtats(False)

            # Test si le nombre de résultats détecté et celui donné correspondent
            _nbr_resultats = int(next(_racine.iter("nbrresultats")).text)
            if len(_statistiques.S_resultats) != _nbr_resultats:
                ReseauControleur.RCmessageInformation(
                    "Le nombre de résultats en meta et réél ne correspondent pas. "
                    "Chargement des informations statistiques échoué")
                _statistiques.SviderEtats(False)