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
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 }