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

📄 bugdb.cpp

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        "</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;
    }
    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;
    }

⌨️ 快捷键说明

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