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

📄 bugdb.cpp

📁 FastDb是高效的内存数据库系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    }    p = con.get("engineer");    if (*p != '\0') {         query.And("pAssignedTo is not null and pAssignedTo.sName like").add(p);    }    p = con.get("user");    if (*p != '\0') {         query.And("pReportedBy.sName like").add(p);    }    p = con.get("summary");    if (*p != '\0') {         query.And("sOneLineSummary like").add(p);    }    p = con.get("minmajor");    int minMajorVersionNumber = (*p == '\0') ? 0 : atoi(p);    p = con.get("maxmajor");    int maxMajorVersionNumber = (*p == '\0') ? INT_MAX : atoi(p);    p = con.get("minminor");    int minMinorVersionNumber = (*p == '\0') ? 0 : atoi(p);    p = con.get("maxminor");    int maxMinorVersionNumber = (*p == '\0') ? INT_MAX : atoi(p);    if (minMajorVersionNumber != 0) {         if (maxMajorVersionNumber != INT_MAX) {             query.And("pVersion.majorVersionNumber between")                .add(minMajorVersionNumber)                .add("and").add(maxMajorVersionNumber);        } else {             query.And("pVersion.majorVersionNumber>=")                .add(minMajorVersionNumber);        }    } else if (maxMajorVersionNumber != INT_MAX) {              query.And("pVersion.majorVersionNumber<=").add(maxMajorVersionNumber);    }    if (minMinorVersionNumber != 0) {         if (maxMinorVersionNumber != INT_MAX) {             query.And("pVersion.minorVersionNumber between")                .add(minMinorVersionNumber)                .add("and").add(maxMinorVersionNumber);        } else {             query.And("pVersion.minorVersionNumber>=")                .add(minMinorVersionNumber);        }    } else if (maxMinorVersionNumber != INT_MAX) {              query.And("pVersion.minorVersionNumber<=").add(maxMinorVersionNumber);    }    con << TAG <<         HTML_HEAD "<TITLE>List of selected bugs</TITLE></HEAD>"        BODY        "<H2>Selected bugs</H2>"        "<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=\"" << con.get("myself") <<         "\"><SELECT NAME=\"bug\" SIZE=20>";    if (bugs.select(query) != 0) {         print(con, bugs);        con << TAG <<            "</SELECT><BR><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">";    } else {         con << TAG << EMPTY_LIST;    }    con << TAG << "</FORM>";    mainMenuReference(con);    return true;}bool userForm(WWWconnection& con){    char* name = con.get("name");    if (name == NULL) {         error(con, "No person was selected");        return true;    }    char* myself = con.get("myself");    key = myself;    if (persons.select(qPerson) == 0) {         error(con, "Person authorization failed");        return true;    }    int selfStatus = persons->status;    key = name;    if (persons.select(qPerson) == 0) {         error(con, "Person not found");        return true;    }    if (persons->status == Person::isAdministrator) {         con << TAG <<             HTML_HEAD "<TITLE>BUGDB Administrator</TITLE></HEAD>"            BODY                    "<H2>Administrator menu</H2><FONT SIZE=\"+1\">"            "<UL><LI><A HREF=\"" << con.getStub() << "?socket="             << con.getAddress()             << "&page=addUserForm&myself=" << URL << myself             << "\">Add user</A>"            "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()            << "&page=addEngineerForm&myself=" << URL << myself             << "\">Add engineer</A>"            "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()            << "&page=selectPersonForm&myself=" << URL << myself             << "\">Select person"            "</A>"            "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()            << "&page=removePersonForm&myself=" << URL << myself             << "\">Remove person</A></UL>"            "<UL><LI><A HREF=\"" << con.getStub() << "?socket="             << con.getAddress()            << "&page=addSoftwareForm&myself=" << URL << myself             << "\">Add software product</A>"            "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()            << "&page=selectSoftwareForm&myself=" << URL << myself             << "\">Select software product</A>"            "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()            << "&page=removeSoftwareForm&myself=" << URL << myself             << "\">Remove software product</A></UL>"            "<UL><LI><A HREF=\"" << con.getStub() << "?socket="             << con.getAddress()            << "&page=selectBugForm&myself=" << URL << myself             << "\">Select bug</A>"            "<LI><A HREF=\"" << con.getStub() << "?socket="             << con.getAddress()            << "&page=removeBugForm&myself=" << URL << myself             << "\">Remove bug</A></UL>";        if (selfStatus == Person::isAdministrator) {             con << TAG <<                 "<UL><LI><A HREF=\"" << con.getStub() << "?socket="                 << con.getAddress() << "&page=changePasswordForm"                "&myself=administrator&name=" << URL << myself                 << "\">Change password</A>"                "<LI><A HREF=\"" << con.getStub() << "?socket="                 << con.getAddress()                << "&page=shutdown\">Shutdown server</A></UL>";        }        con << TAG << "</FONT></BODY></HTML>";        return true;    }    con <<        HTML_HEAD "<TITLE>" << name << "</TITLE></HEAD>"        BODY        "<H2>" << name << "</H2><FONT SIZE=\"+1\">"        "<UL><LI><A HREF=\"" << con.getStub() << "?socket="        << con.getAddress() << "&page=createBugReportForm&myself="         << URL << myself << "\">Create bug report</A>";    if (persons->sEmailAddress[0] != '\0') {         con << TAG <<             "<LI><A HREF=\"mailto:" << persons->sEmailAddress             << "\">Send e-mail</A>"            "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()            << "&page=bugQueryForm&myself=" << URL << myself             << "\">Find a bug</A>";    }    if (strcmp(myself, name) == 0 || selfStatus == Person::isAdministrator) {         con << TAG << "<LI><A HREF=\"" << con.getStub() << "?socket="             << con.getAddress() << "&page=changePasswordForm&myself="             << URL << myself << "&name=" << URL << name <<             "\">Change password</A>";    }    con << TAG <<         "</UL></FONT><P><TABLE><TR><TH ALIGN=LEFT>Person name:</TH>"        "<TD><FORM METHOD=POST ACTION=\""        << con.getStub() << "\"><INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""         << con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\""        "updatePerson\"><INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself        << "\"><INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"        "<INPUT TYPE=text NAME=\"newname\" SIZE=30 VALUE=\""         << name << "\"><INPUT TYPE=submit VALUE=\"Change\"></FORM></TD></TR>"        "<TR><TH ALIGN=LEFT>E-Mail:</TH>"        "<TD><FORM METHOD=POST ACTION=\""        << con.getStub() << "\"><INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""         << con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\""        "updatePerson\"><INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself        << "\"><INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"        "<INPUT TYPE=text NAME=\"email\" SIZE=30 VALUE=\""         << persons->sEmailAddress << "\">"        "<INPUT TYPE=submit VALUE=\"Change\"></FORM></TD></TR>";    if (persons->status != Person::isUser) {         con << TAG << "<TR><TH ALIGN=LEFT>Projects:</TH>"            "<TD><FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"            "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""             << con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "            "VALUE=\"softwareForm\">"            "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"            "<INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"            "<SELECT NAME=\"software\" SIZE=1>";        if (persons->setProjects.length() != 0) {             print(con, persons->setProjects);            con << TAG <<                 "</SELECT><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">"                "&nbsp;<INPUT TYPE=submit NAME=\"action\" VALUE=\"Detach\">";        } else {             con << TAG << EMPTY_LIST;        }        if (products.select() != 0) {             con << TAG <<                 "</FORM></TD></TR>"                "<TR><TH ALIGN=LEFT>Attach to project:</TH>"                "<TD><FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"                "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""                 << con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "                "VALUE=\"attachToProject\">"                "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself <<"\">"                "<INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"                "<SELECT NAME=\"software\" SIZE=1>";            print(con, products);             con << TAG << "</SELECT><INPUT TYPE=submit VALUE=\"Attach\">";        }         con << TAG <<             "</FORM></TD></TR>"            "<TR><TH ALIGN=LEFT>Find a person:</TH>"            "<TD><FORM METHOD=POST ACTION=\""             << con.getStub() << "\">"            "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""             << con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "            "VALUE=\"userForm\">"            "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"            "<INPUT TYPE=text NAME=\"name\" SIZE=30>"            "<INPUT TYPE=submit VALUE=\"Find\"></FORM></TD></TR>";    }     con << TAG << "<TR><TH ALIGN=LEFT>Used software:</TH>"        "<TD><FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"        "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""         << con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "        "VALUE=\"softwareForm\">"        "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"        "<INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"        "<SELECT NAME=\"software\" SIZE=1>";    if (persons->setUsedSoftware.length() != 0) {         print(con, persons->setUsedSoftware);        con << TAG <<             "</SELECT><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">"            "&nbsp;<INPUT TYPE=submit NAME=\"action\" VALUE=\"Unregister\">";    } else {         con << TAG << EMPTY_LIST;    }    if (products.select() != 0) {         con << TAG <<             "</FORM></TD></TR>"            "<TR><TH ALIGN=LEFT>Register as software user:</TH>"            "<TD><FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"            "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""             << con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "            "VALUE=\"registerSoftware\">"            "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"            "<INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"            "<SELECT NAME=\"software\" SIZE=1>";        print(con, products);        con << TAG << "</SELECT><INPUT TYPE=submit VALUE=\"Register\">";    }    con << TAG << "</FORM></TD></TR></TABLE><P>"        "<B>Reported bugs:</B><BR>"             "<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=\"name\" VALUE=\"" << name << "\">"        "<SELECT NAME=\"bug\" SIZE=5>";    if (persons->setReportedBugs.length() != 0) {        print(con, persons->setReportedBugs);        con << TAG <<            "</SELECT><BR><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">";    } else {         con << TAG << EMPTY_LIST;    }       con << TAG << "</FORM><P>";    if (persons->status != Person::isUser) {         con << TAG <<             "<P><B>Assigned bugs:</B><BR>"                  "<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=\"name\" VALUE=\"" << name << "\">"            "<SELECT NAME=\"bug\" SIZE=5>";        if (persons->setAssignedBugs.length() != 0) {            print(con, persons->setAssignedBugs);            con << TAG <<                 "</SELECT><BR>"                "<INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">&nbsp;"                "<INPUT TYPE=submit NAME=\"action\" VALUE=\"Deassign\">";        } else {             con << TAG << EMPTY_LIST;        }        con << TAG << "</FORM>";    }    if (strcmp(name, myself) == 0) {         con << TAG << "</BODY></HTML>";    } else {         mainMenuReference(con);    }    return true;}bool createBugReportForm(WWWconnection& con){    int i;    sequencer.select();    con << TAG <<         HTML_HEAD "<TITLE>Bug</TITLE></HEAD>"        BODY        "<H2>Bug</H2>"        "<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"        "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""         << con.getAddress() << "\"><INPUT TYPE=hidden "        "NAME=\"page\" VALUE=\"createBugReport\">"        "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\""<<con.get("myself")<<"\">"        "<INPUT TYPE=hidden NAME=\"bug\" VALUE=" << ++sequencer->nBugs << ">"        "<TABLE><TH ALIGN=LEFT>Summary:</TH>"        "<TD><INPUT TYPE=text NAME=\"summary\" SIZE=40></TD></TR>"        "<TR><TH ALIGN=LEFT>Category:</TH>"        "<TD><SELECT NAME=\"category\" SIZE=1>";    for (i = 1; eCATEGORY_STRING[i] != NULL; i++) {         con << TAG << "<OPTION SELECTED VALUE=" << i << ">"            << eCATEGORY_STRING[i] << "</OPTION>";    }    con << TAG << "</SELECT></TD></TR>"        "<TR><TH ALIGN=LEFT>Severity:</TH>"        "<TD><SELECT NAME=\"severity\" SIZE=1>";    for (i = 1; eSEVERITY_STRING[i] != NULL; i++) {         con << TAG << "<OPTION SELECTED VALUE=" << i << ">"            << eSEVERITY_STRING[i] << "</OPTION>";    }    con << TAG <<         "</SELECT></TD></TR>"        "<TR><TH ALIGN=LEFT>Priority:</TH>"        "<TD><SELECT NAME=\"priority\" SIZE=1>";    for (i = 1; eFIXING_PRIORITY_STRING[i] != NULL; i++) {         con << TAG << "<OPTION SELECTED VALUE=" << i << ">"            << eFIXING_PRIORITY_STRING[i] << "</OPTION>";    }    con << TAG <<         "</SELECT></TD></TR>"        "<TR><TH ALIGN=LEFT>Software:</TH>"        "<TD><SELECT NAME=\"software\" SIZE=1>";    if (products.select() != 0) {         print(con, products);    }     con << TAG <<            "</SELECT></TD></TR>"            "<TR><TH ALIGN=LEFT>Version:</TH>"            "<TD><INPUT TYPE=text NAME=\"version\"></TD></TR>"            "<TR><TH ALIGN=LEFT>Platform:</TH>"            "<TD><INPUT TYPE=text NAME=\"platform\"</TD></TR>"            "<TR><TH ALIGN=LEFT>OS:</TH>"            "<TD><INPUT TYPE=text NAME=\"os\"></TD></TR></TABLE><P>"            "<INPUT TYPE=submit VALUE=\"Submit\">&nbsp;"            "<INPUT TYPE=reset></FORM>";    mainMenuReference(con);    sequencer.update();    return true;}bool bugForm(WWWconnection& con);bool createBugReport(WWWconnection& con){    key = con.get("myself");    if (persons.select(qPerson) == 0) {         error(con, "Author unknown");        return true;    }    key = con.get("software");    if (products.select(qSoftware) == 0) {         error(con, "No such software product");        return true;    }    if (sscanf(con.get("version"), "%d.%d", &majorVersion, &minorVersion) != 2)    {        error(con, "Bad version format");        return true;

⌨️ 快捷键说明

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