00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
#include "structureparser.h"
00019
00020
00021 StructureParser::StructureParser (
BugList * Parent)
00022 {
00023
m_pParent = Parent;
00024 }
00025
00026
00027 bool StructureParser::startDocument()
00028 {
00029
00030
m_pParent->
pMainBugList->clear ();
00031
00032
return TRUE;
00033 }
00034
00035
00036 bool StructureParser::endDocument()
00037 {
00038
return TRUE;
00039 }
00040
00041
00042 bool StructureParser::startElement (
const QString & namespaceURI,
const QString & localName,
const QString & qName,
const QXmlAttributes & atts)
00043 {
00044
QString Tag;
00045
00046
00047 Tag = qName.upper ();
00048
00049
00050
if (Tag ==
"BUG")
00051 {
00052
00053
CurrentBug =
new Bug;
00054 }
00055
00056
00057
if (Tag ==
"BUGID")
00058 {
00059
State =
stateBugID;
00060 }
00061
else if (Tag ==
"DESCRIPTION")
00062 {
00063
State =
stateDescription;
00064 }
00065
else if (Tag ==
"SEVERITY")
00066 {
00067
State =
stateSeverity;
00068 }
00069
else if (Tag ==
"CLASS")
00070 {
00071
State =
stateBugClass;
00072 }
00073
else if (Tag ==
"LOCATION")
00074 {
00075
State =
stateLocation;
00076 }
00077
else if (Tag ==
"REPORTUSERNAME")
00078 {
00079
State =
stateReportUserName;
00080 }
00081
else if (Tag ==
"REPORTEMAIL")
00082 {
00083
State =
stateReportEMail;
00084 }
00085
else if (Tag ==
"REPORTDATE")
00086 {
00087
State =
stateReportDate;
00088 }
00089
else if (Tag ==
"FIXED")
00090 {
00091
State =
stateFixed;
00092 }
00093
else if (Tag ==
"FIXDATE")
00094 {
00095
State =
stateFixDate;
00096 }
00097
else if (Tag ==
"PACKAGE")
00098 {
00099
State =
statePackage;
00100 }
00101
else if (Tag ==
"VERSIONNO")
00102 {
00103
State =
stateVersionNo;
00104 }
00105
else if (Tag ==
"NOTES")
00106 {
00107
State =
stateNotes;
00108 }
00109
else if (Tag ==
"WORKAROUND")
00110 {
00111
State =
stateWorkaround;
00112 }
00113
else if (Tag ==
"FIXSCHEDULED")
00114 {
00115
State =
stateFixScheduled;
00116 }
00117
else if (Tag ==
"ASSIGNEDTO")
00118 {
00119
State =
stateAssignedTo;
00120 }
00121
else if (Tag ==
"ASSIGNEDDATE")
00122 {
00123
State =
stateAssignedDate;
00124 }
00125
else if (Tag ==
"ASSIGNEDEMAIL")
00126 {
00127
State =
stateAssignedEMail;
00128 }
00129
else if (Tag ==
"REPEAT")
00130 {
00131
State =
stateRepeat;
00132 }
00133
else if (Tag ==
"SYSINFO")
00134 {
00135
State =
stateSysInfo;
00136 }
00137
else if (Tag ==
"PRIORITY")
00138 {
00139
State =
statePriority;
00140 }
00141
else if (Tag ==
"DEVELOPER")
00142 {
00143
State =
stateDeveloperID;
00144 }
00145
else if (Tag ==
"INITIALS")
00146 {
00147
State =
stateInitials;
00148 }
00149
else if (Tag ==
"COUNTER")
00150 {
00151
State =
stateCounter;
00152 }
00153
else
00154 {
00155
State =
stateUnknown;
00156 }
00157
00158
return TRUE;
00159 }
00160
00161
00162 bool StructureParser::characters (
const QString & ch )
00163 {
00164
switch (
State)
00165 {
00166
case stateBugID:
00167
CurrentBug->
BugID = ch;
00168
break;
00169
00170
case stateDescription:
00171
CurrentBug->
Description = ch;
00172
break;
00173
00174
case stateSeverity:
00175
CurrentBug->
Severity = ch;
00176
break;
00177
00178
case stateBugClass:
00179
CurrentBug->
BugClass = ch;
00180
break;
00181
00182
case stateLocation:
00183
CurrentBug->
Location = ch;
00184
break;
00185
00186
case stateReportUserName:
00187
CurrentBug->
ReportUserName = ch;
00188
break;
00189
00190
case stateReportEMail:
00191
CurrentBug->
ReportEMail = ch;
00192
break;
00193
00194
case statePackage:
00195
CurrentBug->
Package = ch;
00196
break;
00197
00198
case stateVersionNo:
00199
CurrentBug->
VersionNo = ch;
00200
break;
00201
00202
case stateNotes:
00203
CurrentBug->
Notes = ch;
00204
break;
00205
00206
case stateWorkaround:
00207
CurrentBug->
Workaround = ch;
00208
break;
00209
00210
case stateAssignedTo:
00211
CurrentBug->
AssignedTo = ch;
00212
break;
00213
00214
case stateAssignedEMail:
00215
CurrentBug->
AssignedEMail = ch;
00216
break;
00217
00218
case stateRepeat:
00219
CurrentBug->
Repeat = ch;
00220
break;
00221
00222
case stateSysInfo:
00223
CurrentBug->
SysInfo = ch;
00224
break;
00225
00226
case statePriority:
00227
CurrentBug->
Priority = ch;
00228
break;
00229
00230
case stateDeveloperID:
00231
00232
CurrentInitials =
"";
00233
CurrentCount = 1;
00234
break;
00235
00236
case stateInitials:
00237
CurrentInitials = ch;
00238
break;
00239
00240
case stateCounter:
00241
CurrentCount = ch.toInt ();
00242
break;
00243
00244
case stateFixed:
00245
if (ch.toInt () == 0)
00246
CurrentBug->Fixed = FALSE;
00247
else
00248
CurrentBug->Fixed = TRUE;
00249
break;
00250
00251
case stateReportDate:
00252
00253
CurrentBug->
ReportDate.setYMD (ch.right (4).toInt (),ch.mid (ch.find (
'/') + 1,ch.findRev (
'/') - ch.find (
'/') - 1).toInt (),ch.left (ch.find (
'/')).toInt ());
00254
break;
00255
00256
case stateFixDate:
00257
00258
CurrentBug->FixDate.setYMD (ch.right (4).toInt (),ch.mid (ch.find (
'/') + 1,ch.findRev (
'/') - ch.find (
'/') - 1).toInt (),ch.left (ch.find (
'/')).toInt ());
00259
break;
00260
00261
case stateAssignedDate:
00262
00263
CurrentBug->
AssignedDate.setYMD (ch.right (4).toInt (),ch.mid (ch.find (
'/') + 1,ch.findRev (
'/') - ch.find (
'/') - 1).toInt (),ch.left (ch.find (
'/')).toInt ());
00264
break;
00265
00266
case stateFixScheduled:
00267
00268
CurrentBug->
FixScheduled.setYMD (ch.right (4).toInt (),ch.mid (ch.find (
'/') + 1,ch.findRev (
'/') - ch.find (
'/') - 1).toInt (),ch.left (ch.find (
'/')).toInt ());
00269
break;
00270
00271
case stateUnknown:
00272
00273
break;
00274 }
00275
00276
return TRUE;
00277 }
00278
00279
00280 bool StructureParser::endElement (
const QString & namespaceURI,
const QString & localName,
const QString & qName)
00281 {
00282
QString Tag;
00283
00284
00285 Tag = qName.upper ();
00286
00287
00288
if (Tag ==
"BUG")
00289 {
00290
m_pParent->
InsertBug (
CurrentBug);
00291 }
00292
else if (Tag ==
"DEVELOPER")
00293 {
00294
AddDeveloper ();
00295 }
00296
00297
return TRUE;
00298 }
00299
00300
00301 void StructureParser::AddDeveloper ()
00302 {
00303
BugCounter * pBugCounter;
00304
00305
00306 pBugCounter =
new BugCounter;
00307 pBugCounter->
Initials =
CurrentInitials;
00308 pBugCounter->
LastBugNumber =
CurrentCount;
00309
m_pParent->
Developers.insert (pBugCounter->
Initials, pBugCounter);
00310 }