⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bugdb.cpp

📁 FastDb是高效的内存数据库系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    }    initialVersion = products->pVersions;    if (versions.select(qVersion) == 0) {         error(con, "No such software product version");        return true;    }        Bug bug;    bug.bugId = atoi(con.get("bug"));    bug.sOneLineSummary = con.get("summary");    bug.eCategory = atoi(con.get("category"));    bug.eFixingPriority = atoi(con.get("priority"));    bug.eSeverity = atoi(con.get("severity"));    bug.sOperatingSystem = con.get("os");    bug.sHardwarePlatform = con.get("platform");    bug.pReportedBy = persons.currentId();    bug.pAssignedTo = null;    bug.pSoftware = products.currentId();    bug.pVersion = versions.currentId();    bug.nReports = 0;    insert(bug);    con.addPair("action", "Select");    return bugForm(con);}bool bugForm(WWWconnection& con){    int i;    char* bugStr = con.get("bug");     bugId = atoi(bugStr);    if (bugs.select(qBug) == 0) {         error(con, "No bug was selected");        return true;    }    char* myself = con.get("myself");    if (strcmp(con.get("action"), "Remove") == 0) {         dbReference<Bug> pBug = bugs.currentId();        bugId = atoi(con.get("relatedbug"));        if (bugs.select(qBug) == 0) {             error(con, "No such bug");            return true;        }        int i = rindex(bugs->setSimilarBugs, pBug);        if (i < 0) {             error(con, "No such related bug");            return true;        }        bugs->setSimilarBugs.remove(i);        bugs.update();        return bugForm(con);    }    key = myself;    if (persons.select(qPerson) == 0) {         error(con, "No such user");        return true;    }    if (strcmp(con.get("action"), "Deassign") == 0) {         int i = rindex(persons->setAssignedBugs, bugs.currentId());        if (i < 0) {             error(con, "Bug was not assigned");            return true;        }        persons->setAssignedBugs.remove(i);        persons.update();        con.addPair("name", myself);        return userForm(con);    }    int personStatus = persons->status;    products.at(bugs->pSoftware);    versions.at(bugs->pVersion);    con << TAG <<        HTML_HEAD "<TITLE>Bug in " << products->sName << " v. " <<         versions->getVersionString() << "</TITLE></HEAD>"        BODY        "<H2>Bug in " << products->sName << " v. "        << versions->getVersionString() << "</H2>"        "<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"        "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""         << con.getAddress() << "\"><INPUT TYPE=hidden "        "NAME=\"page\" VALUE=\"updateBug\">"        "<INPUT TYPE=hidden NAME=\"bug\" VALUE=" << bugStr << ">"        "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"        "<TABLE><TH ALIGN=LEFT>Summary:</TH>"        "<TD><INPUT TYPE=text NAME=\"summary\" SIZE=40 VALUE=\""         << bugs->sOneLineSummary << "\"></TD></TR>"        "<TR><TH ALIGN=LEFT>Category:</TH>"        "<TD><SELECT NAME=\"category\" SIZE=1>"        "<OPTION SELECTED VALUE=" << bugs->eCategory << ">"        << eCATEGORY_STRING[bugs->eCategory] << "</OPTION>";    for (i = 1; eCATEGORY_STRING[i] != NULL; i++) {         con << TAG << "<OPTION VALUE=" << i << ">"             << eCATEGORY_STRING[i] << "</OPTION>";    }    con << TAG <<         "</SELECT></TD></TR>"        "<TR><TH ALIGN=LEFT>Severity:</TH>"        "<TD><SELECT NAME=\"severity\" SIZE=1>"        "<OPTION SELECTED VALUE=" << bugs->eSeverity << ">"        << eSEVERITY_STRING[bugs->eSeverity] << "</OPTION>";    for (i = 1; eSEVERITY_STRING[i] != NULL; i++) {         con << TAG << "<OPTION  VALUE=" << i << ">"            << eSEVERITY_STRING[i] << "</OPTION>";    }    con << TAG <<         "</SELECT></TD></TR>"        "<TR><TH ALIGN=LEFT>Priority:</TH>"        "<TD><SELECT NAME=\"priority\" SIZE=1>"        "<OPTION SELECTED VALUE=" << bugs->eFixingPriority << ">"        << eFIXING_PRIORITY_STRING[bugs->eFixingPriority] << "</OPTION>";    for (i = 1; eFIXING_PRIORITY_STRING[i] != NULL; i++) {         con << TAG << "<OPTION VALUE=" << i << ">"            << eFIXING_PRIORITY_STRING[i] << "</OPTION>";    }    con << TAG <<         "</SELECT></TD></TR>"        "<TR><TH ALIGN=LEFT>Platform:</TH>"        "<TD><INPUT TYPE=text NAME=\"platform\" VALUE=\""        << bugs->sHardwarePlatform << "\"></TD></TR>"        "<TR><TH ALIGN=LEFT>OS:</TH>"        "<TD><INPUT TYPE=text NAME=\"os\"VALUE=\""        << bugs->sOperatingSystem << "\"></TD></TR>"        "<TR><TH ALIGN=LEFT>Assigned to:</TH>"        "<TD><SELECT SIZE=1 NAME=\"name\">";    if (bugs->pAssignedTo != null) {         persons.at(bugs->pAssignedTo);        con << TAG << "<OPTION SELECTED VALUE=\"" << persons->sName            << "\">" <<  persons->sName << "</OPTION>";    } else {         con << TAG << "<OPTION SELECTED VALUE=\"\"></OPTION>";    }    print(con, products->setEngineers);     con << TAG << "</SELECT></TD></TR>"        "<TR><TH ALIGN=LEFT>Similar with:</TH>"        "<TD><SELECT NAME=\"similar\" SIZE=1>"        "<OPTION SELECTED VALUE=\"\"></OPTION>";    allBugs.select();    print(con, allBugs);    con << TAG << "</SELECT></TD></TR></TABLE><BR>";    if (personStatus != Person::isUser) {         con << TAG <<             "<INPUT TYPE=submit NAME=\"action\" VALUE=\"Update\">&nbsp;"            "<INPUT TYPE=reset VALUE=\"Reset\">";    }    con << TAG << "</FORM><P><FORM METHOD=POST ACTION=\"" << con.getStub()        << "\"><INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""         << con.getAddress() << "\">"        "<INPUT TYPE=hidden NAME=\"page\" VALUE=\"updateReportForm\">"        "<INPUT TYPE=hidden NAME=\"bug\" VALUE=" << bugStr << ">"        "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"        "<B>Report history:</B><BR><SELECT NAME=\"report\" SIZE=5>";    firstReport = bugs->pReportHistory;    if (reports.select(qAllReports) != 0) {         print(con, reports);        con << TAG <<             "</SELECT><BR><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">"            "&nbsp;<INPUT TYPE=submit NAME=\"action\" VALUE=\"Add\">";        if (personStatus == Person::isAdministrator) {             con << TAG <<                 "&nbsp;<INPUT TYPE=submit NAME=\"action\" VALUE=\"Remove\">";        }    } else {         con << TAG << EMPTY_LIST             "<BR><INPUT TYPE=submit  NAME=\"action\" VALUE=\"Add\">";    }    con << TAG << "</FORM><P>";    con << TAG <<         "<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"        "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""         << con.getAddress() << "\"><INPUT TYPE=hidden "        "NAME=\"page\" VALUE=\"updateWorkAroundForm\">"        "<INPUT TYPE=hidden NAME=\"bug\" VALUE=" << bugStr << ">"        "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"        "<B>Work arounds:</B><BR><SELECT NAME=\"workaround\" SIZE=5>";    firstReport = bugs->pWorkArounds;    if (reports.select(qAllReports) != 0) {         print(con, reports);        con << TAG <<             "</SELECT><BR><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">"            "&nbsp;<INPUT TYPE=submit NAME=\"action\" VALUE=\"Add\">";        if (personStatus == Person::isAdministrator) {             con << TAG <<                 "&nbsp;<INPUT TYPE=submit NAME=\"action\" VALUE=\"Remove\">";        }    } else {         con << TAG << EMPTY_LIST             "<BR><INPUT TYPE=submit  NAME=\"action\" VALUE=\"Add\">";    }    con << TAG << "</FORM><P>";        if (bugs->setSimilarBugs.length() != 0) {         con << TAG <<             "<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"            "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""             << con.getAddress() << "\"><INPUT TYPE=hidden "            "NAME=\"page\" VALUE=\"bugForm\">"            "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"            "<INPUT TYPE=hidden NAME=\"relatedbug\" VALUE=" << bugStr << ">"            "<B>Similar bugs:</B><BR><SELECT NAME=\"bug\" SIZE=1>";        print(con, bugs->setSimilarBugs);        con << TAG <<             "</SELECT><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">";        if (personStatus == Person::isAdministrator) {             con << TAG <<                 "&nbsp;<INPUT TYPE=submit NAME=\"action\" VALUE=\"Remove\">";        }        con << TAG << "</FORM><P>";    }    con << TAG <<         "</FORM><P>"        "<FONT SIZE=\"+1\"><UL>";    if (personStatus == Person::isUser) {         if (bugs->pAssignedTo != null) {             persons.at(bugs->pAssignedTo);            con << TAG << "<LI>Assigned to <A HREF=\"mailto:"                  << persons->sEmailAddress << "\">"                 << persons->sName << "</A>";        }        persons.at(bugs->pReportedBy);        con << TAG << "<LI>Reported by <A HREF=\"mailto:"            << persons->sEmailAddress << "\">"             << persons->sName << "</A></OL></FONT>";    } else {         if (bugs->pAssignedTo != null) {             persons.at(bugs->pAssignedTo);            con << TAG << "<LI>Assigned to <A HREF=\"" << con.getStub()                 << "?socket=" << con.getAddress()                 << "&page=userForm&myself=" << URL << myself                 << "&name=" << URL << persons->sName << "\">"                 << persons->sName << "</A>";        }        persons.at(bugs->pReportedBy);        con << TAG             << "<LI>Reported by <A HREF=\"" << con.getStub() << "?socket="             << con.getAddress()             << "&page=userForm&myself=" << URL << myself             << "&name=" << URL << persons->sName << "\">"             << persons->sName << "</A></OL></FONT>";    }    mainMenuReference(con);    return true;}bool updateBug(WWWconnection& con){    char* bugStr = con.get("bug");    bugId = atoi(bugStr);    if (bugs.select(qBug) == 0) {         error(con, "No such bug");        return true;    }     char* similar = con.get("similar");    if (*similar != '\0') {         int id = atoi(similar);        if (id != bugId) {             bugId = id;            if (allBugs.select(qBug) != 0) {                 if (rindex(bugs->setSimilarBugs, allBugs.currentId()) < 0) {                     bugs->setSimilarBugs.append(allBugs.currentId());                }            }        }    }    key = con.get("name");    if (*key != '\0') {         if (persons.select(qPerson) == 0 ||            persons->status == Person::isUser)         {             error(con, "No such engineer");            return true;        }        bugs->pAssignedTo = persons.currentId();    }    bugs.update();    return bugForm(con);}bool addReportForm(WWWconnection& con){    char* bugStr = con.get("bug");    bugId = atoi(bugStr);    if (bugs.select(qBug) == 0) {         error(con, "No such bug");        return true;    }    con << TAG <<         HTML_HEAD "<TITLE>Bug report</TITLE></HEAD>"        BODY        "<H2>Bug report</H2>"        "<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"        "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""         << con.getAddress() << "\"><INPUT TYPE=hidden "        "NAME=\"page\" VALUE=\"addReport\">"        "<INPUT TYPE=hidden NAME=\"bug\" VALUE=" << bugStr << ">"        "<INPUT TYPE=hidden NAME=\"index\" VALUE=" << ++bugs->nReports        << "><INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << con.get("myself")        << "\"><B>Status: &nbsp;</B><SELECT SIZE=1 NAME=\"status\">";    for (int i = 1; eSTATUS_STRING[i] != NULL; i++) {         con << TAG << "<OPTION VALUE=" << i << ">" << eSTATUS_STRING[i]             << "</OPTION>";    }    con << TAG <<         "</SELECT><P>"        "<B>Bug description:</B><P>"        "<TEXTAREA COLS=40 ROWS=5 NAME=\"description\"></TEXTAREA><P>"        "<INPUT TYPE=submit VALUE=\"Add\">&nbsp;"        "<INPUT TYPE=reset VALUE=\"Reset\"></FORM>";    bugs.update();    mainMenuReference(con);    return true;}bool addReport(WWWconnection& con){    bugId = atoi(con.get("bug"));    if (bugs.select(qBug) == 0) {         error(con, "No such bug");        return true;    }    key = con.get("myself");    if (persons.select(qPerson) == 0) {         error(con, "No such person");        return true;    }    reportId = atoi(con.get("index"));    firstReport = bugs->pReportHistory;    if (reports.select(qReport) == 0) {         Report report;        report.pAuthor = persons.currentId();        persons->nReports += 1;        report.sDescription = con.get("description");        report.index = reportId;        report.pNext = bugs->pReportHistory;        report.status = atoi(con.get("status"));        report.creationDate = dbDateTime::current();        bugs->pReportHistory = insert(report);        persons.update();        bugs.update();    }    con.addPair("action", "Select");    return bugForm(con);}bool addWorkAroundForm(WWWconnection& con){    char* bugStr = con.get("bug");    bugId = atoi(bugStr);    if (bugs.select(qBug) == 0) {         error(con, "No such bug");        return true;    }    con << TAG <<         HTML_HEAD "<TITLE>Work around</TITLE></HEAD>"        BODY        "<H2>Work around</H2>"        "<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"        "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""         << con.getAddress() << "\"><INPUT TYPE=hidden "        "NAME=\"page\" VALUE=\"addWorkAround\">"        "<INPUT TYPE=hidden NAME=\"bug\" VALUE=" << bugStr << ">"        "<INPUT TYPE=hidden NAME=\"index\" VALUE=" << ++bugs->nReports        << "><INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << con.get("myself")        << "\"><B>Status: &nbsp;</B><SELECT SIZE=1 NAME=\"status\">";    for (int i = 1; eSTATUS_STRING[i] != NULL; i++) {         con << TAG << "<OPTION VALUE=" << i << ">" << eSTATUS_STRING[i]             << "</OPTION>";    }    con << TAG <<         "</SELECT><P>"        "<B>Description:</B><P>"        "<TEXTAREA COLS=40 ROWS=5 NAME=\"description\"></TEXTAREA><P>"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -