1 package org.kuali.ole.ncip.service.impl;
2
3 import com.thoughtworks.xstream.XStream;
4 import org.extensiblecatalog.ncip.v2.service.*;
5 import org.kuali.ole.OLEConstants;
6 import org.kuali.ole.ncip.bo.OLECheckInItem;
7 import org.kuali.ole.ncip.bo.OLENCIPConstants;
8 import org.kuali.ole.ncip.converter.OLECheckInItemConverter;
9 import org.kuali.ole.ncip.service.OLECheckInItemService;
10 import org.kuali.ole.ncip.service.OLECirculationService;
11 import org.kuali.rice.core.api.config.property.ConfigContext;
12 import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader;
13
14 import java.util.ArrayList;
15 import java.util.HashMap;
16 import java.util.List;
17
18
19
20
21
22
23
24
25 public class OLECheckInItemServiceImpl implements OLECheckInItemService {
26 private OLECirculationService oleCirculationService;
27 private OLECheckInItemConverter oleCheckInItemConverter;
28 private OLECirculationHelperServiceImpl oleCirculationHelperService;
29
30 public OLECirculationService getOleCirculationService() {
31 if(null==oleCirculationService){
32 oleCirculationService = GlobalResourceLoader.getService(OLENCIPConstants.CIRCULATION_SERVICE);
33 }
34 return oleCirculationService;
35 }
36
37 public void setOleCirculationService(OLECirculationService oleCirculationService) {
38 this.oleCirculationService = oleCirculationService;
39 }
40
41 public OLECheckInItemConverter getOleCheckInItemConverter() {
42 if(null==oleCheckInItemConverter){
43 oleCheckInItemConverter = GlobalResourceLoader.getService(OLENCIPConstants.CHECKIN_ITEM_CONVERTER);
44 }
45 return oleCheckInItemConverter;
46 }
47
48 public void setOleCheckInItemConverter(OLECheckInItemConverter oleCheckInItemConverter) {
49 this.oleCheckInItemConverter = oleCheckInItemConverter;
50 }
51
52 public OLECirculationHelperServiceImpl getOleCirculationHelperService() {
53 if(null==oleCirculationHelperService){
54 oleCirculationHelperService = GlobalResourceLoader.getService(OLENCIPConstants.CIRCULATION_HELPER_SERVICE);
55 }
56 return oleCirculationHelperService;
57 }
58
59 public void setOleCirculationHelperService(OLECirculationHelperServiceImpl oleCirculationHelperService) {
60 this.oleCirculationHelperService = oleCirculationHelperService;
61 }
62
63 @Override
64 public CheckInItemResponseData performService(CheckInItemInitiationData initData, ServiceContext serviceContext, RemoteServiceManager serviceManager) throws ServiceException {
65 CheckInItemResponseData responseData = new CheckInItemResponseData();
66 oleCirculationService = getOleCirculationService();
67 oleCirculationHelperService = getOleCirculationHelperService();
68 oleCheckInItemConverter = getOleCheckInItemConverter();
69 List<Problem> problems = new ArrayList<Problem>();
70 String responseString = null;
71 AgencyId agencyId=null;
72 if(initData.getInitiationHeader()!=null && initData.getInitiationHeader().getFromAgencyId()!=null && initData.getInitiationHeader().getFromAgencyId().getAgencyId()!=null)
73 agencyId= new AgencyId(initData.getInitiationHeader().getFromAgencyId().getAgencyId().getValue());
74 else if(initData.getInitiationHeader()!=null && initData.getInitiationHeader().getApplicationProfileType()!=null)
75 agencyId= new AgencyId(initData.getInitiationHeader().getApplicationProfileType().getValue());
76 else
77 agencyId= new AgencyId(OLEConstants.AGENCY_ID);
78 String operatorId,itemType="";
79 HashMap<String,String> agencyPropertyMap = oleCirculationHelperService.getAgencyPropertyMap(agencyId.getValue());
80 itemType = agencyPropertyMap.get("itemType");
81 operatorId = agencyPropertyMap.get("operatorId");
82 try{
83 responseString = oleCirculationService.checkInItem("patronid", operatorId,initData.getItemId().getItemIdentifierValue(),"Y");
84 OLECheckInItem oleCheckInItem = (OLECheckInItem)oleCheckInItemConverter.generateCheckInItemObject(responseString);
85 if(oleCheckInItem!=null && oleCheckInItem.getErrorMessage()!=null && oleCheckInItem.getErrorMessage().equals(OLEConstants.SUCCESSFULLEY_CHECKED_IN)){
86 ItemId itemId = new ItemId();
87 itemId = setItemId(itemId,initData,oleCheckInItem);
88 responseData.setItemId(itemId);
89 UserId userId = new UserId();
90 userId = setUserId(userId,initData,oleCheckInItem);
91 responseData.setUserId(userId);
92 ItemOptionalFields itemOptionalFields = new ItemOptionalFields();
93 itemOptionalFields = setItemOptionalFields(itemOptionalFields,initData,oleCheckInItem);
94 responseData.setItemOptionalFields(itemOptionalFields);
95 }else{
96 Problem problem = new Problem();
97 ProblemType problemType = new ProblemType("");
98 problem.setProblemDetail(oleCheckInItem.getErrorMessage());
99 problem.setProblemElement("Item");
100 problem.setProblemType(problemType);
101 problem.setProblemValue("Item value:"+initData.getItemId().getItemIdentifierValue());
102 problems.add(problem);
103 responseData.setProblems(problems);
104 }
105
106 XStream xStream = new XStream();
107 System.out.println(xStream.toXML(responseData));
108
109 }catch (Exception e){
110 throw new RuntimeException(e);
111 }
112 return responseData;
113 }
114
115 private ItemId setItemId(ItemId itemId,CheckInItemInitiationData initData,OLECheckInItem oleCheckInItem)throws Exception{
116 AgencyId agencyId=null;
117 if(initData.getInitiationHeader()!=null && initData.getInitiationHeader().getFromAgencyId()!=null && initData.getInitiationHeader().getFromAgencyId().getAgencyId()!=null)
118 agencyId= new AgencyId(initData.getInitiationHeader().getFromAgencyId().getAgencyId().getValue());
119 else if(initData.getInitiationHeader()!=null && initData.getInitiationHeader().getApplicationProfileType()!=null)
120 agencyId= new AgencyId(initData.getInitiationHeader().getApplicationProfileType().getValue());
121 else
122 agencyId= new AgencyId(OLEConstants.AGENCY_ID);
123 String identifierType="";
124 HashMap<String,String> agencyPropertyMap = oleCirculationHelperService.getAgencyPropertyMap(agencyId.getValue());
125 identifierType = agencyPropertyMap.get("itemType");
126 itemId.setAgencyId(agencyId);
127 ItemIdentifierType itemIdentifierType = new ItemIdentifierType("Scheme",identifierType);
128 itemId.setItemIdentifierType(itemIdentifierType);
129 itemId.setItemIdentifierValue(initData.getItemId().getItemIdentifierValue());
130 return itemId;
131 }
132
133 private UserId setUserId(UserId userId,CheckInItemInitiationData initData,OLECheckInItem oleCheckInItem)throws Exception{
134 AgencyId agencyId=null;
135 if(initData.getInitiationHeader()!=null && initData.getInitiationHeader().getFromAgencyId()!=null && initData.getInitiationHeader().getFromAgencyId().getAgencyId()!=null)
136 agencyId= new AgencyId(initData.getInitiationHeader().getFromAgencyId().getAgencyId().getValue());
137 else if(initData.getInitiationHeader()!=null && initData.getInitiationHeader().getApplicationProfileType()!=null)
138 agencyId= new AgencyId(initData.getInitiationHeader().getApplicationProfileType().getValue());
139 else
140 agencyId= new AgencyId(OLEConstants.AGENCY_ID);
141 UserIdentifierType userIdentifierType = new UserIdentifierType(oleCheckInItem.getUserType(),oleCheckInItem.getUserType());
142 userId.setUserIdentifierType(userIdentifierType);
143 if(oleCheckInItem.getUserId()!=null)
144 userId.setUserIdentifierValue(oleCheckInItem.getUserId());
145 else
146 userId.setUserIdentifierValue(" ");
147 return userId;
148 }
149
150 private ItemOptionalFields setItemOptionalFields(ItemOptionalFields itemOptionalFields,CheckInItemInitiationData initData,OLECheckInItem oleCheckInItem)throws Exception{
151 BibliographicDescription bibliographicDescription = new BibliographicDescription();
152 bibliographicDescription.setAuthor(oleCheckInItem.getTitle());
153 bibliographicDescription.setTitle(oleCheckInItem.getAuthor());
154 itemOptionalFields.setBibliographicDescription(bibliographicDescription);
155 ItemDescription itemDescription = new ItemDescription();
156 itemDescription.setCallNumber(oleCheckInItem.getCallNumber());
157 itemOptionalFields.setItemDescription(itemDescription);
158 return itemOptionalFields;
159 }
160
161
162 }