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

📄 submitservlet.java

📁 dspace 用j2ee架构的一个数字图书馆.开源程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            else            {                /*                 * If the submission info was invalid, set the step to an                 * invalid number so an integrity error will be shown                 */                step = -1;            }        }                if (step >= EDIT_METADATA_1 && step <= EDIT_METADATA_2)        {        	processEditMetadata(context, request, response, subInfo, step);        	return;        }        switch (step)        {        case INITIAL_QUESTIONS:            processInitialQuestions(context, request, response, subInfo);            break;          case GET_FILE_FORMAT:            processGetFileFormat(context, request, response, subInfo);            break;        case FILE_LIST:            processFileList(context, request, response, subInfo);            break;        case UPLOAD_ERROR:            processUploadError(context, request, response, subInfo);            break;        case CHANGE_FILE_DESCRIPTION:            processChangeFileDescription(context, request, response, subInfo);            break;        case REVIEW_SUBMISSION:            processReview(context, request, response, subInfo);            break;        case CC_LICENSE:            processCC(context, request, response, subInfo);            break;        case GRANT_LICENSE:            processLicense(context, request, response, subInfo);            break;        case SUBMISSION_CANCELLED:            processCancellation(context, request, response, subInfo);            break;        case VERIFY_PRUNE:            processVerifyPrune(context, request, response, subInfo);            break;        default:            log.warn(LogManager.getHeader(context, "integrity_error", UIUtil                    .getRequestLogInfo(request)));            JSPManager.showIntegrityError(request, response);        }    }    //****************************************************************    //****************************************************************    //             METHODS FOR PROCESSING POSTED FORMS    //****************************************************************    //****************************************************************    /**     * Process the selection collection stage, or the clicking of a "submit to     * this collection" button on a collection home page.     *      * @param context     *            current DSpace context     * @param request     *            current servlet request object     * @param response     *            current servlet response object     */    private void processSelectCollection(Context context,            HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException, SQLException,            AuthorizeException    {        // The user might have clicked cancel. We don't do a        // standard cancellation at this stage, since we don't        // actually have an item to keep or remove yet.        if (request.getParameter("submit_cancel") != null)        {            // Just send them to their "My DSpace" for now.            response.sendRedirect(response.encodeRedirectURL(request                    .getContextPath()                    + "/mydspace"));            return;        }        // First we find the collection        int id = UIUtil.getIntParameter(request, "collection");        Collection col = Collection.find(context, id);        // Show an error if we don't have a collection        if (col == null)        {            JSPManager.showInvalidIDError(request, response, request                    .getParameter("collection"), Constants.COLLECTION);        }        else        {            WorkspaceItem wi = WorkspaceItem.create(context, col, true);            // Proceed to first step            SubmissionInfo si = new SubmissionInfo();            si.submission = wi;            doStep(context, request, response, si, INITIAL_QUESTIONS);            context.complete();        }    }    /**     * process input from initial-questions.jsp     *      * @param context     *            current DSpace context     * @param request     *            current servlet request object     * @param response     *            current servlet response object     * @param subInfo     *            submission info object     */    private void processInitialQuestions(Context context,            HttpServletRequest request, HttpServletResponse response,            SubmissionInfo subInfo) throws ServletException, IOException,            SQLException, AuthorizeException    {        String buttonPressed = UIUtil.getSubmitButton(request, "submit_next");        // Firstly, check for a click of the cancel button.        if (buttonPressed.equals("submit_cancel"))        {            doCancellation(request, response, subInfo, INITIAL_QUESTIONS,                    INITIAL_QUESTIONS);            return;        }        // Get the values from the form        boolean multipleTitles = UIUtil.getBoolParameter(request,                "multiple_titles");        boolean publishedBefore = UIUtil.getBoolParameter(request,                "published_before");        boolean multipleFiles = UIUtil.getBoolParameter(request,                "multiple_files");        boolean isThesis = ConfigurationManager                .getBooleanProperty("webui.submit.blocktheses")                && UIUtil.getBoolParameter(request, "is_thesis");        if (isWorkflow(subInfo))        {            // Thesis question does not appear in workflow mode..            isThesis = false;            // Pretend "multiple files" is true in workflow mode            // (There will always be the license file)            multipleFiles = true;        }        // First and foremost - if it's a thesis, reject the submission        if (isThesis)        {            WorkspaceItem wi = (WorkspaceItem) subInfo.submission;            wi.deleteAll();            // Remember that we've removed a thesis in the session            request.getSession().setAttribute("removed_thesis",                    new Boolean(true));            // Display appropriate message            JSPManager.showJSP(request, response, "/submit/no-theses.jsp");            context.complete();            return;        }        // Now check to see if the changes will remove any values        // (i.e. multiple files, titles or an issue date.)        boolean willRemoveTitles = false;        boolean willRemoveDate = false;        boolean willRemoveFiles = false;        if (multipleTitles == false)        {            DCValue[] altTitles = subInfo.submission.getItem().getDC(                    "title", "alternative", Item.ANY);            willRemoveTitles = altTitles.length > 0;        }        if (publishedBefore == false)        {            DCValue[] dateIssued = subInfo.submission.getItem().getDC("date",                    "issued", Item.ANY);            DCValue[] citation = subInfo.submission.getItem().getDC(                    "identifier", "citation", Item.ANY);            DCValue[] publisher = subInfo.submission.getItem().getDC(                    "publisher", null, Item.ANY);            willRemoveDate = (dateIssued.length > 0) || (citation.length > 0)                    || (publisher.length > 0);        }        if (multipleFiles == false)        {            // see if number of bitstreams in "ORIGINAL" bundle > 1            // FIXME: Assumes multiple bundles, clean up someday...            Bundle[] bundles = subInfo.submission.getItem().getBundles(                    "ORIGINAL");            if (bundles.length > 0)            {                Bitstream[] bitstreams = bundles[0].getBitstreams();                willRemoveFiles = bitstreams.length > 1;            }        }        // If anything is going to be removed from the item as a result        // of changing the answer to one of the questions, we need        // to inform the user and make sure that's OK        if (willRemoveTitles || willRemoveDate || willRemoveFiles)        {            // Verify pruning of extra bits            request.setAttribute("submission.info", subInfo);            request                    .setAttribute("multiple.titles",                            new Boolean(multipleTitles));            request.setAttribute("published.before", new Boolean(                    publishedBefore));            request.setAttribute("multiple.files", new Boolean(multipleFiles));            request.setAttribute("will.remove.titles", new Boolean(                    willRemoveTitles));            request.setAttribute("will.remove.date",                    new Boolean(willRemoveDate));            request.setAttribute("will.remove.files", new Boolean(                    willRemoveFiles));            request.setAttribute("button.pressed", UIUtil.getSubmitButton(                    request, "submit_next"));            JSPManager.showJSP(request, response, "/submit/verify-prune.jsp");        }        else        {            // Nothing needs removing, so just make the changes            subInfo.submission.setMultipleTitles(multipleTitles);            subInfo.submission.setPublishedBefore(publishedBefore);            // "Multiple files" irrelevant in workflow mode            if (!isWorkflow(subInfo))            {                subInfo.submission.setMultipleFiles(multipleFiles);            }            subInfo.submission.update();            // On to the next stage            if (buttonPressed.equals("submit_next"))            {                // Update user's progress                userHasReached(subInfo, EDIT_METADATA_1);                // User has clicked "Next"                doStep(context, request, response, subInfo, EDIT_METADATA_1);            }            else            {                // Progress bar button clicked                doStepJump(context, request, response, subInfo);            }            context.complete();        }    }    /**     * Process input from "verify prune" step     *      * @param context     *            current DSpace context     * @param request     *            current servlet request object     * @param response     *            current servlet response object     * @param subInfo     *            submission info object     */    private void processVerifyPrune(Context context,            HttpServletRequest request, HttpServletResponse response,            SubmissionInfo subInfo) throws ServletException, IOException,            SQLException, AuthorizeException    {        if (request.getParameter("do_not_proceed") != null)        {            // User cancelled            doStep(context, request, response, subInfo, INITIAL_QUESTIONS);            return;        }        // User elected to proceed - do the pruning        // Get the values from the form        boolean multipleTitles = UIUtil.getBoolParameter(request,                "multiple_titles");        boolean publishedBefore = UIUtil.getBoolParameter(request,                "published_before");        // Multiple files question does not appear in workflow mode.        // Since the submission will have a license, the answer to        // this question will always be "yes"        boolean multipleFiles = (isWorkflow(subInfo) || UIUtil                .getBoolParameter(request, "multiple_files"));        Item item = subInfo.submission.getItem();        if (!multipleTitles)        {            item.clearDC("title", "alternative", Item.ANY);        }        if (publishedBefore == false)        {            item.clearDC("date", "issued", Item.ANY);            item.clearDC("identifier", "citation", Item.ANY);            item.clearDC("publisher", null, Item.ANY);        }        if (multipleFiles == false)        {            // remove all but first bitstream from bundle[0]            // FIXME: Assumes multiple bundles, clean up someday...            // (only messes with the first bundle.)            Bundle[] bundles = item.getBundles("ORIGINAL");            if (bundles.length > 0)            {                Bitstream[] bitstreams = bundles[0].getBitstreams();                // Remove all but the first bitstream                for (int i = 1; i < bitstreams.length; i++)                {                    bundles[0].removeBitstream(bitstreams[i]);                }            }        }

⌨️ 快捷键说明

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