00001
00002
00003
00004
00005
00006
00007
00008
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