Index: XMLIO_V2/dev/dev_rv/src/XMLIO/file_group.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/XMLIO/file_group.hpp	(revision 106)
+++ XMLIO_V2/dev/dev_rv/src/XMLIO/file_group.hpp	(revision 107)
@@ -3,75 +3,35 @@
 
 namespace XMLIOSERVER
-{   
+{
    class FileGroup : public GroupTemplate<CFile, FileAttribut>
    {
       public:
-      
+
          FileGroup(void) : GroupTemplate<CFile, FileAttribut>()
-         {/* Ne rien faire de plus */}               
+         {/* Ne rien faire de plus */}
          FileGroup(const string& _id) : GroupTemplate<CFile, FileAttribut>(_id)
          {/* Ne rien faire de plus */}
-                         
-         const char* getName(void) const {return ("File_Group"); }  
-         
-         
-         /// TODO A remonter dans l'arbre des hÃ©ritages
-         friend ostream& operator<< (ostream& out, const FileGroup& c) 
-         {   
-            const AttributRegistrar &ar = c;
-            out << IncIndent << "<" << c.getName() << c.printId() << ar << ">" << std::endl;            
-            
-            // Ecriture des sous-groupes.
-            for(unsigned int i = 0; i < c.groupList.getVector().size() ; i++)
-               out << *((FileGroup*)c.groupList.getVector()[i])  << std::endl;
-               
-            // Ecriture des enfants.
-            for(unsigned int i = 0; i < c.childList.getVector().size() ; i++)
-               out << *((CFile*)c.childList.getVector()[i]) << std::endl;
-               
-            out << NIndent << "</" << c.getName()<< ">" << DecEndl;
-            
-            return (out);
-         }   
-         
-         /// TODO A remonter dans l'arbre des hÃ©ritages   
-         void resolveDescInheritance(const AttributRegistrar* _parent = 0)
+
+         void parse (XMLNode& _node, bool _withAttr = true)
          {
-            const vector<CFile*>&  childvect = childList.getVector();
-            const vector<GroupTemplate<CFile, FileAttribut>*>& groupvect = groupList.getVector();
-            
-            // On complÃšte les propres attributs du groupe.
-            if (_parent!= NULL) addAttributes(*_parent);
-            
-            for(unsigned int i = 0; i < childvect.size() ; i++)
-            { // on complÃšte les attributs des champs enfants.
-               childvect[i] -> addAttributes(*this);
-               if (childvect[i]->hasVirtualFieldGroup())
-                  childvect[i]->getVirtualFieldGroup()-> resolveDescInheritance();
-            }
-               
-            for(unsigned int i = 0; i < groupvect.size() ; i++)
-            // on complÃšte les attributs des groupes de champs enfants.
-               ((FileGroup*)groupvect[i]) -> resolveDescInheritance(this);
-         }
-         
-         void parse (XMLNode& _node)
-         {
-            string name = _node.getElementName();            
+            string name = _node.getElementName();
             THashAttributes attributes;
 
             /// PARSING GESTION DES ATTRIBUTS ///
-            _node.getAttributes(attributes);  
-            this->setAttributes(attributes);
-            
-            if (attributes.end() != attributes.find("src"))
-            { // Si une demande d'inclusion de fichier est trouvÃ©.
-               XMLNode _node_inc = getNodeIncludedFile(attributes["src"], name);
-               parse (_node_inc);
+            if (_withAttr)
+            {
+               _node.getAttributes(attributes);
+               this->setAttributes(attributes);
+
+               if (attributes.end() != attributes.find("src"))
+               { // Si une demande d'inclusion de fichier est trouvÃ©e.
+                  XMLNode _node_inc = getNodeIncludedFile(attributes["src"], name);
+                  parse (_node_inc);
+               }
+
+               attributes.clear();
             }
-            
-            attributes.clear();
-               
-            /// PARSING POUR GESION DES ENFANTS
+
+            /// PARSING POUR GESION DES ENFANTS ///
             if (!(_node.goToChildElement()))
                WARNING("Le groupe de fichier ne contient pas d'enfant !");
@@ -79,69 +39,33 @@
             {
                //////////////////////////////////////
-               do { // Parcours des contexts pour traitement. 
-                            
+               do { // Parcours des contexts pour traitement.
+
                   string name = _node.getElementName();
                   attributes.clear();
-                  _node.getAttributes(attributes);  
-                                 
-                  if (name.compare("file_group") == 0)
-                  { // Parsing pour les groupes de champs
-                  
-                     FileGroup* fgroup = NULL;
-                        
-                     if (attributes.end() != attributes.find("id"))
-                     {// Si l'identifiant est dÃ©fini.
-                        if (FileGroup::HasObject(attributes["id"]))
-                           WARNING("Dans le context actuel, un groupe de fichier du mÃªme nom existe dÃ©jÃ , le second fera rÃ©fÃ©rence au premier par dÃ©faut !"); // TODO TODO
-                        fgroup = (FileGroup*)(&createGroup(attributes["id"]));
-                        fgroup->parse(_node);
-                     }
-                     else
-                     {// Si l'identifiant n'est pas dÃ©fini.
-                        fgroup = (FileGroup*)(&createGroup());
-                        fgroup->parse(_node);
-                     }                        
-                     continue;
-                        
-                  }
-                  else if (name.compare("file") == 0)
-                  { // Parsing pour les champs.
-                  
-                     CFile* file = NULL;
-                  
-                     if (attributes.end() != attributes.find("id"))
-                     {// Si l'identifiant est dÃ©fini.
-                        if (CFile::HasObject(attributes["id"]))
-                           WARNING("Dans le context actuel, un fichier du mÃªme nom existe dÃ©jÃ , le second fera rÃ©fÃ©rence au premier par dÃ©faut !");  // TODO TODO
-                        file = (CFile*)(&createChild(attributes["id"]));
-                        file->parse(_node);
-                     }
-                     else
-                     {// Si l'identifiant n'est pas dÃ©fini.
-                        file = (CFile*)(&createChild());
-                        file->parse(_node);
-                     }                  
-                     continue;
-                  } 
-                  else
-                     WARNING("Un groupe de fichiers ne peut contenir qu'un fichier ou un autre groupe de fichiers !");
-                     
+                  _node.getAttributes(attributes);
+
+                  if (name.compare(FileGroup::GetName()) == 0)
+                  { createGroupAndParse<FileGroup>(attributes, _node); continue; }
+
+                  if (name.compare(CFile::GetName()) == 0)
+                  { createChildAndParse<CFile>(attributes, _node) ; continue; }
+
+                  WARNING("Un groupe de fichiers ne peut contenir qu'un fichier ou un autre groupe de fichiers !");
+
                } while (_node.goToNextElement());
                //////////////////////////////////////
-               _node.goToParentElement(); // Retour au parent  
+               _node.goToParentElement(); // Retour au parent
             }
-                                       
-            return;
          }
-         
-         virtual ~FileGroup(void) 
+
+         virtual ~FileGroup(void)
          {/* Ne rien faire de plus */ }
-                 
+
    }; // class FileGroup
-     
+
    typedef FileGroup FileDefinition ;
-   
+
 }; // namespace XMLIOSERVER
-   
+
 #endif // __FILE_GROUP__
 
