View Javadoc
1   package org.kuali.ole.deliver.controller;
2   
3   import org.apache.commons.collections.CollectionUtils;
4   import org.apache.commons.lang.StringUtils;
5   import org.apache.log4j.Logger;
6   import org.kuali.ole.OLEConstants;
7   import org.kuali.ole.deliver.OleLoanDocumentsFromSolrBuilder;
8   import org.kuali.ole.deliver.bo.*;
9   import org.kuali.ole.deliver.processor.LoanProcessor;
10  import org.kuali.ole.deliver.service.OLEDeliverService;
11  import org.kuali.ole.deliver.service.OleDeliverRequestDocumentHelperServiceImpl;
12  import org.kuali.ole.krad.OleInquiryController;
13  import org.kuali.rice.krad.service.KRADServiceLocator;
14  import org.kuali.rice.krad.web.controller.InquiryController;
15  import org.kuali.rice.krad.web.form.InquiryForm;
16  import org.kuali.rice.krad.web.form.MaintenanceDocumentForm;
17  import org.kuali.rice.krad.web.form.UifFormBase;
18  import org.springframework.stereotype.Controller;
19  import org.springframework.validation.BindingResult;
20  import org.springframework.web.bind.annotation.ModelAttribute;
21  import org.springframework.web.bind.annotation.RequestMapping;
22  import org.springframework.web.bind.annotation.RequestMethod;
23  import org.springframework.web.servlet.ModelAndView;
24  
25  import javax.servlet.http.HttpServletRequest;
26  import javax.servlet.http.HttpServletResponse;
27  import java.util.ArrayList;
28  import java.util.HashMap;
29  import java.util.List;
30  import java.util.Map;
31  
32  /**
33   * Created with IntelliJ IDEA.
34   * User: aurojyotit
35   * Date: 10/27/14
36   * Time: 5:07 PM
37   * To change this template use File | Settings | File Templates.
38   */
39  @Controller
40  @RequestMapping(value = "/olePatronInquiry")
41  public class OlePatronDocumentInquiryController extends OleInquiryController {
42      private static final Logger LOG = Logger.getLogger(OlePatronDocumentInquiryController.class);
43  
44      private LoanProcessor loanProcessor;
45      private OleLoanDocumentsFromSolrBuilder oleLoanDocumentsFromSolrBuilder;
46  
47      private LoanProcessor getLoanProcessor() {
48          if (loanProcessor == null) {
49              loanProcessor = new LoanProcessor();
50          }
51          return loanProcessor;
52      }
53  
54      @RequestMapping(method = RequestMethod.POST, params = "methodToCall=hidePatronLoanedItem")
55      public ModelAndView hidePatronLoanedItem(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
56                                               HttpServletRequest request, HttpServletResponse response) {
57  
58          InquiryForm form = (InquiryForm) uifForm;
59          OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
60         // olePatronDocument.setOleLoanDocuments(new ArrayList<OleLoanDocument>());
61          olePatronDocument.setShowLoanedRecords(false);
62          return getUIFModelAndView(form);
63      }
64  
65      @RequestMapping(method = RequestMethod.POST, params = "methodToCall=showPatronLoanedItem")
66      public ModelAndView showPatronLoanedItem(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
67                                               HttpServletRequest request, HttpServletResponse response) {
68          InquiryForm form = (InquiryForm) uifForm;
69          OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
70          try {
71              olePatronDocument.setOleLoanDocuments(getOleLoanDocumentsFromSolrBuilder().getPatronLoanedItemBySolr
72                      (olePatronDocument.getOlePatronId(), null));
73              if(CollectionUtils.isNotEmpty(olePatronDocument.getOleLoanDocuments())) {
74                  for(OleLoanDocument oleLoanDocument : olePatronDocument.getOleLoanDocuments()) {
75                      if(StringUtils.isNotEmpty(oleLoanDocument.getRealPatronName())) {
76                          Map patronMap = new HashMap();
77                          patronMap.put(OLEConstants.OlePatron.PATRON_ID, oleLoanDocument.getRealPatronName());
78                          OlePatronDocument patronDocument = KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
79                          if(patronDocument != null){
80                              patronDocument = OLEDeliverService.populatePatronName(patronDocument);
81                              oleLoanDocument.setRealPatronName(patronDocument.getPatronName());
82                              oleLoanDocument.setProxyPatronBarcode(patronDocument.getBarcode());
83                              oleLoanDocument.setProxyPatronBarcodeUrl(OLEConstants.ASSIGN_INQUIRY_PATRON_ID + patronDocument.getOlePatronId() + OLEConstants.ASSIGN_PATRON_INQUIRY);
84                          }
85                      }
86                  }
87              }
88          } catch (Exception e) {
89              LOG.error("While fetching loan records error occured" + e);
90          }
91          olePatronDocument.setShowLoanedRecords(true);
92          return getUIFModelAndView(form);
93      }
94  
95      private OleLoanDocumentsFromSolrBuilder getOleLoanDocumentsFromSolrBuilder() {
96          if (null == oleLoanDocumentsFromSolrBuilder) {
97              oleLoanDocumentsFromSolrBuilder = new OleLoanDocumentsFromSolrBuilder();
98          }
99          return oleLoanDocumentsFromSolrBuilder;
100     }
101 
102     public void setOleLoanDocumentsFromSolrBuilder(OleLoanDocumentsFromSolrBuilder oleLoanDocumentsFromSolrBuilder) {
103         this.oleLoanDocumentsFromSolrBuilder = oleLoanDocumentsFromSolrBuilder;
104     }
105 
106     @Override
107     public ModelAndView start(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, HttpServletRequest request, HttpServletResponse response) {
108         return super.start(form, result, request, response);    //To change body of overridden methods use File | Settings | File Templates.
109     }
110 
111     @RequestMapping(method = RequestMethod.POST, params = "methodToCall=showPatronRequestedRecords")
112     public ModelAndView showPatronRequestedRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
113                                                    HttpServletRequest request, HttpServletResponse response) {
114         LOG.debug("Patron View : showing Patron Requested Records");
115         InquiryForm form = (InquiryForm) uifForm;
116         OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
117         try {
118             OleDeliverRequestDocumentHelperServiceImpl requestService = new OleDeliverRequestDocumentHelperServiceImpl();
119             List<OleDeliverRequestBo> oleDeliverRequestBoList = olePatronDocument.getOleDeliverRequestBos();
120             if (oleDeliverRequestBoList.size() > 0) {
121                 for (int i = 0; i < oleDeliverRequestBoList.size(); i++) {
122                     OleItemSearch oleItemSearch = requestService.getItemDetailsForPatron(oleDeliverRequestBoList.get(i).getItemUuid());
123                     if (oleItemSearch != null && oleItemSearch.getItemBarCode() != null) {
124                         oleDeliverRequestBoList.get(i).setTitle(oleItemSearch.getTitle());
125                         oleDeliverRequestBoList.get(i).setCallNumber(oleItemSearch.getCallNumber());
126                         oleDeliverRequestBoList.get(i).setAuthor(oleItemSearch.getAuthor());
127                         oleDeliverRequestBoList.get(i).setItemType(oleItemSearch.getItemType());
128                         oleDeliverRequestBoList.get(i).setItemStatus(oleItemSearch.getItemStatus());
129                         oleDeliverRequestBoList.get(i).setShelvingLocation(oleItemSearch.getShelvingLocation());
130                         oleDeliverRequestBoList.get(i).setCopyNumber(oleItemSearch.getCopyNumber());
131                     }
132                 }
133             }
134             olePatronDocument.setOleDeliverRequestBos(oleDeliverRequestBoList);
135         } catch (Exception e) {
136             LOG.error("While fetching Patron Requested Records error occured" + e);
137         }
138         olePatronDocument.setShowRequestedItems(true);
139         return getUIFModelAndView(form);
140     }
141 
142     @RequestMapping(method = RequestMethod.POST, params = "methodToCall=hidePatronRequestedRecords")
143     public ModelAndView hidePatronRequestedRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
144                                                    HttpServletRequest request, HttpServletResponse response) {
145         LOG.debug("Patron View : Hiding Patron Loaned Records");
146         InquiryForm form = (InquiryForm) uifForm;
147         OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
148        // olePatronDocument.setOleDeliverRequestBos(new ArrayList<OleDeliverRequestBo>());
149         olePatronDocument.setShowRequestedItems(false);
150         return getUIFModelAndView(form);
151     }
152 
153     @RequestMapping(method = RequestMethod.POST, params = "methodToCall=showTemporaryCirculationHistoryRecords")
154     public ModelAndView showTemporaryCirculationHistoryRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
155                                                                HttpServletRequest request, HttpServletResponse response) {
156         LOG.debug("Patron View : showing Patron TemporaryCirculationHistory Records");
157         InquiryForm form = (InquiryForm) uifForm;
158         OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
159         try {
160             olePatronDocument.setOleTemporaryCirculationHistoryRecords(getOleLoanDocumentsFromSolrBuilder().getPatronTemporaryCirculationHistoryRecords(olePatronDocument.getOlePatronId()));
161         } catch (Exception e) {
162             LOG.error("While fetching Patron TemporaryCirculationHistory Records error occured" + e);
163         }
164 
165         olePatronDocument.setShowTemporaryCirculationHistoryRecords(true);
166         return getUIFModelAndView(form);
167     }
168     @RequestMapping(method = RequestMethod.POST, params = "methodToCall=hideTemporaryCirculationHistoryRecords")
169     public ModelAndView hideTemporaryCirculationHistoryRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
170                                                                HttpServletRequest request, HttpServletResponse response) {
171         LOG.debug("Patron View : Hiding Patron Loaned Records");
172         InquiryForm form = (InquiryForm) uifForm;
173         OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
174       //  olePatronDocument.setOleTemporaryCirculationHistoryRecords(new ArrayList<OleTemporaryCirculationHistory>());
175         olePatronDocument.setShowTemporaryCirculationHistoryRecords(false);
176         return getUIFModelAndView(form);
177     }
178 }