Main Page | Class Hierarchy | Class List | File List | Class Members

bugdb.h

00001 //-< BUGDB.H  >------------------------------------------------------*--------*
00002 // GigaBASE                  Version 1.0         (c) 1999  GARRET    *     ?  *
00003 // (Main Memory Database Management System)                          *   /\|  *
00004 //                                                                   *  /  \  *
00005 //                          Created:     27-Mar-99    K.A. Knizhnik  * / [] \ *
00006 //                          Last update: 25-Jun-99    K.A. Knizhnik  * GARRET *
00007 //-------------------------------------------------------------------*--------*
00008 // Example of database Web publishing: Bug Tracking Database
00009 //-------------------------------------------------------------------*--------*
00010 
00011 #ifndef __BUGDB_H__
00012 #define __BUGDB_H__
00013 
00014 #include "gigabase.h"
00015 #include "wwwapi.h"
00016 
00017 USE_GIGABASE_NAMESPACE
00018 
00019 class Bug;
00020 class Software;
00021 
00022 class Person
00023 {
00024   public:
00025     char const* sName;
00026     char const* sEmailAddress;
00027     char const* sPassword;
00028 
00029     dbArray<dbReference<Software> >  setUsedSoftware;
00030     dbArray<dbReference<Software> >  setProjects;
00031     dbArray<dbReference<Bug> >       setReportedBugs;
00032     dbArray<dbReference<Bug> >       setAssignedBugs;
00033 
00034     enum PersonStatus {
00035         isUser,
00036         isEngineer,
00037         isAdministrator
00038     };
00039     int1 status;
00040     int4 nReports;
00041 
00042     void print(WWWconnection& con) const;
00043 
00044     bool checkPassword(char const* password) const {
00045         return strcmp(sPassword, password) == 0;
00046     }
00047 
00048 
00049     TYPE_DESCRIPTOR((KEY(sName, INDEXED),
00050                      FIELD(sEmailAddress),
00051                      FIELD(sPassword),
00052                      RELATION(setReportedBugs, pReportedBy),
00053                      RELATION(setAssignedBugs, pAssignedTo),
00054                      RELATION(setUsedSoftware, setUsers),
00055                      RELATION(setProjects, setEngineers),
00056                      FIELD(status),FIELD(nReports)));
00057 };
00058 
00059 
00060 class Version
00061 {
00062   public:
00063     char const* sLabel;
00064     int         majorVersionNumber;
00065     int         minorVersionNumber;
00066     dbDateTime  released;
00067     char const* sComment;
00068     dbArray<dbReference<Bug> > setBugs;
00069     dbReference<Version>       pNext;
00070 
00071     int   getVersion() const;
00072     char* getVersionString() const;
00073 
00074     void print(WWWconnection& con) const;
00075 
00076     TYPE_DESCRIPTOR((FIELD(sLabel),
00077                      FIELD(majorVersionNumber),
00078                      FIELD(minorVersionNumber),
00079                      FIELD(released),
00080                      FIELD(sComment),
00081                      RELATION(setBugs, pVersion),
00082                      FIELD(pNext)));
00083 };
00084 
00085 
00086 class Software
00087 {
00088   public:
00089     char const*                   sName;
00090     dbArray<dbReference<Person> > setEngineers;
00091     dbArray<dbReference<Person> > setUsers;
00092     dbReference<Version>          pVersions;
00093     dbArray<dbReference<Bug> >    setBugs;
00094 
00095     int     getLastVersion() const;
00096     char*   getLastVersionString() const;
00097 
00098     void print(WWWconnection& con) const;
00099 
00100     TYPE_DESCRIPTOR((KEY(sName, INDEXED),
00101                      FIELD(pVersions),
00102                      RELATION(setEngineers, setProjects),
00103                      RELATION(setUsers, setUsedSoftware),
00104                      RELATION(setBugs, pSoftware)));
00105 };
00106 
00107 enum eCATEGORY
00108 {
00109     CATEGORY_NOT_SPECIFIED,
00110     CRASH,
00111     PROGRAM_HANGS,
00112     UI_DISPLAY,
00113     UI_BEHAVIOR,
00114     CALCULATION,
00115     ERROR_HANDLING,
00116     PERFORMANCE,
00117     LICENSING,
00118     INSTALLATION,
00119     DOCUMENTATION,
00120     ENHANCEMENT,
00121     HOW_TO_QUESTION
00122 };
00123 
00124 extern char const* const eCATEGORY_STRING[];
00125 
00126 enum eSTATUS
00127 {
00128     STATUS_NOT_SPECIFIED,
00129     STATUS_OPENED,
00130     STATUS_FIXED,
00131     STATUS_CLOSED,
00132     STATUS_PENDING_Person,
00133     STATUS_PENDING_USER,
00134     STATUS_POSTPONED,
00135     STATUS_IRREPRODUCIBLE,
00136     STATUS_WITHDRAWN,
00137     STATUS_AS_DESIGNED
00138 };
00139 
00140 extern char const* const eSTATUS_STRING[];
00141 
00142 enum eFIXING_PRIORITY
00143 {
00144     PRIORITY_NOT_SPECIFIED,
00145     FIX_IMMEDIATELY,
00146     FIX_BEFORE_NEXT_BUILD_RELEASE,
00147     FIX_BEFORE_NEXT_MINOR_RELEASE,
00148     FIX_BEFORE_NEXT_MAJOR_RELEASE,
00149     FIX_IF_POSSIBLE,
00150     OPTIONAL
00151 };
00152 
00153 extern char const* const eFIXING_PRIORITY_STRING[];
00154 
00155 enum eSEVERITY
00156 {
00157     SEVERITY_NOT_SPECIFIED,
00158     FATAL,
00159     SERIOUS,
00160     MINOR,
00161     LAST_SEVERITY
00162 };
00163 
00164 extern char const* const eSEVERITY_STRING[];
00165 
00166 
00167 class Report
00168 {
00169   public:
00170     char const*         sDescription;
00171     dbReference<Person> pAuthor;
00172     dbReference<Report> pNext;
00173     dbDateTime          creationDate;
00174     int1                status;
00175     int4                index;
00176 
00177     void print(WWWconnection& con) const;
00178 
00179     TYPE_DESCRIPTOR((FIELD(sDescription),FIELD(pAuthor),FIELD(pNext),FIELD(creationDate),
00180                      FIELD(status),FIELD(index)));
00181 };
00182 
00183 
00184 class Bug
00185 {
00186   public:
00187     char const* sOneLineSummary;
00188     char const* sHardwarePlatform;
00189     char const* sOperatingSystem;
00190 
00191     int4        bugId;
00192     int4        nReports;
00193     int1        eCategory;
00194     int1        eFixingPriority;
00195     int1        eSeverity;
00196 
00197     dbReference<Person>        pReportedBy;
00198     dbReference<Person>        pAssignedTo;
00199 
00200     dbReference<Software>      pSoftware;
00201     dbReference<Version>       pVersion;
00202 
00203     dbReference<Report>        pReportHistory;
00204     dbReference<Report>        pWorkArounds;
00205     dbArray<dbReference<Bug> > setSimilarBugs;
00206 
00207     void print(WWWconnection& con) const;
00208 
00209     TYPE_DESCRIPTOR((KEY(bugId, HASHED),
00210                      FIELD(sOneLineSummary),
00211                      FIELD(sOperatingSystem),
00212                      FIELD(sHardwarePlatform),
00213                      RELATION(pSoftware, setBugs),
00214                      RELATION(pVersion, setBugs),
00215                      RELATION(pReportedBy, setReportedBugs),
00216                      RELATION(pAssignedTo, setAssignedBugs),
00217                      RELATION(setSimilarBugs, setSimilarBugs),
00218                      FIELD(nReports),
00219                      FIELD(eCategory),
00220                      FIELD(eFixingPriority),
00221                      FIELD(eSeverity),
00222                      FIELD(pReportHistory),
00223                      FIELD(pWorkArounds)));
00224 };
00225 
00226 
00227 class BugSequencer {
00228   public:
00229     int                nBugs;
00230 
00231     TYPE_DESCRIPTOR((FIELD(nBugs)));
00232 };
00233 
00234 #endif

Generated on Thu Nov 24 23:14:29 2005 for GigaBASE by doxygen 1.3.5