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

Last change on this file since 206 was 206, checked in by hozdoba, 10 years ago
File size: 4.2 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         // Nettoyage de l'arborescence
62         CContext::CleanTree();
63
64         //std::cout << "(Message temporaire) fin traitement sorties ..." << std::endl;
65      }
66
67      void CDataTreatment::findAllEnabledFields(void)
68      {
69         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
70            (void)this->enabledFiles[i]->getEnabledFields();
71      }
72
73      void CDataTreatment::solveAllGridRef(void)
74      {
75         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
76            this->enabledFiles[i]->solveEFGridRef();
77      }
78
79      void CDataTreatment::solveAllOperation(void)
80      {
81         for (unsigned int i = 0; i < this->enabledFiles.size(); i++)
82            this->enabledFiles[i]->solveEFOperation();
83      }
84
85      void CDataTreatment::solveAllInheritance(void) const
86      {
87         // Résolution des héritages descendants (càd des héritages de groupes)
88         // pour chacun des contextes.
89         this->currentContext->solveDescInheritance();
90
91         // Résolution des héritages par référence au niveau des fichiers.
92          const std::vector<boost::shared_ptr<CFile> > & allFiles
93            = CObjectFactory::GetObjectVector<CFile>();
94
95         for (unsigned int i = 0; i < allFiles.size(); i++)
96            allFiles[i]->solveFieldRefInheritance();
97      }
98
99      void CDataTreatment::findEnabledFiles(void)
100      {
101         const std::vector<boost::shared_ptr<CFile> > & allFiles
102            = CObjectFactory::GetObjectVector<CFile>();
103
104         for (unsigned int i = 0; i < allFiles.size(); i++)
105            if (!allFiles[i]->enabled.isEmpty()) // Si l'attribut 'enabled' est défini.
106               if (allFiles[i]->enabled.getValue()) // Si l'attribut 'enabled' est fixé à vrai.
107                  enabledFiles.push_back(allFiles[i]);
108
109         if (enabledFiles.size() == 0)
110            DEBUG(<<"Aucun fichier ne va être sorti dans le contexte nommé \""
111                  << this->currentContext->getId() << "\" !");
112      }
113
114      ///---------------------------------------------------------------
115
116   } // namespace data
117} // namespace xmlioserver
Note: See TracBrowser for help on using the repository browser.