001 package org.kuali.ole.ingest.action; 002 003 import org.kuali.ole.DataCarrierService; 004 import org.kuali.ole.OLEConstants; 005 import org.kuali.ole.docstore.model.xmlpojo.ingest.Response; 006 import org.kuali.ole.docstore.model.xmlpojo.ingest.ResponseDocument; 007 import org.kuali.ole.docstore.model.xstream.ingest.ResponseHandler; 008 import org.kuali.ole.editor.service.DiscoveryHelperService; 009 import org.kuali.ole.editor.service.DocstoreHelperService; 010 import org.kuali.ole.ingest.pojo.ProfileAttributeBo; 011 import org.kuali.ole.pojo.OleBibRecord; 012 import org.kuali.ole.pojo.bib.BibliographicRecord; 013 import org.kuali.ole.service.OverlayHelperService; 014 import org.kuali.ole.service.impl.OverlayHelperServiceImpl; 015 import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader; 016 import org.kuali.rice.krms.api.engine.ExecutionEnvironment; 017 import org.kuali.rice.krms.framework.engine.Action; 018 019 import java.util.Iterator; 020 import java.util.List; 021 import java.util.Map; 022 023 /** 024 * CreateBibAction is the action class for BatchIngest(Staff upload screen) which creates a bibliographic 025 * record in Docstore. 026 */ 027 public class DeleteReplaceAction implements Action { 028 private DocstoreHelperService docstoreHelperService; 029 private DiscoveryHelperService discoveryHelperService; 030 private OverlayHelperService overlayHelperService; 031 032 /** 033 * This method will delete the existing bib and instance record and replace with the new record. 034 * @param executionEnvironment 035 */ 036 @Override 037 public void execute(ExecutionEnvironment executionEnvironment) { 038 DataCarrierService dataCarrierService = getDataCarrierService(); 039 List<ProfileAttributeBo> profileAttributes = (List<ProfileAttributeBo>) dataCarrierService.getData(OLEConstants.PROFILE_ATTRIBUTE_LIST); 040 BibliographicRecord bibliographicRecord = (BibliographicRecord) dataCarrierService.getData(OLEConstants.REQUEST_BIB_RECORD); 041 try { 042 List bibInfoList = (List) dataCarrierService.getData(OLEConstants.BIB_INFO_LIST_FROM_SOLR_RESPONSE); 043 String bibUUID = null; 044 for (Iterator iterator = bibInfoList.iterator(); iterator.hasNext(); ) { 045 Map map = (Map) iterator.next(); 046 if (map.containsKey(OLEConstants.BIB_UNIQUE_ID)) { 047 bibUUID = (String) map.get(OLEConstants.BIB_UNIQUE_ID); 048 break; 049 } 050 } 051 052 List responseFromSOLR = getDiscoveryHelperService().getResponseFromSOLR("DocType=bibliographic and id", bibUUID); 053 String instanceUUID = null; 054 for (Iterator iterator = responseFromSOLR.iterator(); iterator.hasNext(); ) { 055 Map map = (Map) iterator.next(); 056 if (map.containsKey(OLEConstants.BIB_INSTANCE_ID)) { 057 List list =(List)map.get(OLEConstants.BIB_INSTANCE_ID); 058 instanceUUID =list !=null & list.size()>0 ?(String) list.get(0):null; 059 break; 060 } 061 } 062 063 String deleteBibResponseXMLString = getDocstoreHelperService().deleteDocstoreRecord(bibUUID); 064 String deleteInstanceResponseXMLString = docstoreHelperService.deleteDocstoreRecord(instanceUUID); 065 066 String responseFromDocstore = getDocstoreHelperService().persistNewToDocstoreForIngest(bibliographicRecord, profileAttributes); 067 ResponseHandler responseHander = new ResponseHandler(); 068 Response response = responseHander.toObject(responseFromDocstore); 069 instanceUUID = getOverlayHelperService().getUUID(response, OLEConstants.INSTANCE_DOC_TYPE); 070 071 List bibInfo = getDiscoveryHelperService().getBibInformationFromInsatnceId(instanceUUID); 072 073 OleBibRecord oleBibRecord = new OleBibRecord(); 074 Map<String, List> bibFieldValues = (Map<String, List>) bibInfo.get(0); 075 oleBibRecord.setBibAssociatedFieldsValueMap(bibFieldValues); 076 oleBibRecord.setLinkedInstanceId(instanceUUID); 077 oleBibRecord.setBibUUID(getOverlayHelperService().getUUID(response, OLEConstants.BIB_DOC_TYPE)); 078 executionEnvironment.getEngineResults().setAttribute(OLEConstants.OLE_BIB_RECORD, oleBibRecord); 079 executionEnvironment.getEngineResults().setAttribute(OLEConstants.OVERLAY_DELETE_REPLACE, true); 080 } catch (Exception e) { 081 executionEnvironment.getEngineResults().setAttribute(OLEConstants.OVERLAY_DELETE_REPLACE, null); 082 } 083 } 084 085 /** 086 * This method simulate the executionEnvironment. 087 * @param executionEnvironment 088 */ 089 090 @Override 091 public void executeSimulation(ExecutionEnvironment executionEnvironment) { 092 execute(executionEnvironment); 093 } 094 095 /** 096 * Gets the docstoreHelperService attribute. 097 * @return Returns the docstoreHelperService. 098 */ 099 public DocstoreHelperService getDocstoreHelperService() { 100 if(docstoreHelperService == null){ 101 docstoreHelperService = new DocstoreHelperService(); 102 } 103 return docstoreHelperService; 104 } 105 106 /** 107 * Sets the docstoreHelperService attribute value. 108 * @param docstoreHelperService .The docstoreHelperService to set. 109 */ 110 public void setDocstoreHelperService(DocstoreHelperService docstoreHelperService) { 111 this.docstoreHelperService = docstoreHelperService; 112 } 113 114 /** 115 * Sets the discoveryHelperService attribute value. 116 * @param discoveryHelperService .The discoveryHelperService to set. 117 */ 118 public void setDiscoveryHelperService(DiscoveryHelperService discoveryHelperService) { 119 this.discoveryHelperService = discoveryHelperService; 120 } 121 122 /** 123 * Gets the discoveryHelperService attribute. 124 * @return Returns discoveryHelperService. 125 */ 126 public DiscoveryHelperService getDiscoveryHelperService() { 127 if(discoveryHelperService == null){ 128 discoveryHelperService = new DiscoveryHelperService(); 129 } 130 return discoveryHelperService; 131 } 132 133 /** 134 * Gets the dataCarrierService attribute. 135 * @return Returns dataCarrierService. 136 */ 137 protected DataCarrierService getDataCarrierService() { 138 return GlobalResourceLoader.getService(OLEConstants.DATA_CARRIER_SERVICE); 139 } 140 141 public OverlayHelperService getOverlayHelperService() { 142 if(overlayHelperService == null){ 143 overlayHelperService = new OverlayHelperServiceImpl(); 144 } 145 return overlayHelperService; 146 } 147 }