source: XMLIO_V2/dev/dev_rv/src/XMLIO/abstract_data_treatment.hpp @ 123

Last change on this file since 123 was 123, checked in by hozdoba, 14 years ago

Début de gestion des opérations sur les champs + quelques modifications

File size: 4.0 KB
Line 
1#ifndef __ABSTRACT_DATA_TREATMENT__
2#define __ABSTRACT_DATA_TREATMENT__
3
4namespace XMLIOSERVER
5{
6   class AbstractDataTreatment
7   {
8      public :
9
10         const Context* getCurrentContext(void) const
11         { return (currentContext); }
12
13         const std::vector<CFile*> getEnabledFiles(void) const
14         { return (enabledFiles); }
15
16         void getEnabledFilesId(std::vector<std::string>& _vect) const
17         {
18            for (unsigned int i = 0; i < enabledFiles.size(); i++)
19               _vect.push_back(enabledFiles[i]->getId());
20         }
21
22         void printEnabledFilesId(std::ostream& out = std::clog) const
23         {
24            out << "Liste des fichiers à sortir dans le contexte analysé nommé \"" << currentContext->getId() << "\"" << std::endl;
25            std::vector<std::string> __vect; getEnabledFilesId(__vect);
26            for (unsigned int i = 0; i < __vect.size(); i++)
27               out << __vect[i] << "|";
28            out << "fin" << std::endl;
29         }
30
31         virtual ~AbstractDataTreatment()
32         { /* Ne rien faire de plus */ }
33
34      protected :
35
36         AbstractDataTreatment(Context* const _ctxt) : currentContext(_ctxt), enabledFiles()
37         {
38            //std::cout << "(Message temporaire) Résolution des héritages ..." << std::endl;
39            // Résolution des héritages pour le context actuel (Context::ResolveInheritance() résoud les héritages pour tous les contextes).
40            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            findEnabledFiles();
45
46            // Recherche des champs à sortir (enable à true + niveau de sortie correct) pour chaque fichier précédemment listé.
47            //std::cout << "(Message temporaire) Recherche des champs à sortir ..." << std::endl;
48            findAllEnabledFields();
49
50            // Résolution des références de grilles pour chacun des champs.
51            //std::cout << "(Message temporaire) Résolution des références de grilles ..." << std::endl;
52            solveAllGridRef();
53
54            //std::cout << "(Message temporaire) fin traitement sorties ..." << std::endl;
55         }
56
57      private :
58
59         void findAllEnabledFields(void)// <- ajouter attribut par défault ici.
60         {
61            for (unsigned int i = 0; i < enabledFiles.size(); i++)
62               enabledFiles[i]->findEnabledFields();
63         }
64
65         void solveAllGridRef(void)
66         {
67            for (unsigned int i = 0; i < enabledFiles.size(); i++)
68               enabledFiles[i]->solveEFGridRef();
69         }
70
71         void solveAllInheritance(void) const
72         {
73            // Résolution des héritages descendants (càd des héritages de groupes) pour chacun des contextes.
74            currentContext->resolveDescInheritance();
75
76            // Résolution des héritages par référence au niveau des fichiers.
77            const std::vector<CFile*>& allFiles = CFile::GetCurrentListObject().getVector();
78            for (unsigned int i = 0; i < allFiles.size(); i++) allFiles[i]->resolveFieldRefInheritance();
79         }
80
81         void findEnabledFiles(void)
82         {
83            const std::vector<CFile*>& allFiles = CFile::GetCurrentListObject().getVector();
84            for (unsigned int i = 0; i < allFiles.size(); i++)
85               if (allFiles[i]->enabled.hasValue()) // Si l'attribut 'enabled' est défini.
86                  if ((bool)allFiles[i]->enabled) // Si l'attribut 'enabled' est fixé à vrai.
87                     enabledFiles.push_back ( allFiles[i] );
88            if (enabledFiles.size() == 0)
89               WARNING("Aucun fichier ne va être sorti dans le contexte nommé \"" + currentContext->getId() + "\" !");
90         }
91
92         Context* const currentContext;
93         std::vector<CFile*> enabledFiles; // Liste des fichiers à créer dans un context donné.
94
95   }; //class AbstractDataTreatment
96
97}// namespace XMLIOSERVER
98
99#endif //__ABSTRACT_DATA_TREATMENT__
Note: See TracBrowser for help on using the repository browser.