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)
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)