#ifndef __ABSTRACT_DATA_TREATMENT__ #define __ABSTRACT_DATA_TREATMENT__ namespace XMLIOSERVER { class AbstractDataTreatment { public : const Context* getCurrentContext(void) const { return (currentContext); } const std::vector getEnabledFiles(void) const { return (enabledFiles); } void getEnabledFilesId(std::vector& _vect) const { for (unsigned int i = 0; i < enabledFiles.size(); i++) _vect.push_back(enabledFiles[i]->getId()); } void printEnabledFilesId(std::ostream& out = std::clog) const { out << "Liste des fichiers à sortir dans le contexte analysé nommé \"" << currentContext->getId() << "\"" << std::endl; std::vector __vect; getEnabledFilesId(__vect); for (unsigned int i = 0; i < __vect.size(); i++) out << __vect[i] << "|"; out << "fin" << std::endl; } virtual ~AbstractDataTreatment() { /* Ne rien faire de plus */ } protected : AbstractDataTreatment(Context* const _ctxt) : currentContext(_ctxt), enabledFiles() { // Résolution des héritages pour le context actuel (Context::ResolveInheritance() résoud les héritages pour tous les contextes). solveAllInheritance(); // Initialisation du vecteur 'enabledFiles' contenant la liste des fichiers à sortir. findEnabledFiles(); // Recherche des champs à sortir (enable à true + niveau de sortie correct) pour chaque fichier précédemment listé. findAllEnabledFields(); // Résolution des références de grilles pour chacun des champs. solveAllGridRef(); } private : void findAllEnabledFields(void)// <- ajouter attribut par défault ici. { for (unsigned int i = 0; i < enabledFiles.size(); i++) enabledFiles[i]->findEnabledFields(); } void solveAllGridRef(void) { } void solveAllInheritance(void) const { // Résolution des héritages descendants (càd des héritages de groupes) pour chacun des contextes. currentContext->resolveDescInheritance(); // Résolution des héritages par référence au niveau des fichiers. const std::vector& allFiles = CFile::GetCurrentListObject().getVector(); for (unsigned int i = 0; i < allFiles.size(); i++) allFiles[i]->resolveFieldRefInheritance(); } void findEnabledFiles(void) { const std::vector& allFiles = CFile::GetCurrentListObject().getVector(); for (unsigned int i = 0; i < allFiles.size(); i++) if (allFiles[i]->enabled.hasValue()) // Si l'attribut 'enabled' est défini. if ((bool)allFiles[i]->enabled) // Si l'attribut 'enabled' est fixé à vrai. enabledFiles.push_back ( allFiles[i] ); if (enabledFiles.size() == 0) WARNING("Aucun fichier ne va être sorti dans le contexte nommé \"" + currentContext->getId() + "\" !"); } Context* const currentContext; std::vector enabledFiles; // Liste des fichiers à créer dans un context donné. }; //class AbstractDataTreatment }// namespace XMLIOSERVER #endif //__ABSTRACT_DATA_TREATMENT__