source: XMLIO_V2/dev/dev_rv/src/data_treatment.cpp @ 141

Last change on this file since 141 was 141, checked in by hozdoba, 13 years ago

Mise à jour depuis un autre dépôt

File size: 4.0 KB
Line 
1#include "data_treatment.hpp"
2
3#include "attribute_template_impl.hpp"
4#include "object_template_impl.hpp"
5#include "group_template_impl.hpp"
6#include "object_factory_impl.hpp"
7
8namespace xmlioserver
9{
10   namespace data
11   {
12      /// ////////////////////// Définitions ////////////////////// ///
13      CDataTreatment::CDataTreatment (boost::shared_ptr<CContext> _ctxt)
14         : currentContext(_ctxt), enabledFiles()
15      { this->doTreatment(); }
16
17      CDataTreatment::~CDataTreatment(void)
18      { /* Ne rien faire de plus */ }
19
20      ///---------------------------------------------------------------
21
22      const boost::shared_ptr<CContext>
23         CDataTreatment::getCurrentContext(void) const
24      {
25         return (this->currentContext);
26      }
27
28      const std::vector<boost::shared_ptr<CFile> > &
29         CDataTreatment::getEnabledFiles (void) const
30      {
31         return (this->enabledFiles);
32      }
33
34      //----------------------------------------------------------------
35
36      void CDataTreatment::doTreatment(void)
37      {
38         // Résolution des héritages pour le context actuel.
39         //std::cout << "(Message temporaire) Résolution des héritages ..." << std::endl;
40         this->solveAllInheritance();
41
42         //Initialisation du vecteur 'enabledFiles' contenant la liste des fichiers à sortir.
43         //std::cout << "(Message temporaire) Initialisation du vecteur enabledFiles ..." << std::endl;
44         this->findEnabledFiles();
45
46         //Recherche des champs à sortir (enable à true + niveau de sortie correct)
47         // pour chaque fichier précédemment listé.
48         //std::cout << "(Message temporaire) Recherche des champs à sortir ..." << std::endl;
49         this->findAllEnabledFields();
50
51         // Résolution des références de grilles pour chacun des champs.
52         //std::cout << "(Message temporaire) Résolution des références de grilles ..." << std::endl;
53         this->solveAllGridRef();
54
55         // Traitement des opérations.
56         this->solveAllOperation();
57
58         //std::cout << "(Message temporaire) fin traitement sorties ..." << std::endl;
59      }
60
61      void CDataTreatment::findAllEnabledFields(void)
62      {
63         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
64            (void)this->enabledFiles[i]->getEnabledFields();
65      }
66
67      void CDataTreatment::solveAllGridRef(void)
68      {
69         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
70            this->enabledFiles[i]->solveEFGridRef();
71      }
72
73      void CDataTreatment::solveAllOperation(void)
74      {
75         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
76            this->enabledFiles[i]->solveEFOperation();
77      }
78
79      void CDataTreatment::solveAllInheritance(void) const
80      {
81         // Résolution des héritages descendants (càd des héritages de groupes)
82         // pour chacun des contextes.
83         this->currentContext->solveDescInheritance();
84
85         // Résolution des héritages par référence au niveau des fichiers.
86          const std::vector<boost::shared_ptr<CFile> > & allFiles
87            = CObjectFactory::GetObjectVector<CFile>();
88
89         for (unsigned int i = 0; i < allFiles.size(); i++)
90            allFiles[i]->solveFieldRefInheritance();
91      }
92
93      void CDataTreatment::findEnabledFiles(void)
94      {
95         const std::vector<boost::shared_ptr<CFile> > & allFiles
96            = CObjectFactory::GetObjectVector<CFile>();
97
98         for (unsigned int i = 0; i < allFiles.size(); i++)
99            if (!allFiles[i]->enabled.isEmpty()) // Si l'attribut 'enabled' est défini.
100               if (allFiles[i]->enabled.getValue()) // Si l'attribut 'enabled' est fixé à vrai.
101                  enabledFiles.push_back(allFiles[i]);
102
103         if (enabledFiles.size() == 0)
104            DEBUG(<<"Aucun fichier ne va être sorti dans le contexte nommé \""
105                  << this->currentContext->getId() << "\" !");
106      }
107
108      ///---------------------------------------------------------------
109
110   } // namespace data
111} // namespace xmlioserver
Note: See TracBrowser for help on using the repository browser.