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

📄 bugdb.cpp

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    char* p;
    dbQuery query;
    query.reset();
    p = con.get("software");
    if (*p != '\0') { 
        query.add("pSoftware.sName like").add(p);
    }
    int4 category = atoi(con.get("category"));
    if (category != 0) { 
        query.And("eCategory=").add(category);
   }
    int4 severity = atoi(con.get("severity"));
    if (severity != 0) { 
        query.And("eSeverity=").add(severity);
    }
    int4 priority = atoi(con.get("priority"));
    if (priority != 0) { 
        query.And("eFixingPriority=").add(priority);
    }
    p = con.get("os");
    if (*p != '\0') { 
        query.And("sOperatingSystem like").add(p);
    }
    p = con.get("platform");
    if (*p != '\0') { 
        query.And("sHardwarePlatform like").add(p);
    }
    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 << 

⌨️ 快捷键说明

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