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

📄 submitservlet.java

📁 dspace 用j2ee架构的一个数字图书馆.开源程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        // 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();        // Everything went OK if we get to here, so now response        // to the original button press        if (request.getParameter("submit_next") != null)        {            // Update user's progress            userHasReached(subInfo, EDIT_METADATA_1);            // User has clicked "Next"            doStep(context, request, response, subInfo, EDIT_METADATA_1);            context.complete();        }        else        {            // Progress bar button clicked            doStepJump(context, request, response, subInfo);            context.complete();        }    }    /**     * process input from edit-metadata.jsp     *      * @param context     *            current DSpace context     * @param request     *            current servlet request object     * @param response     *            current servlet response object     * @param subInfo     *            submission info object     * @param curStep     *            page number in edit sequence, starting at zero     */    private void processEditMetadata(Context context,        HttpServletRequest request,        HttpServletResponse response,        SubmissionInfo subInfo,		int curStep)        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, curStep, curStep);            return;        }        Item item = subInfo.submission.getItem();                // lookup applicable inputs        Collection c = subInfo.submission.getCollection();        DCInput[] inputs = inputsReader.getInputs(c.getHandle()).getPageRows(curStep - EDIT_METADATA_1,									 subInfo.submission.hasMultipleTitles(),									 subInfo.submission.isPublishedBefore());         // clear out all item metadata defined for this collection and page        for (int i = 0; i < inputs.length; i++)        {        	String dcQualifier = inputs[i].getQualifier();        	if (dcQualifier == null && inputs[i].getInputType().equals("qualdrop_value"))        	{        		dcQualifier = Item.ANY;        	}            item.clearMetadata(inputs[i].getSchema(), inputs[i].getElement(), dcQualifier, Item.ANY);        }        // now update the item metadata.      	String fieldName;        boolean moreInput = false;    	for (int j = 0; j < inputs.length; j++)    	{    	   String dcElement = inputs[j].getElement();           String dcQualifier = inputs[j].getQualifier();           String dcSchema = inputs[j].getSchema();    	   if (dcQualifier != null && ! dcQualifier.equals(Item.ANY))    	   {    	   		fieldName = dcSchema + "_" + dcElement + '_' + dcQualifier;    	   }    	   else    	   {    	   		fieldName = dcSchema + "_" + dcElement;    	   }    	   String inputType = inputs[j].getInputType();    	   if (inputType.equals("name"))    	   {    	   		readNames(request, item, dcSchema, dcElement, dcQualifier,     	   				  inputs[j].getRepeatable());    	   }    	   else if (inputType.equals("date"))    	   {    	   		readDate(request, item, dcSchema, dcElement, dcQualifier);    	   }    	   else if (inputType.equals("series"))    	   {    	   		readSeriesNumbers(request, item, dcSchema, dcElement, dcQualifier,     	   						  inputs[j].getRepeatable());    	   }    	   else if (inputType.equals("qualdrop_value"))    	   {    	      List quals = getRepeatedParameter(request, dcSchema + "_" + dcElement + "_qualifier");    	      List vals = getRepeatedParameter(request, dcSchema + "_" + dcElement + "_value");    	      for (int z = 0; z < vals.size(); z++)    	      {    	      		String thisQual = (String)quals.get(z);    	      		if ( "".equals(thisQual) )    	      		{    	      		    thisQual = null;    	      		}    	      		String thisVal = (String)vals.get(z);    	      		if (! buttonPressed.equals("submit_" + dcSchema + "_" + dcElement + "_remove_" + z) &&    	      			! thisVal.equals(""))    	      		{    	      			item.addMetadata(dcSchema, dcElement, thisQual, null, thisVal);    	      		}    	      }    	   }    	   else if (inputType.equals("dropdown"))    	   {    	      String[] vals = request.getParameterValues(fieldName);    	      if (vals != null)    	      {    	      	for (int z = 0; z < vals.length; z++)    	      	{    	      		item.addMetadata(dcSchema, dcElement, dcQualifier, "en", vals[z]);    	      	}    	      }    	   }    	   else if ((inputType.equals("onebox")) || (inputType.equals("twobox")) ||     	   			(inputType.equals("textarea")))    	   {    	   		readText(request, item, dcSchema, dcElement, dcQualifier,     	   				 inputs[j].getRepeatable(), "en");    	   }    	   else     	   {    	       throw new ServletException("Field "+ fieldName +     	       		                      " has an unknown input type: " + inputType);    	   }           // Proceed according to button pressed    	   if (! moreInput && buttonPressed.equals("submit_" + fieldName + "_more"))    	   {    	      subInfo.moreBoxesFor = fieldName;    	      subInfo.jumpToField = fieldName;    	      moreInput = true;    	   }    	}    	        int nextStep = -1;        if ( moreInput )        {        	nextStep = curStep;        }    	        if (buttonPressed.equals("submit_prev"))        {            // NB: code here assumes steps are sequentially numbered!            nextStep = curStep-1;        }        else if (buttonPressed.equals("submit_next"))        {        	// scan for missing fields        	String gotoField = null;        	subInfo.missingFields = new ArrayList();        	//subInfo.missingRowNums = new Vector();        	for (int i = 0; i < inputs.length; i++)        	{        	    String element = inputs[i].getElement();        	    String qual = inputs[i].getQualifier();                String schema = inputs[i].getSchema();                log.info("  inner "+schema);        	    DCValue[] valArray = item.getMetadata(schema, element, qual, Item.ANY);        	    boolean isEmpty = (valArray.length == 0);        	    if (inputs[i].isRequired() && isEmpty)        	    {        	    	subInfo.missingFields.add( new Integer(i) );        	    	if (qual != null && !qual.equals("*"))        	    	{        	    		gotoField = schema + "_" + element + '_' + qual;        	    	}        	    	else        	    	{        	    		gotoField = schema + "_" + element;        	    	}        	    }        	}        	// return to current edit metadata screen if any fields missing        	if (subInfo.missingFields.size() > 0 )        	{        		subInfo.jumpToField = gotoField;        		nextStep = curStep;        	}        	else        	{        		// determine next step - skipping unused MD pages        		int lastMDPage = EDIT_METADATA_1 + inputsReader.getNumberInputPages(c.getHandle()) - 1;        		if ( curStep == lastMDPage )        		{        		    curStep = EDIT_METADATA_2;        		}        		userHasReached(subInfo, curStep+1);        		nextStep = curStep+1;        	}        }        else if (buttonPressed.indexOf("remove") > -1)        {            // Remove button pressed - stay with same form            nextStep = curStep;        }        // Write changes to database        subInfo.submission.update();        if (nextStep != -1)        {            doStep(context, request, response, subInfo, nextStep);        }        else        {            doStepJump(context, request, response, subInfo);        }        context.complete();    }    /**     * Process the input from the choose file page     *      * @param context     *            current DSpace context     * @param request     *            current servlet request object     * @param response     *            current servlet response object     */    private void processChooseFile(Context context, HttpServletRequest request,            HttpServletResponse response) throws ServletException, IOException,            SQLException, AuthorizeException    {        File temp = null;        FileUploadRequest wrapper = null;        SubmissionInfo subInfo = null;        boolean ok = false;        String buttonPressed = null;        BitstreamFormat bf = null;        Bitstream b = null;        /*         * To distinguish between an IOException caused by a problem with the         * file upload and one caused by displaying a JSP, we do all the upload         * handling in a try/catch block         */        try        {            // Wrap multipart request to get the submission info            wrapper = new FileUploadRequest(request);            subInfo = getSubmissionInfo(context, wrapper);            buttonPressed = UIUtil.getSubmitButton(wrapper, "submit_next");            if ((subInfo != null) && buttonPressed.equals("submit_next"))            {                // Create the bitstream                Item item = subInfo.submission.getItem();                temp = wrapper.getFile("file");                if (temp != null && temp.length() > 0)                {                    // Read the temp file into a bitstream                    InputStream is = new BufferedInputStream(                            new FileInputStream(temp));                    // do we already have a bundle?                    Bundle[] bundles = item.getBundles("ORIGINAL");                    if (bundles.length < 1)                    {                        // set bundle's name to ORIGINAL                        b = item.createSingleBitstream(is, "ORIGINAL");                    }                    else                    {                        // we have a bundle already, just add bitstream                        b = bundles[0].createBitstream(is);                    }                    // Strip all but the last filename. It would be nice                    // to know which OS the file came from.                    String noPath = wrapper.getFilesystemName("file");                    while (noPath.indexOf('/') > -1)                    {                        noPath = noPath.substring(noPath.indexOf('/') + 1);                    }                    while (noPath.indexOf('\\') > -1)                    {                        noPath = noPath.substring(noPath.indexOf('\\') + 1);                    }                    b.setName(noPath);                    b.setSource(wrapper.getFilesystemName("file"));                    b.setDescription(wrapper.getParameter("description"));                    // Identify the format                    bf = FormatIdentifier.guessFormat(context, b);                    b.setFormat(bf);                    // Update to DB                    b.update();                    item.update();                    ok = true;                }            }        }        catch (IOException ie)        {            // Problem with uploading            log.warn(LogManager.getHeader(context, "upload_error", ""), ie);        }        if (subInfo == null)        {            // In any event, if we don't have the submission info, the request            // was malformed            log.warn(LogManager.getHeader(context, "integrity_error", UIUtil                    .getRequestLogInfo(request)));        }        else if (buttonPressed.equals("submit_cancel"))        {            doCancellation(request, response, subInfo,                    SubmitServlet.CHOOSE_FILE, SubmitServlet.UPLOAD_FILES);        }        else if (buttonPressed.equals("submit_prev"))        {            // Slightly tricky; if the user clicks on "previous,"            // and they haven't uploaded any files yet, the previous            // screen is the edit metadata 2 page. If there are            // upload files, we go back to the file list page,            // without uploading the file they've specified.            if (subInfo.submission.getItem().getBundles("ORIGINAL").length > 0)            {                // Have files, go to list                showUploadFileList(request, response, subInfo, false, false);            }            else            {                // No files, go back to last edit metadata page            	Collection c = subInfo.submission.getCollection();

⌨️ 快捷键说明

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