001 package org.kuali.ole.deliver.loan.controller;
002
003 import org.apache.log4j.Logger;
004 import org.kuali.ole.OLEConstants;
005 import org.kuali.ole.deliver.loan.LoanProcessor;
006 import org.kuali.ole.deliver.loan.bo.OleLoanFastAdd;
007 import org.kuali.ole.deliver.loan.form.OleLoanForm;
008 import org.kuali.ole.docstore.model.xmlpojo.ingest.Response;
009 import org.kuali.ole.docstore.model.xmlpojo.work.instance.oleml.Item;
010 import org.kuali.ole.docstore.model.xmlpojo.work.instance.oleml.OleHoldings;
011 import org.kuali.ole.docstore.model.xstream.ingest.ResponseHandler;
012 import org.kuali.ole.editor.service.DocstoreHelperService;
013 import org.kuali.ole.pojo.bib.BibliographicRecord;
014 import org.kuali.rice.krad.web.controller.UifControllerBase;
015 import org.kuali.rice.krad.web.form.UifFormBase;
016 import org.springframework.stereotype.Controller;
017 import org.springframework.validation.BindingResult;
018 import org.springframework.web.bind.annotation.ModelAttribute;
019 import org.springframework.web.bind.annotation.RequestMapping;
020 import org.springframework.web.servlet.ModelAndView;
021
022 import javax.servlet.http.HttpServletRequest;
023 import javax.servlet.http.HttpServletResponse;
024
025 /**
026 * Created with IntelliJ IDEA.
027 * User: palanivel
028 * Date: 3/15/13
029 * Time: 11:08 AM
030 * To change this template use File | Settings | File Templates.
031 */
032 @Controller
033 @RequestMapping(value = "/fastAddController")
034 public class FastAddItemController extends UifControllerBase {
035 private static final Logger LOG = Logger.getLogger(FastAddItemController.class);
036
037 @Override
038 protected OleLoanForm createInitialForm(HttpServletRequest request) {
039 return new OleLoanForm();
040 }
041
042 @Override
043 @RequestMapping(params = "methodToCall=start")
044 public ModelAndView start(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
045 HttpServletRequest request, HttpServletResponse response) {
046 OleLoanForm oleLoanForm = (OleLoanForm) form;
047 OleLoanFastAdd oleLoanFastAdd = new OleLoanFastAdd();
048 oleLoanFastAdd.setCallNumberType(OLEConstants.DEFAULT_CALL_NUMBER_TYPE);
049 oleLoanFastAdd.setCallNumber(OLEConstants.DEFAULT_CALL_NUMBER);
050 oleLoanForm.setOleLoanFastAdd(oleLoanFastAdd);
051 return getUIFModelAndView(oleLoanForm, "FastAddItemViewPage");
052 }
053
054 /**
055 * Create a Bib and Instance record in docstore.
056 * @param form
057 * @param result
058 * @param request
059 * @param response
060 * @return
061 */
062 @RequestMapping(params = "methodToCall=createFastAddItem")
063 public ModelAndView createFastAddItem(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
064 HttpServletRequest request, HttpServletResponse response) {
065 LOG.debug("Inside the create fast add item method");
066 OleLoanForm oleLoanForm = (OleLoanForm) form;
067 String maxSessionTime = oleLoanForm.getMaxTimeForCheckOutConstant();
068 LOG.info("session timeout"+maxSessionTime);
069 if(maxSessionTime != null && !maxSessionTime.equalsIgnoreCase(""))
070 oleLoanForm.setMaxSessionTime(Integer.parseInt(maxSessionTime));
071 oleLoanForm.setInformation("");
072 oleLoanForm.setReturnInformation("");
073 LoanProcessor loanProcessor = new LoanProcessor();
074 if(!oleLoanForm.getOleLoanFastAdd().getBarcode().isEmpty() && !oleLoanForm.getOleLoanFastAdd().getCallNumberType().isEmpty() && !oleLoanForm.getOleLoanFastAdd().getCallNumber().isEmpty() && !oleLoanForm.getOleLoanFastAdd().getCheckinNote().isEmpty() && !oleLoanForm.getOleLoanFastAdd().getLocationName().isEmpty() && !oleLoanForm.getOleLoanFastAdd().getItemType().isEmpty()){
075 BibliographicRecord bibliographicRecord=loanProcessor.getBibliographicRecord(oleLoanForm.getOleLoanFastAdd().getTitle(),oleLoanForm.getOleLoanFastAdd().getAuthor());
076 Item item= loanProcessor.getItemRecord(oleLoanForm.getOleLoanFastAdd());
077 OleHoldings oleHoldings = loanProcessor.getHoldingRecord(oleLoanForm.getOleLoanFastAdd());
078 DocstoreHelperService docstoreHelperService=new DocstoreHelperService();
079 String responseXML=docstoreHelperService.persistNewToDocstoreForIngest(bibliographicRecord,item,oleHoldings);
080 ResponseHandler responseHandler = new ResponseHandler();
081 Response docStoreResponse = responseHandler.toObject(responseXML);
082 if(docStoreResponse!=null && !docStoreResponse.getStatus().equalsIgnoreCase("success")){
083 oleLoanForm.setInformation(docStoreResponse.getStatusMessage());
084 }
085 }else{
086 oleLoanForm.setInformation(OLEConstants.REQ_FIELD);
087 }
088 oleLoanForm.setItem(oleLoanForm.getOleLoanFastAdd().getBarcode());
089 oleLoanForm.setFastAddItemIndicator(true);
090 LoanController.fastAddBarcode=oleLoanForm.getItem();
091 return getUIFModelAndView(oleLoanForm, "FastAddItemViewPage");
092 }
093
094 }