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

bugdb.h

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

Generated on Thu Feb 12 13:04:48 2004 for FastDB by doxygen 1.3.5