source: XMLIO_V2/dev/dev_rv/context.hpp @ 95

Last change on this file since 95 was 95, checked in by hozdoba, 14 years ago
File size: 4.0 KB
Line 
1#ifndef __CONTEXT__
2#define __CONTEXT__
3
4     
5namespace XMLIOSERVER
6{ 
7   class Context : public ObjectTemplate<Context>
8   {
9      public:
10           
11         Context(void) : ObjectTemplate<Context>()
12         {/* Ne rien faire de plus */}               
13         Context(const string& _id) : ObjectTemplate<Context>(_id)
14         {/* Ne rien faire de plus */}
15         
16         static void SetCurrentContext(const string& id)
17         {
18            // On modifie le context courrant pour tout les ObjectTemplate
19            FieldGroup::SetContext(id);
20            Field::SetContext(id);
21         }
22         
23         void parse (XMLNode& _node)
24         {
25            THashAttributes attributes;
26           
27            /// PARSING POUR GESTION DES ENFANTS
28            if (_node.getElementName().compare(string("context")))
29               WARNING("Le noeud est mal nommé mais sera traité comme un context !");
30           
31            if (!(_node.goToChildElement()))
32               WARNING("Le context ne contient pas d'enfant !"); 
33            else
34            {
35               //////////////////////////////////////
36              do { // Parcours des contexts pour traitement.       
37                           
38                  string name = _node.getElementName();
39                  attributes.clear();
40                  _node.getAttributes(attributes);   
41                 
42                  if (attributes.end() != attributes.find("id"))
43                  { WARNING("Le noeud de définition possÚde un identifiant, ce dernier ne sera pas pris en compte lors du traitement !"); }
44                 
45                  if (name.compare("field_definition") == 0)
46                  { // Parsing pour la définition des champs.
47                 
48                     if (FieldDefinition::HasObject("field_definition")) 
49                        WARNING("Le context possÚde déjà un noeud de définition de champs, le dernier défini complétera le premier !");
50                     
51                     fieldDef = (FieldDefinition*)&FieldDefinition::CreateObject("field_definition"); // << Conversion possible car la classe Field n'a pas de propriétés.
52                     fieldDef->parse(_node);
53
54                     continue;
55                  }
56                  else if (name.compare("file_definition") == 0)
57                  { // Parsing pour la définition des fichiers.                 
58                     INFO("Le parsing des définitions de fichiers n'est pas encore implémenté");
59                  } 
60                  else if (name.compare("axis_definition") == 0)
61                  { // Parsing pour la définition des axes.
62                     INFO("Le parsing des définitions d'axes n'est pas encore implémenté");
63                  }
64                  else if (name.compare("grid_definition") == 0)
65                  { // Parsing pour la définition des grilles.
66                     INFO("Le parsing des définitions de grilles n'est pas encore implémenté");
67                  } 
68                  else
69                     WARNING("La définition est invalide, seules les champs, grilles, axes et fichiers peuvent être définis !");
70                     
71                     
72                  // Traitement file, grid et axis à compléter.
73               } while (_node.goToNextElement());
74               //////////////////////////////////////
75               _node.goToParentElement(); // Retour au parent
76            }
77           
78            return;
79         }
80         
81         virtual const char* getName(void) const {return ("Context"); }
82         
83         FieldDefinition* getFieldDefinition(void) { return (this->fieldDef); }
84                 
85         ~Context()
86         {/* Ne rien faire de plus pour le moment */ }
87         
88      protected:
89     
90      private:
91     
92         FieldDefinition*  fieldDef;
93         /*FileDefinition* fileDef;
94         AxisDefinition*   axisDef;
95         GridDefinition*   gridDef;*/
96
97     
98   }; //class Context
99}// namespace XMLIOSERVER
100
101#endif  // __CONTEXT__
Note: See TracBrowser for help on using the repository browser.