📄 submitservlet.java
字号:
HttpServletRequest request, HttpServletResponse response, SubmissionInfo subInfo) throws ServletException, IOException, SQLException, AuthorizeException { String buttonPressed = UIUtil.getSubmitButton(request, "submit_back"); if (buttonPressed.equals("submit_back")) { // User wants to continue with submission int previous = UIUtil.getIntParameter(request, "previous_step"); doStep(context, request, response, subInfo, previous); } else if (buttonPressed.equals("submit_remove")) { // User wants to cancel and remove // Cancellation page only applies to workspace items WorkspaceItem wi = (WorkspaceItem) subInfo.submission; wi.deleteAll(); JSPManager.showJSP(request, response, "/submit/cancelled-removed.jsp"); context.complete(); } else if (buttonPressed.equals("submit_keep")) { // Save submission for later - just show message JSPManager.showJSP(request, response, "/submit/saved.jsp"); } else { doStepJump(context, request, response, subInfo); } } /** * Process button click on "review submission" page * * @param context * current DSpace context * @param request * current servlet request object * @param response * current servlet response object * @param subInfo * submission info object */ private void processReview(Context context, HttpServletRequest request, HttpServletResponse response, SubmissionInfo subInfo) throws ServletException, IOException, SQLException, AuthorizeException { String buttonPressed = UIUtil.getSubmitButton(request, "submit_cancel"); if (buttonPressed.equals("submit_cancel")) { doCancellation(request, response, subInfo, REVIEW_SUBMISSION, REVIEW_SUBMISSION); } else if (buttonPressed.equals("submit_next")) { // If the user is performing the initial submission // of an item, we go to the grant license stage if (!isWorkflow(subInfo)) { // proceed to next step conditional on CC int nextStep = CreativeCommons.isEnabled() ? CC_LICENSE : GRANT_LICENSE; userHasReached(subInfo, nextStep); doStep(context, request, response, subInfo, nextStep); context.complete(); } else { // The user is performing an edit as part // of a workflow task, so we take them // back to the relevant perform task page request.setAttribute("workflow.item", subInfo.submission); JSPManager.showJSP(request, response, "/mydspace/perform-task.jsp"); } } else if (buttonPressed.equals("submit_prev")) { // Back to file upload doStep(context, request, response, subInfo, UPLOAD_FILES); } else { doStepJump(context, request, response, subInfo); } } /** * Process the input from the license page * * @param context * current DSpace context * @param request * current servlet request object * @param response * current servlet response object * @param subInfo * submission info object */ private void processLicense(Context context, HttpServletRequest request, HttpServletResponse response, SubmissionInfo subInfo) throws ServletException, IOException, SQLException, AuthorizeException { String buttonPressed = UIUtil.getSubmitButton(request, "submit_cancel"); if (buttonPressed.equals("submit_grant")) { // License granted log.info(LogManager.getHeader(context, "accept_license", getSubmissionLogInfo(subInfo))); // Add the license to the item Item item = subInfo.submission.getItem(); EPerson submitter = context.getCurrentUser(); // FIXME: Probably need to take this from the form at some point String license = subInfo.submission.getCollection().getLicense(); item.licenseGranted(license, submitter); // Start the workflow WorkflowManager.start(context, (WorkspaceItem) subInfo.submission); // FIXME: pass in more information about what happens next? showProgressAwareJSP(request, response, subInfo, "/submit/complete.jsp"); context.complete(); } else if (request.getParameter("submit_reject") != null) { // User has rejected license. log.info(LogManager.getHeader(context, "reject_license", getSubmissionLogInfo(subInfo))); // Show information page. JSPManager.showJSP(request, response, "/submit/license-rejected.jsp"); } else { doStepJump(context, request, response, subInfo); } } /** * Process the input from the CC license page * * @param context * current DSpace context * @param request * current servlet request object * @param response * current servlet response object * @param subInfo * submission info object */ private void processCC(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, CC_LICENSE, CC_LICENSE); } else if (buttonPressed.equals("submit_prev")) { // Back to review submission doStep(context, request, response, subInfo, REVIEW_SUBMISSION); } else if (buttonPressed.equals("submit_next")) { // Update user's progress userHasReached(subInfo, GRANT_LICENSE); // User has clicked "Next" doStep(context, request, response, subInfo, GRANT_LICENSE); context.complete(); } else if (buttonPressed.equals("submit_no_cc")) { // Skipping the CC license - remove any existing license selection CreativeCommons .removeLicense(context, subInfo.submission.getItem()); userHasReached(subInfo, GRANT_LICENSE); doStep(context, request, response, subInfo, GRANT_LICENSE); context.complete(); } else { // RLR hack - need to distinguish between progress bar real // submission String ccLicenseUrl = request.getParameter("cc_license_url"); if ((ccLicenseUrl != null) && (ccLicenseUrl.length() > 0)) { Item item = subInfo.submission.getItem(); // set the CC license CreativeCommons.setLicense(context, item, ccLicenseUrl); userHasReached(subInfo, GRANT_LICENSE); doStep(context, request, response, subInfo, GRANT_LICENSE); context.complete(); } else { doStepJump(context, request, response, subInfo); } } } //**************************************************************** //**************************************************************** // METHODS FOR SHOWING FORMS //**************************************************************** //**************************************************************** /** * Process a click on a buttonin the progress bar. to jump to a step. This * method should be called when it has been determined that no other button * has been pressed. * * @param context * DSpace context object * @param request * the request object * @param response * the response object * @param subInfo * SubmissionInfo pertaining to this submission */ private void doStepJump(Context context, HttpServletRequest request, HttpServletResponse response, SubmissionInfo subInfo) throws ServletException, IOException, SQLException { // Find the button that was pressed. It would start with // "submit_jump_". String buttonPressed = UIUtil.getSubmitButton(request, ""); // Now, if the request was a multi-part (file upload), we need to // get the original request back out, as the wrapper causes problems // further down the line. if (request instanceof FileUploadRequest) { FileUploadRequest fur = (FileUploadRequest) request; request = fur.getOriginalRequest(); } int nextStep = -1; if (buttonPressed.startsWith("submit_jump_")) { // Button on progress bar pressed try { nextStep = Integer.parseInt(buttonPressed.substring(12, 13)); } catch (NumberFormatException ne) { // mangled number nextStep = -1; } // Integrity check: make sure they aren't going // forward or backward too far if (nextStep <= SubmitServlet.SELECT_COLLECTION) { nextStep = -1; } if (!isWorkflow(subInfo) && (nextStep > getStepReached(subInfo))) { nextStep = -1; } } if (nextStep == -1) { // Either no button pressed, or an illegal stage // reached. UI doesn't allow this, so something's // wrong if that happens. log.warn(LogManager.getHeader(context, "integrity_error", UIUtil .getRequestLogInfo(request))); JSPManager.showIntegrityError(request, response); } else { // Do the relevant step doStep(context, request, response, subInfo, nextStep); } } /** * Display the page for the relevant step. Pass in a step number between * SubmitServlet.INITIAL_QUESTIONS and SubmitServlet.SUBMISSION_COMPLETE - * other cases (such as cancellations and multi-file upload interactions) * are handled elsewhere. * * @param context * DSpace context * @param request * the request object * @param response * the response object * @param subInfo * SubmissionInfo pertaining to this submission * @param step * the step number to display */ private void doStep(Context context, HttpServletRequest request, HttpServletResponse response, SubmissionInfo subInfo, int step) throws ServletException, IOException, SQLException { // determine collection Collection c = subInfo.submission.getCollection(); if ( step >= EDIT_METADATA_1 && step <= EDIT_METADATA_2 ) { // requires configurable form info per collection request.setAttribute( "submission.inputs", inputsReader.getInputs(c.getHandle())); // also indicate page request.setAttribute( "submission.page", new Integer(step) ); showProgressAwareJSP(request, response, subInfo, "/submit/edit-metadata.jsp"); return; } switch (step) { case INITIAL_QUESTIONS: // requires configurable form info per collection request.setAttribute( "submission.inputs", inputsReader.getInputs(c.getHandle())); showProgressAwareJSP(request, response, subInfo, "/submit/initial-questions.jsp"); break; /* EDIT_METADATA cases handled above */ case UPLOAD_FILES: showFirstUploadPage(context, request, response, subInfo); break; case CHOOSE_FILE: showProgressAwareJSP(request, response, subInfo, "/submit/choose-file.jsp"); break; case FILE_LIST: showUploadFileList(request, response, subInfo, false, false); break; case REVIEW_SUBMISSION: // requires c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -