source: XMLIO_V2/dev/dev_rv/src/xmlio/data_treatment.cpp @ 188

Last change on this file since 188 was 188, checked in by hozdoba, 10 years ago
File size: 4.1 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 du calendrier
39         this->currentContext->solveCalendar();         
40         
41         // Résolution des héritages pour le context actuel.
42         //std::cout << "(Message temporaire) Résolution des héritages ..." << std::endl;
43         this->solveAllInheritance();
44
45         //Initialisation du vecteur 'enabledFiles' contenant la liste des fichiers à sortir.
46         //std::cout << "(Message temporaire) Initialisation du vecteur enabledFiles ..." << std::endl;
47         this->findEnabledFiles();
48
49         //Recherche des champs à sortir (enable à true + niveau de sortie correct)
50         // pour chaque fichier précédemment listé.
51         //std::cout << "(Message temporaire) Recherche des champs à sortir ..." << std::endl;
52         this->findAllEnabledFields();
53
54         // Résolution des références de grilles pour chacun des champs.
55         //std::cout << "(Message temporaire) Résolution des références de grilles ..." << std::endl;
56         this->solveAllGridRef();
57
58         // Traitement des opérations.
59         this->solveAllOperation();
60
61         //std::cout << "(Message temporaire) fin traitement sorties ..." << std::endl;
62      }
63
64      void CDataTreatment::findAllEnabledFields(void)
65      {
66         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
67            (void)this->enabledFiles[i]->getEnabledFields();
68      }
69
70      void CDataTreatment::solveAllGridRef(void)
71      {
72         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
73            this->enabledFiles[i]->solveEFGridRef();
74      }
75
76      void CDataTreatment::solveAllOperation(void)
77      {
78         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
79            this->enabledFiles[i]->solveEFOperation();
80      }
81
82      void CDataTreatment::solveAllInheritance(void) const
83      {
84         // Résolution des héritages descendants (càd des héritages de groupes)
85         // pour chacun des contextes.
86         this->currentContext->solveDescInheritance();
87
88         // Résolution des héritages par référence au niveau des fichiers.
89          const std::vector<boost::shared_ptr<CFile> > & allFiles
90            = CObjectFactory::GetObjectVector<CFile>();
91
92         for (unsigned int i = 0; i < allFiles.size(); i++)
93            allFiles[i]->solveFieldRefInheritance();
94      }
95
96      void CDataTreatment::findEnabledFiles(void)
97      {
98         const std::vector<boost::shared_ptr<CFile> > & allFiles
99            = CObjectFactory::GetObjectVector<CFile>();
100
101         for (unsigned int i = 0; i < allFiles.size(); i++)
102            if (!allFiles[i]->enabled.isEmpty()) // Si l'attribut 'enabled' est défini.
103               if (allFiles[i]->enabled.getValue()) // Si l'attribut 'enabled' est fixé à vrai.
104                  enabledFiles.push_back(allFiles[i]);
105
106         if (enabledFiles.size() == 0)
107            DEBUG(<<"Aucun fichier ne va être sorti dans le contexte nommé \""
108                  << this->currentContext->getId() << "\" !");
109      }
110
111      ///---------------------------------------------------------------
112
113   } // namespace data
114} // namespace xmlioserver
Note: See TracBrowser for help on using the repository browser.