View Javadoc
1   package org.kuali.ole.loaders.common.service.impl;
2   
3   import org.apache.commons.collections.CollectionUtils;
4   import org.apache.log4j.Logger;
5   import org.codehaus.jackson.map.ObjectMapper;
6   import org.codehaus.jettison.json.JSONArray;
7   import org.codehaus.jettison.json.JSONException;
8   import org.codehaus.jettison.json.JSONObject;
9   import org.kuali.ole.loaders.common.bo.OLELoaderImportResponseBo;
10  import org.kuali.ole.loaders.common.bo.OLELoaderResponseBo;
11  import org.kuali.ole.loaders.common.service.OLELoaderService;
12  import org.kuali.ole.loaders.deliver.service.OLEBorrowerTypeLoaderHelperService;
13  import org.kuali.ole.loaders.deliver.service.OLEBorrowerTypeLoaderService;
14  import org.kuali.ole.loaders.deliver.service.impl.OLEBorrowerTypeLoaderHelperServiceImpl;
15  import org.kuali.ole.loaders.deliver.service.impl.OLEBorrowerTypeLoaderServiceImpl;
16  import org.kuali.ole.loaders.deliver.service.impl.OLEPatronLoaderHelperServiceImpl;
17  import org.kuali.ole.loaders.deliver.service.impl.OLEPatronLoaderServiceImpl;
18  import org.kuali.ole.loaders.describe.service.*;
19  import org.kuali.ole.loaders.describe.service.impl.*;
20  
21  import javax.ws.rs.core.Response;
22  import java.util.Iterator;
23  
24  /**
25   * Created by sheiksalahudeenm on 2/16/15.
26   */
27  public class OLELoaderServiceImpl implements OLELoaderService {
28  
29      private static final Logger LOG = Logger.getLogger(OLELoaderServiceImpl.class);
30  
31      private OLEShelvingSchemeLoaderService oleShelvingSchemeLoaderService;
32      private OLEShelvingSchemeLoaderHelperService oleShelvingSchemeLoaderHelperService;
33  
34      private OLELocationLoaderService oleLocationLoaderService;
35      private OLELocationLoaderHelperService oleLocationLoaderHelperService;
36  
37      private OLEBorrowerTypeLoaderService oleBorrowerTypeLoaderService;
38      private OLEBorrowerTypeLoaderHelperService oleBorrowerTypeLoaderHelperService;
39  
40  
41      private OLEItemTypeLoaderService oleItemTypeLoaderService;
42      private OLEItemTypeLoaderHelperService oleItemTypeLoaderHelperService;
43  
44      private OLEStatisticalSearchingCodeLoaderService oleStatisticalSearchingCodeLoaderService;
45      private OLEStatisticalSearchingCodeLoaderHelperService oleStatisticalSearchingCodeLoaderHelperService;
46  
47      private OLEItemAvailableStatusLoaderService oleItemAvailableStatusLoaderService;
48      private OLEItemAvailableStatusLoaderHelperService oleItemAvailableStatusLoaderHelperService;
49  
50      private OLEBibliographicRecordStatusLoaderService oleBibliographicRecordStatusLoaderService;
51      private OLEBibliographicRecordStatusLoaderHelperService oleBibliographicRecordStatusLoaderHelperService;
52  
53      private OLEPatronLoaderServiceImpl olePatronLoaderService;
54      private OLEPatronLoaderHelperServiceImpl olePatronLoaderHelperService;
55  
56      @Override
57      public OLELoaderResponseBo generateResponse(String message, int statusCode) {
58          OLELoaderResponseBo oleLoaderResponseBo=new OLELoaderResponseBo();
59          oleLoaderResponseBo.setMessage(message);
60          oleLoaderResponseBo.setStatusCode(statusCode);
61          return oleLoaderResponseBo;
62      }
63  
64      @Override
65      public OLELoaderResponseBo generateResponse(String message, int statusCode,String details) {
66          OLELoaderResponseBo oleLoaderResponseBo=new OLELoaderResponseBo();
67          oleLoaderResponseBo.setMessage(message);
68          oleLoaderResponseBo.setStatusCode(statusCode);
69          oleLoaderResponseBo.setDetails(details);
70          return oleLoaderResponseBo;
71      }
72  
73      public Response returnLoaderAPIResponse(String context, Object object){
74          String response ="";
75          JSONObject jsonObject = new JSONObject();
76          try {
77              ObjectMapper mapper = new ObjectMapper();
78              JSONObject jsonObject1 = new JSONObject(mapper.writeValueAsString(object));
79              jsonObject.put("@context",context);
80              Iterator<String> keys = jsonObject1.keys();
81              while(keys.hasNext()){
82                  String key = keys.next();
83                  String val = jsonObject1.getString(key);
84                  jsonObject.put(key, val);
85              }
86              LOG.info(jsonObject.toString());
87          } catch (Exception e) {
88              e.printStackTrace();
89          }
90          if(object instanceof  OLELoaderResponseBo){
91              OLELoaderResponseBo oleLoaderResponseBo = (OLELoaderResponseBo) object;
92              return  Response.status(oleLoaderResponseBo.getStatusCode()).entity(jsonObject.toString()).build();
93          }else{
94              return  Response.status(200).entity(jsonObject.toString()).build();
95          }
96      }
97  
98  
99      public JSONObject getJsonObjectFromString(String body){
100         JSONObject jsonObject = null;
101         try {
102             jsonObject = new JSONObject(body);
103         } catch (JSONException e) {
104             e.printStackTrace();
105         }
106         return jsonObject;
107     }
108 
109     public JSONArray getJsonArrayFromString(String body){
110         JSONArray jsonArray = null;
111         try {
112             jsonArray = new JSONArray(body);
113         } catch (JSONException e) {
114             e.printStackTrace();
115         }
116         return jsonArray;
117     }
118 
119     public String getStringValueFromJsonObject(JSONObject jsonObject, String key){
120         String returnValue = null;
121         try {
122             returnValue = jsonObject.getString(key);
123         } catch (JSONException e) {
124             e.printStackTrace();
125         }
126         return  returnValue;
127     }
128 
129     @Override
130     public JSONObject getJsonObjectValueFromJsonObject(JSONObject jsonObject, String key) {
131         JSONObject returnValue = null;
132         try {
133             returnValue = jsonObject.getJSONObject(key);
134         } catch (JSONException e) {
135             e.printStackTrace();
136         }
137         return  returnValue;
138     }
139 
140     @Override
141     public JSONArray getJsonArrayValueFromJsonObject(JSONObject jsonObject, String key) {
142         JSONArray returnValue = null;
143         try {
144             returnValue = jsonObject.getJSONArray(key);
145         } catch (JSONException e) {
146             e.printStackTrace();
147         }
148         return  returnValue;
149     }
150 
151     @Override
152     public Object getLoaderService(String serviceName) {
153         if(serviceName.equals("location")){
154             if(oleLocationLoaderService == null){
155                 oleLocationLoaderService = new OLELocationLoaderServiceImpl();
156             }
157             return oleLocationLoaderService;
158         }else if(serviceName.equals("shelvingScheme")){
159             if(oleShelvingSchemeLoaderService == null){
160                 oleShelvingSchemeLoaderService = new OLEShelvingSchemeLoaderServiceImpl();
161             }
162             return oleShelvingSchemeLoaderService;
163         }else if(serviceName.equals("borrowerType")){
164             if(oleBorrowerTypeLoaderService == null){
165                 oleBorrowerTypeLoaderService = new OLEBorrowerTypeLoaderServiceImpl();
166             }
167             return oleBorrowerTypeLoaderService;
168         }else if(serviceName.equals("itemType")){
169             if(oleItemTypeLoaderService == null){
170                 oleItemTypeLoaderService = new OLEItemTypeLoaderServiceImpl();
171             }
172             return oleItemTypeLoaderService;
173         }else if(serviceName.equals("statisticalSearchingCode")){
174             if(oleStatisticalSearchingCodeLoaderService == null){
175                 oleStatisticalSearchingCodeLoaderService = new OLEStatisticalSearchingCodeLoaderServiceImpl();
176             }
177             return oleStatisticalSearchingCodeLoaderService;
178         }else if(serviceName.equals("itemAvailableStatus")){
179             if(oleItemAvailableStatusLoaderService == null){
180                 oleItemAvailableStatusLoaderService = new OLEItemAvailableStatusLoaderServiceImpl();
181             }
182             return oleItemAvailableStatusLoaderService;
183         }else if(serviceName.equals("bibliographicRecordStatus")){
184             if(oleBibliographicRecordStatusLoaderService == null){
185                 oleBibliographicRecordStatusLoaderService = new OLEBibliographicRecordStatusLoaderServiceImpl();
186             }
187             return oleBibliographicRecordStatusLoaderService;
188         }else if(serviceName.equals("patron")){
189             if(olePatronLoaderService == null){
190                 olePatronLoaderService = new OLEPatronLoaderServiceImpl();
191             }
192             return olePatronLoaderService;
193         }
194         return null;
195     }
196 
197     @Override
198     public Object getLoaderHelperService(String serviceName) {
199         if(serviceName.equals("location")){
200             if(oleLocationLoaderHelperService == null){
201                 oleLocationLoaderHelperService = new OLELocationLoaderHelperServiceImpl();
202             }
203             return oleLocationLoaderHelperService;
204         }else if(serviceName.equals("shelvingScheme")){
205             if(oleShelvingSchemeLoaderHelperService == null){
206                 oleShelvingSchemeLoaderHelperService = new OLEShelvingSchemeLoaderHelperServiceImpl();
207             }
208             return oleShelvingSchemeLoaderHelperService;
209         } else if(serviceName.equals("borrowerType")){
210             if(oleBorrowerTypeLoaderHelperService == null){
211                 oleBorrowerTypeLoaderHelperService = new OLEBorrowerTypeLoaderHelperServiceImpl();
212             }
213             return oleBorrowerTypeLoaderHelperService;
214         }else if(serviceName.equals("itemType")){
215             if(oleItemTypeLoaderHelperService == null){
216                 oleItemTypeLoaderHelperService = new OLEItemTypeLoaderHelperServiceImpl();
217             }
218             return oleItemTypeLoaderHelperService;
219         }else if(serviceName.equals("statisticalSearchingCode")){
220             if(oleStatisticalSearchingCodeLoaderHelperService == null){
221                 oleStatisticalSearchingCodeLoaderHelperService = new OLEStatisticalSearchingCodeLoaderHelperServiceImpl();
222             }
223             return oleStatisticalSearchingCodeLoaderHelperService;
224         }else if(serviceName.equals("itemAvailableStatus")){
225             if(oleItemAvailableStatusLoaderHelperService == null){
226                 oleItemAvailableStatusLoaderHelperService = new OLEItemAvailableStatusLoaderHelperServiceImpl();
227             }
228             return oleItemAvailableStatusLoaderHelperService;
229         }else if(serviceName.equals("bibliographicRecordStatus")){
230             if(oleBibliographicRecordStatusLoaderHelperService == null){
231                 oleBibliographicRecordStatusLoaderHelperService = new OLEBibliographicRecordStatusLoaderHelperServiceImpl();
232             }
233             return oleBibliographicRecordStatusLoaderHelperService;
234         }else if(serviceName.equals("patron")){
235             if(olePatronLoaderHelperService == null){
236                 olePatronLoaderHelperService = new OLEPatronLoaderHelperServiceImpl();
237             }
238             return olePatronLoaderHelperService;
239         }
240         return null;
241     }
242 
243     @Override
244     public Response formResponseForImport(Object object, String context) {
245         if(object instanceof OLELoaderImportResponseBo){
246             if(CollectionUtils.isNotEmpty(((OLELoaderImportResponseBo) object).getOleRejectedBos())){
247                 String rejectedBosIndexs = "";
248                 int count = 1;
249                 for(Integer index : ((OLELoaderImportResponseBo) object).getOleRejectedBos()){
250                     if(count == 1){
251                         rejectedBosIndexs = String.valueOf(index);
252                         count++;
253                     }else{
254                         rejectedBosIndexs += ","+String.valueOf(index);
255                     }
256                 }
257                 JSONObject jsonObject = new JSONObject();
258                 try {
259                     jsonObject.put("@context", context);
260                     jsonObject.put("items",((OLELoaderImportResponseBo) object).getOleCreatedBos());
261                 } catch (JSONException e) {
262                     e.printStackTrace();
263                 }
264                 if(CollectionUtils.isNotEmpty(((OLELoaderImportResponseBo) object).getOleRejectedBos()) && CollectionUtils.isEmpty(((OLELoaderImportResponseBo) object).getOleCreatedBos())){
265                     return Response.status(400).entity("").build();
266                 }else{
267                     return Response.status(200).entity(jsonObject).header("X-OLE-Rejected", rejectedBosIndexs).build();
268                 }
269             }else{
270                 JSONObject jsonObject = new JSONObject();
271                 try {
272                     jsonObject.put("@context",context);
273                     jsonObject.put("items",((OLELoaderImportResponseBo) object).getOleCreatedBos());
274                 } catch (JSONException e) {
275                     e.printStackTrace();
276                 }
277                 return Response.status(201).entity(jsonObject).build();
278             }
279         }
280         return null;
281     }
282 }