Page principale | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier | Pages associées

DataBase.h

Aller à la documentation de ce fichier.
00001 /*! \file DataBase.h
00002     \brief Gestion base de données.
00003 
00004     Gestionnaire de base de données avec notion de tables et entrée indexé et libélé. \n
00005 
00006     Fichiers (dans le repertoire "DB"): \n
00007 
00008     DB.sys  : info sur la base \n
00009         int     Id          : Id d'une table \n
00010         int     Size        : taille du nom de la table \n
00011         char    Name[Size]  : nom de la table \n
00012         ... jusqu'a la fin pour chaque table \n
00013 
00014     x.dbt   : une table (x = Id de la table) \n
00015         int     NbData      : nombre de Data dans une entrée \n
00016         int     Size        : taille du nom du label \n
00017         char    Name[Size]  : nom du label \n
00018         ... NbData fois pour chaque label\n
00019         int     NbEntry     : nombre d'entrée \n
00020         int     Id          : Id de l'entrée \n
00021         int     Size        : taille de la data \n
00022         char    Data[Size]  : la data \n
00023         ... jusqu'a la fin pour chaque entrée \n
00024 
00025     \author     aerith (www.aerith.fr)
00026     \version    1.0
00027     \date       01/11/2007
00028 */
00029 
00030 #ifndef INCLUDE_RSRC_DB
00031 #define INCLUDE_RSRC_DB
00032 
00033 #include    "../Surcouche/SurcoucheFichier.h"
00034 #include    "DataBaseTable.h"
00035 
00036 
00037 //! Gestion base de données.
00038 /*! Gestionnaire de base de données avec notion de tables et entrée indexer.
00039 */
00040 class DataBase
00041 {
00042 private :
00043     char                            Repertoire[DB_REPERTOIRE];  /*!< Repertoire où ce trouve la base.       */
00044     int                             NbTable;        /*!< Nombre de tables.                                  */
00045     std::vector<DataBaseTable *>    Tables;         /*!< Chaque lignes est une table.                       */
00046     int                             IdMax;          /*!< Contien l'Id maximum des tables.                   */
00047     static int                      DBInstance;     /*!< Compte les instance de la class.                   */
00048     static MUTEX                    DBMutex;        /*!< Utiliser des que l'on accede au fichier "DB.sys".  */
00049 
00050     //! Charge le fichier des tables.
00051     /*! Charge le fichier "DB.sys", d'info sur les tables et la base en memoire.
00052         \return code d'erreur
00053     */
00054     int     LoadTables();
00055 
00056     //! Sauve le fichier des tables.
00057     /*! Sauve le fichier "DB.sys", d'info sur les tables et la base.
00058         \return code d'erreur
00059     */
00060     int     SaveTables();
00061 
00062 public  :
00063     /*! Charge la base en mémoire.
00064         \param pRepertoire repertoire de la base.
00065     */
00066     DataBase(char *pRepertoire);
00067 
00068     /*! Libere proprement la mémoire, ne sauve pas la base dans les fichiers.
00069         \sa SaveBase().
00070     */
00071     ~DataBase();
00072 
00073     //! Ajoute une table.
00074     /*! Ajoute une table avec un nouvelle Id.
00075         \param pName nom de la table
00076         \param iNbData nombre de champs de la table.
00077         \return Code d'erreur.
00078         \sa DelTable(), GetTable(), GetTableNo() et GetNbTable().
00079     */
00080     int     AddTable(char *pName, int iNbData);
00081 
00082     //! Supprime une table.
00083     /*! Supprime la table ayant l'id \a iId.
00084         \param iId Id de la table.
00085         \return Code d'erreur.
00086         \sa AddTable(), GetTable(), GetTableNo() et GetNbTable().
00087     */
00088     int     DelTable(int iId);
00089 
00090     //! Supprime une table.
00091     /*! Supprime la table de nom \a pName.
00092         \param pName nom de la table.
00093         \return Code d'erreur
00094         \sa AddTable(), GetTable(), GetTableNo() et GetNbTable().
00095     */
00096     inline int      DelTable(char *pName)
00097     {
00098         for(int i = 0; i < NbTable; i++)
00099         {
00100             if(!strcmp(Tables[i]->GetName(), pName))
00101                 return DelTable(Tables[i]->GetId());
00102         }
00103 
00104         return 0;
00105     };
00106 
00107     //! Retourne une table par son Id.
00108     /*! Permet l'acces à la table ayant l'id \a iId.
00109         \param iId Id de la table.
00110         \return pointeur sur la class de la table.
00111         \sa AddTable(), DelTable(), GetTable(), GetTableNo() et GetNbTable().
00112     */
00113     inline DataBaseTable    *GetTable(int iId)
00114     {
00115         for(int i = 0; i < NbTable; i++)
00116         {
00117             if(Tables[i]->GetId() == iId)
00118                 return Tables[i];
00119         }
00120 
00121         return NULL;
00122     };
00123 
00124     //! Retourne une table par son nom.
00125     /*! Permet l'acces à la table ayant le nom \a pName.
00126         \param pName nom de la table.
00127         \return pointeur sur la class de la table.
00128         \sa AddTable(), DelTable(), GetTable(), GetTableNo() et GetNbTable().
00129     */
00130     inline DataBaseTable    *GetTable(char *pName)
00131     {
00132         for(int i = 0; i < NbTable; i++)
00133         {
00134             if(!strcmp(Tables[i]->GetName(), pName))
00135                 return Tables[i];
00136         }
00137 
00138         return NULL;
00139     };
00140 
00141     //! Retourne une table par sa position.
00142     /*! Permet l'acces à la table étant à la position \a iPos.
00143         \param iPos position de la table.
00144         \return pointeur sur la class de la table.
00145         \sa AddTable(), DelTable(), GetTable() et GetNbTable().
00146     */
00147     inline DataBaseTable    *GetTableNo(int iPos)
00148     {
00149         if(iPos < NbTable)
00150             return Tables[iPos];
00151 
00152         return NULL;
00153     };
00154 
00155     //! Retourne le nombre de table.
00156     /*! Retourne le nombre de table contenu dans la base.
00157         \return nombre de table dans la base.
00158         \sa AddTable(), DelTable(), GetTable() et GetTableNo().
00159     */
00160     inline int      GetNbTable()
00161     {
00162         return NbTable;
00163     };
00164 
00165     //! Retourne le nombre d'instance.
00166     /*! Retourne le nombre d'instance de la class (pour multitache).
00167         \return nombre d'instance de la class.
00168     */
00169     inline int      GetNbInstance()
00170     {
00171         return DBInstance;
00172     };
00173 
00174     //! Retourne le repertoire de la base.
00175     /*! Retourne le repertoire \a Repertoire de la base.
00176         \return pointeur sur \a Repertoire.
00177     */
00178     inline char     *GetBaseDir()
00179     {
00180         return Repertoire;
00181     };
00182 
00183     //! Sauve la base.
00184     /*! Sauve toute la base dans les fichiers "DB.sys" et "x.dbt".
00185         \return code d'erreur
00186     */
00187     int     SaveBase();
00188 };
00189 
00190 #endif
00191 

Généré le Thu Jun 12 09:12:29 2008 pour A.I.F. par  doxygen 1.3.9.1