#include "data_treatment.hpp" #include "attribute_template_impl.hpp" #include "object_template_impl.hpp" #include "group_template_impl.hpp" #include "object_factory_impl.hpp" namespace xmlioserver { namespace data { /// ////////////////////// Définitions ////////////////////// /// CDataTreatment::CDataTreatment (boost::shared_ptr _ctxt) : currentContext(_ctxt), enabledFiles() { this->doTreatment(); } CDataTreatment::~CDataTreatment(void) { /* Ne rien faire de plus */ } ///--------------------------------------------------------------- const boost::shared_ptr CDataTreatment::getCurrentContext(void) const { return (this->currentContext); } const std::vector > & CDataTreatment::getEnabledFiles (void) const { return (this->enabledFiles); } //---------------------------------------------------------------- void CDataTreatment::doTreatment(void) { // Résolution des héritages pour le context actuel. //std::cout << "(Message temporaire) Résolution des héritages ..." << std::endl; this->solveAllInheritance(); //Initialisation du vecteur 'enabledFiles' contenant la liste des fichiers à sortir. //std::cout << "(Message temporaire) Initialisation du vecteur enabledFiles ..." << std::endl; this->findEnabledFiles(); //Recherche des champs à sortir (enable à true + niveau de sortie correct) // pour chaque fichier précédemment listé. //std::cout << "(Message temporaire) Recherche des champs à sortir ..." << std::endl; this->findAllEnabledFields(); // Résolution des références de grilles pour chacun des champs. //std::cout << "(Message temporaire) Résolution des références de grilles ..." << std::endl; this->solveAllGridRef(); // Traitement des opérations. this->solveAllOperation(); //std::cout << "(Message temporaire) fin traitement sorties ..." << std::endl; } void CDataTreatment::findAllEnabledFields(void) { for (unsigned int i = 0; i < this->enabledFiles.size(); i++) (void)this->enabledFiles[i]->getEnabledFields(); } void CDataTreatment::solveAllGridRef(void) { for (unsigned int i = 0; i < this->enabledFiles.size(); i++) this->enabledFiles[i]->solveEFGridRef(); } void CDataTreatment::solveAllOperation(void) { for (unsigned int i = 0; i < this->enabledFiles.size(); i++) this->enabledFiles[i]->solveEFOperation(); } void CDataTreatment::solveAllInheritance(void) const { // Résolution des héritages descendants (càd des héritages de groupes) // pour chacun des contextes. this->currentContext->solveDescInheritance(); // Résolution des héritages par référence au niveau des fichiers. const std::vector > & allFiles = CObjectFactory::GetObjectVector(); for (unsigned int i = 0; i < allFiles.size(); i++) allFiles[i]->solveFieldRefInheritance(); } void CDataTreatment::findEnabledFiles(void) { const std::vector > & allFiles = CObjectFactory::GetObjectVector(); for (unsigned int i = 0; i < allFiles.size(); i++) if (!allFiles[i]->enabled.isEmpty()) // Si l'attribut 'enabled' est défini. if (allFiles[i]->enabled.getValue()) // Si l'attribut 'enabled' est fixé à vrai. enabledFiles.push_back(allFiles[i]); if (enabledFiles.size() == 0) DEBUG(<<"Aucun fichier ne va être sorti dans le contexte nommé \"" << this->currentContext->getId() << "\" !"); } ///--------------------------------------------------------------- } // namespace data } // namespace xmlioserver