1 package org.kuali.ole.batch.impl;
2
3 import org.apache.log4j.Logger;
4 import org.kuali.ole.OLEConstants;
5 import org.kuali.ole.batch.service.BatchProcessDeleteService;
6 import org.kuali.ole.deliver.bo.OleDeliverRequestBo;
7 import org.kuali.ole.deliver.bo.OleLoanDocument;
8 import org.kuali.ole.describe.service.DocstoreHelperService;
9 import org.kuali.ole.docstore.model.xmlpojo.ingest.Response;
10 import org.kuali.ole.select.businessobject.OleCopy;
11 import org.kuali.rice.krad.service.BusinessObjectService;
12 import org.kuali.rice.krad.service.KRADServiceLocator;
13 import java.util.*;
14
15
16
17
18
19
20
21
22
23 public class BatchProcessDeleteServiceImpl implements BatchProcessDeleteService {
24
25 private static final Logger LOG = Logger.getLogger(BatchProcessDeleteServiceImpl.class);
26 private DocstoreHelperService docstoreHelperService;
27
28
29 private DocstoreHelperService getDocstoreHelperService() {
30 if (docstoreHelperService == null)
31 docstoreHelperService = new DocstoreHelperService();
32 return docstoreHelperService;
33 }
34
35 @Override
36 public int performBatchDelete(List docBibIds, String profileField) throws Exception {
37 int count = 0;
38 List<Response> responseList = null;
39 if (docBibIds != null && docBibIds.size() > 0) {
40 responseList = getDocstoreHelperService().batchDeleteRecords(docBibIds);
41 }
42 if (responseList != null && responseList.size() > 0) {
43 count = responseList.get(0).getDocuments().size();
44 }
45
46
47 return count;
48 }
49
50 public List getItemIdList(String bibId) throws Exception {
51 List itemIdList = new ArrayList(0);
52 itemIdList = getDocstoreHelperService().getItemIdList(bibId);
53 return itemIdList;
54 }
55
56 public List getBibIdsForBatchDelete(String searchMrcFieldData, String profileFiled) throws Exception {
57 BusinessObjectService boService = KRADServiceLocator.getBusinessObjectService();
58 searchMrcFieldData = searchMrcFieldData.replace("\"", "'");
59 List bibIdList = getDocstoreHelperService().getBibIdsForBatchDelete(searchMrcFieldData, profileFiled);
60 if (bibIdList.size() == 1) {
61 Map<String, String> map = new HashMap<>();
62 map.put(OLEConstants.BIB_ID, (String) bibIdList.get(0));
63 List<OleCopy> listOfValues = (List<OleCopy>) boService.findMatching(OleCopy.class, map);
64 if (listOfValues.size() != 0) {
65 return new ArrayList(0);
66 }
67 else {
68
69 List<String> itemIdList = getItemIdList((String) bibIdList.get(0));
70 for(String itemId:itemIdList) {
71 Map<String, String> itemMap = new HashMap<>();
72 itemMap.put("itemUuid", itemId);
73 List<OleLoanDocument> oleLoanDocuments = (List<OleLoanDocument>) boService.findMatching(OleLoanDocument.class, itemMap);
74 if(oleLoanDocuments.size() !=0){
75 return new ArrayList(0);
76 }
77 else {
78 Map<String, String> reqMap = new HashMap<>();
79 reqMap.put("itemUuid", itemId);
80 List<OleDeliverRequestBo> oleDeliverRequestBos = (List<OleDeliverRequestBo>) boService.findMatching(OleDeliverRequestBo.class, reqMap);
81 if(oleDeliverRequestBos.size() != 0){
82 return new ArrayList(0);
83 }
84 }
85
86 }
87 }
88 }
89
90
91 return bibIdList;
92 }
93
94 }