View Javadoc

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   * Created with IntelliJ IDEA.
20   * User: maheswarang
21   * Date: 7/31/13
22   * Time: 1:27 PM
23   * To change this template use File | Settings | File Templates.
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 }