View Javadoc
1   package org.kuali.ole.ncip.service.impl;
2   
3   import org.apache.log4j.Logger;
4   import org.extensiblecatalog.ncip.v2.service.*;
5   import org.kuali.ole.OLEConstants;
6   import org.kuali.ole.deliver.processor.LoanProcessor;
7   import org.kuali.ole.ncip.bo.*;
8   import org.kuali.ole.ncip.converter.OLELookupUserConverter;
9   import org.kuali.ole.ncip.service.OLECirculationService;
10  import org.kuali.ole.ncip.service.OLELookupUserService;
11  import org.kuali.ole.select.document.service.OleSelectDocumentService;
12  import org.kuali.ole.sys.context.SpringContext;
13  import org.kuali.rice.core.api.config.property.ConfigContext;
14  import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader;
15  
16  import java.math.BigDecimal;
17  import java.util.ArrayList;
18  import java.util.HashMap;
19  import java.util.List;
20  
21  /**
22   * Created with IntelliJ IDEA.
23   * User: maheswarang
24   * Date: 7/31/13
25   * Time: 12:58 PM
26   * To change this template use File | Settings | File Templates.
27   */
28  public class OLELookupUserServiceImpl implements OLELookupUserService {
29      private static final Logger LOG = Logger.getLogger(OLELookupUserServiceImpl.class);
30      private OLECirculationService oleCirculationService = getOleCirculationService();
31      private OLECirculationHelperServiceImpl oleCirculationHelperService= getOleCirculationHelperService();
32      private LoanProcessor loanProcessor;
33      private OLELookupUserConverter oleLookupUserConverter = getOleLookupUserConverter();
34      private OleSelectDocumentService oleSelectDocumentService;
35  
36  
37      public LoanProcessor getLoanProcessor() {
38          if (loanProcessor == null) {
39              loanProcessor = SpringContext.getBean(LoanProcessor.class);
40          }
41          return loanProcessor;
42      }
43  
44      public OLECirculationService getOleCirculationService() {
45          if (null == oleCirculationService) {
46              oleCirculationService = GlobalResourceLoader.getService(OLENCIPConstants.CIRCULATION_SERVICE);
47          }
48          return oleCirculationService;
49      }
50  
51      public void setOleCirculationService(OLECirculationService oleCirculationService) {
52          this.oleCirculationService = oleCirculationService;
53      }
54  
55      public OLECirculationHelperServiceImpl getOleCirculationHelperService() {
56          if (null == oleCirculationHelperService) {
57              oleCirculationHelperService = GlobalResourceLoader.getService(OLENCIPConstants.CIRCULATION_HELPER_SERVICE);
58          }
59          return oleCirculationHelperService;
60      }
61  
62      public void setOleCirculationHelperService(OLECirculationHelperServiceImpl oleCirculationHelperService) {
63          this.oleCirculationHelperService = oleCirculationHelperService;
64      }
65  
66      public OLELookupUserConverter getOleLookupUserConverter() {
67          if(null == oleLookupUserConverter ){
68              oleLookupUserConverter = GlobalResourceLoader.getService(OLENCIPConstants.LOOKUP_USER_CONVERTER);
69          }
70          return oleLookupUserConverter;
71      }
72  
73      public void setOleLookupUserConverter(OLELookupUserConverter oleLookupUserConverter) {
74          this.oleLookupUserConverter = oleLookupUserConverter;
75      }
76  
77      @Override
78      public LookupUserResponseData performService(LookupUserInitiationData initData,
79                                                   ServiceContext serviceContext,
80                                                   RemoteServiceManager serviceManager) {
81  
82          LookupUserResponseData responseData = new LookupUserResponseData();
83          oleCirculationService = getOleCirculationService();
84          oleCirculationHelperService = getOleCirculationHelperService();
85          OLELookupUserConverter OLELookupUserConverter = new org.kuali.ole.ncip.converter.OLELookupUserConverter();
86          //String lookUpUserResponseXml=OLECirculationService.lookupUser(initData.getUserId().getUserIdentifierValue(),"dev2");
87          String lookUpUserResponseXml = null;
88          OLELookupUser oleLookupUser = null;
89          List<Problem> problems = new ArrayList<Problem>();
90          AgencyId agencyId = null;
91          if (initData.getInitiationHeader() != null && initData.getInitiationHeader().getFromAgencyId() != null && initData.getInitiationHeader().getFromAgencyId().getAgencyId() != null && initData.getInitiationHeader().getFromAgencyId().getAgencyId().getValue() != null && !initData.getInitiationHeader().getFromAgencyId().getAgencyId().getValue().trim().isEmpty())
92              agencyId = new AgencyId(initData.getInitiationHeader().getFromAgencyId().getAgencyId().getValue());
93          else if (initData.getInitiationHeader() != null && initData.getInitiationHeader().getApplicationProfileType() != null && initData.getInitiationHeader().getApplicationProfileType().getValue() != null && !initData.getInitiationHeader().getApplicationProfileType().getValue().trim().isEmpty())
94              agencyId = new AgencyId(initData.getInitiationHeader().getApplicationProfileType().getValue());
95          else
96              agencyId = new AgencyId(getLoanProcessor().getParameter(OLENCIPConstants.AGENCY_ID_PARAMETER));
97  
98          String operatorId, itemType = "";
99          HashMap<String, String> agencyPropertyMap = oleCirculationHelperService.getAgencyPropertyMap(agencyId.getValue());
100         itemType = agencyPropertyMap.get(OLENCIPConstants.ITEM_TYPE);
101         operatorId = agencyPropertyMap.get(OLENCIPConstants.OPERATOR_ID);
102         Problem problem = new Problem();
103         ProblemType problemType = new ProblemType("");
104         if (agencyPropertyMap.size() > 0) {
105             try {
106                 LOG.info("User Id : "+initData.getUserId().getUserIdentifierValue() + " Operator Id : " + operatorId + " Agency Id "+agencyId.getValue());
107                 lookUpUserResponseXml = oleCirculationService.lookupUserForNCIP(initData.getUserId().getUserIdentifierValue(), operatorId, agencyId.getValue());
108                 oleLookupUser = (OLELookupUser) oleLookupUserConverter.getLookupUser(lookUpUserResponseXml);
109                 if (oleLookupUser.getMessage() != null) {
110                     if (oleLookupUser.getMessage().equalsIgnoreCase(ConfigContext.getCurrentContextConfig().getProperty(OLEConstants.RTRVD_SUCCESS))) {
111                         responseData = generateResponseDataFromLookupUser(oleLookupUser, initData, agencyId);
112                         responseData.setUserId(initData.getUserId());
113                     } else if (oleLookupUser.getMessage().equalsIgnoreCase(ConfigContext.getCurrentContextConfig().getProperty(OLEConstants.NO_PATRON_INFO))) {
114                         problem.setProblemDetail(ConfigContext.getCurrentContextConfig().getProperty(OLENCIPConstants.USER_UN_AVAILABLE));
115                         problem.setProblemElement(OLENCIPConstants.USER);
116                         problem.setProblemType(problemType);
117                         problem.setProblemValue(initData.getUserId().getUserIdentifierValue());
118                         problems.add(problem);
119                         responseData.setProblems(problems);
120                     } else if (oleLookupUser.getMessage().equalsIgnoreCase(ConfigContext.getCurrentContextConfig().getProperty(OLEConstants.INVALID_OPRTR_ID))) {
121                         problem.setProblemDetail(ConfigContext.getCurrentContextConfig().getProperty(OLENCIPConstants.OPERATOR_UN_AVAILABLE));
122                         problem.setProblemElement(OLENCIPConstants.OPERATOR);
123                         problem.setProblemType(problemType);
124                         problem.setProblemValue(initData.getUserId().getUserIdentifierValue());
125                         problems.add(problem);
126                         responseData.setProblems(problems);
127                     }
128                 }
129 
130             } catch (Exception e) {
131                 LOG.error(e);
132             }
133         } else {
134             problem.setProblemDetail(ConfigContext.getCurrentContextConfig().getProperty(OLENCIPConstants.INVALID_AGENCY_ID));
135             problem.setProblemElement(OLENCIPConstants.AGENCY_ID);
136             problem.setProblemType(problemType);
137             problem.setProblemValue(agencyId.getValue());
138             problems.add(problem);
139             responseData.setProblems(problems);
140         }
141 
142         return responseData;
143     }
144 
145     public LookupUserResponseData generateResponseDataFromLookupUser(OLELookupUser oleLookupUser, LookupUserInitiationData initData, AgencyId agencyId) {
146         LookupUserResponseData lookupUserResponseData = new LookupUserResponseData();
147         if (initData.getUserFiscalAccountDesired())
148             lookupUserResponseData.setUserFiscalAccounts(getUserFiscalAccounts(oleLookupUser.getOleItemFines(), agencyId));
149         if (initData.getLoanedItemsDesired())
150             lookupUserResponseData.setLoanedItems(getLoanedItems(oleLookupUser.getOleCheckedOutItems(), agencyId));
151         if (initData.getRequestedItemsDesired())
152             lookupUserResponseData.setRequestedItems(getRequestedItems(oleLookupUser.getOleHolds(), agencyId));
153         UserOptionalFields userOptionalFields = new UserOptionalFields();
154         PersonalNameInformation pni = new PersonalNameInformation();
155         String patronName = null;
156         String firstName = null;
157         String lastName = null;
158         String middleName = null;
159         if (oleLookupUser.getPatronName() != null) {
160             if (oleLookupUser.getPatronName().getFirstName() != null) {
161                 firstName = oleLookupUser.getPatronName().getFirstName();
162                 patronName =  firstName;
163             }
164             if (oleLookupUser.getPatronName().getMiddleName() != null) {
165                 middleName = oleLookupUser.getPatronName().getMiddleName();
166                 if(patronName!=null){
167                 patronName = patronName + " " + middleName;
168                 }else{
169                     patronName = middleName;
170                 }
171             }
172             if (oleLookupUser.getPatronName().getLastName() != null) {
173                 lastName = oleLookupUser.getPatronName().getLastName();
174                 if(patronName!=null){
175                 patronName = patronName + " " + lastName;
176                 }else{
177                     patronName = lastName;
178                 }
179             }
180             StructuredPersonalUserName structuredPersonalUserName = new StructuredPersonalUserName();
181             if (firstName != null) {
182                 structuredPersonalUserName.setGivenName(firstName);
183             }
184             if (lastName != null) {
185                 structuredPersonalUserName.setSurname(lastName);
186             }
187             pni.setStructuredPersonalUserName(structuredPersonalUserName);
188             pni.setUnstructuredPersonalUserName(patronName);
189         }
190 
191         NameInformation ni = new NameInformation();
192         ni.setPersonalNameInformation(pni);
193         //userOptionalFields.setNameInformation(ni);
194 
195         List<OLEUserPrivilege> oleUserPrivilegeList = oleLookupUser.getOleUserPrivileges();
196         List<UserPrivilege> userPrivilegeList = new ArrayList<UserPrivilege>();
197         UserPrivilege userPrivilege;
198         UserPrivilegeStatus userPrivilegeStatus;
199         UserPrivilegeStatusType userPrivilegeStatusType;
200         for (OLEUserPrivilege oleUserPrivilege : oleUserPrivilegeList) {
201             userPrivilege = new UserPrivilege();
202             userPrivilegeStatus = new UserPrivilegeStatus();
203             AgencyUserPrivilegeType agencyUserPrivilegeType = new AgencyUserPrivilegeType("", oleUserPrivilege.getUserPrivilegeType());
204             userPrivilegeStatusType = new UserPrivilegeStatusType("", oleUserPrivilege.getUserPrivilegeStatus());
205             userPrivilegeStatus.setUserPrivilegeStatusType(userPrivilegeStatusType);
206             userPrivilege.setAgencyUserPrivilegeType(agencyUserPrivilegeType);
207             userPrivilege.setUserPrivilegeDescription(oleUserPrivilege.getUserPrivilegeDescription());
208             userPrivilege.setAgencyId(agencyId);
209             userPrivilege.setUserPrivilegeStatus(userPrivilegeStatus);
210             userPrivilegeList.add(userPrivilege);
211         }
212         if (lookupUserResponseData.getUserOptionalFields() == null) {
213             lookupUserResponseData.setUserOptionalFields(new UserOptionalFields());
214         }
215         if (initData.getUserAddressInformationDesired()) {
216             userOptionalFields.setUserAddressInformations(retrieveAddress(oleLookupUser));
217         }
218         if (initData.getUserPrivilegeDesired()) {
219             userOptionalFields.setUserPrivileges(userPrivilegeList);
220         }
221         if (initData.getNameInformationDesired()) {
222             userOptionalFields.setNameInformation(ni);
223         }
224         lookupUserResponseData.setUserOptionalFields(userOptionalFields);
225         return lookupUserResponseData;
226     }
227 
228     private ArrayList<UserAddressInformation> retrieveAddress(OLELookupUser oleLookupUser) {
229         ArrayList<UserAddressInformation> userAddressInformationList = new ArrayList<UserAddressInformation>();
230         if (oleLookupUser.getPatronAddress() != null) {
231             userAddressInformationList.add(retrievePhysicalAddress(oleLookupUser));
232         }
233         if (oleLookupUser.getPatronEmail() != null) {
234             userAddressInformationList.add(retrieveElectronicAddress(oleLookupUser));
235         }
236         if (oleLookupUser.getPatronPhone() != null) {
237             userAddressInformationList.add(retrieveTelephoneNumber(oleLookupUser));
238         }
239         return userAddressInformationList;
240     }
241 
242     private UserAddressInformation retrievePhysicalAddress(OLELookupUser oleLookupUser) {
243         UserAddressInformation userAddressInformation = new UserAddressInformation();
244         PhysicalAddress physicalAddress = new PhysicalAddress();
245         StructuredAddress structuredAddress = new StructuredAddress();
246         structuredAddress.setLine1(oleLookupUser.getPatronAddress().getLine1());
247         structuredAddress.setLine2(oleLookupUser.getPatronAddress().getLine2());
248         structuredAddress.setPostalCode(oleLookupUser.getPatronAddress().getPostalCode());
249         structuredAddress.setCountry(oleLookupUser.getPatronAddress().getCountryCode());
250         structuredAddress.setRegion(oleLookupUser.getPatronAddress().getStateProvinceCode());
251         structuredAddress.setLocality(oleLookupUser.getPatronAddress().getCity());
252         physicalAddress.setStructuredAddress(structuredAddress);
253         UserAddressRoleType userAddressRoleType = new UserAddressRoleType(oleLookupUser.getPatronAddress().getAddressTypeCode());
254         userAddressInformation.setUserAddressRoleType(userAddressRoleType);
255         PhysicalAddressType physicalAddressType = new PhysicalAddressType(OLENCIPConstants.ADDRESS_TYPE_SCHEME, oleLookupUser.getPatronAddress().getAddressTypeCode());
256         physicalAddress.setPhysicalAddressType(physicalAddressType);
257         userAddressInformation.setPhysicalAddress(physicalAddress);
258         return userAddressInformation;
259     }
260 
261     private UserAddressInformation retrieveElectronicAddress(OLELookupUser oleLookupUser) {
262         ElectronicAddress electronicAddress = new ElectronicAddress();
263         electronicAddress.setElectronicAddressData(oleLookupUser.getPatronEmail().getEmailAddress());
264         ElectronicAddressType electronicAddressType = new ElectronicAddressType(getOleSelectDocumentService().getSelectParameterValue(OLENCIPConstants.EMAIL));
265         electronicAddress.setElectronicAddressType(electronicAddressType);
266         UserAddressInformation userAddressInformation = new UserAddressInformation();
267         UserAddressRoleType userAddressRoleType = new UserAddressRoleType(oleLookupUser.getPatronEmail().getEmailTypeCode());
268         userAddressInformation.setUserAddressRoleType(userAddressRoleType);
269         userAddressInformation.setElectronicAddress(electronicAddress);
270         return userAddressInformation;
271     }
272 
273     private UserAddressInformation retrieveTelephoneNumber(OLELookupUser oleLookupUser) {
274         if (oleLookupUser.getPatronPhone() != null) {
275             ElectronicAddress phone = new ElectronicAddress();
276             phone.setElectronicAddressData(oleLookupUser.getPatronPhone().getPhoneNumber());
277             phone.setElectronicAddressType(new ElectronicAddressType(OLENCIPConstants.TELEPHONE_CODE));
278             UserAddressInformation uai = new UserAddressInformation();
279             uai.setUserAddressRoleType(new UserAddressRoleType(oleLookupUser.getPatronPhone().getPhoneTypeCode()));
280             uai.setElectronicAddress(phone);
281             return uai;
282         } else return null;
283     }
284 
285     private List<LoanedItem> getLoanedItems(OLECheckedOutItems oleCheckedOutItems, AgencyId agencyId) {
286         LoanedItem loanedItem;
287         List<LoanedItem> loanedItems = new ArrayList<LoanedItem>();
288         if (oleCheckedOutItems != null && oleCheckedOutItems.getCheckedOutItems() != null) {
289             for (OLECheckedOutItem oleCheckedOutItems1 : oleCheckedOutItems.getCheckedOutItems()) {
290                 loanedItem = new LoanedItem();
291                 ItemId itemId = new ItemId();
292                 itemId.setAgencyId(agencyId);
293                 ItemIdentifierType itemIdentifierType = new ItemIdentifierType(OLENCIPConstants.IDENTIFIER_TYPE, oleCheckedOutItems1.getItemType());
294                 itemId.setItemIdentifierType(itemIdentifierType);
295                 itemId.setItemIdentifierValue(oleCheckedOutItems1.getItemId());
296                 loanedItem.setItemId(itemId);
297                 loanedItem.setReminderLevel(new BigDecimal(oleCheckedOutItems1.getNumberOfOverdueSent()));
298                 Amount amount = new Amount();
299                 CurrencyCode currencyCode = new CurrencyCode(OLENCIPConstants.USD, 1);
300                 amount.setCurrencyCode(currencyCode);
301                 amount.setMonetaryValue(new BigDecimal(0));
302                 loanedItem.setAmount(amount);
303                 List<BibliographicId> bibliographicIds = new ArrayList<BibliographicId>();
304                 BibliographicId bibliographicId = new BibliographicId();
305                 BibliographicItemId bibliographicItemId = new BibliographicItemId();
306                 bibliographicItemId.setBibliographicItemIdentifier(oleCheckedOutItems1.getItemId());
307                 BibliographicRecordId bibliographicRecordId = new BibliographicRecordId();
308                 bibliographicRecordId.setAgencyId(agencyId);
309                 bibliographicRecordId.setBibliographicRecordIdentifier(oleCheckedOutItems1.getCatalogueId());
310                 bibliographicId.setBibliographicRecordId(bibliographicRecordId);
311                 bibliographicId.setBibliographicItemId(bibliographicItemId);
312                 bibliographicIds.add(bibliographicId);
313                 loanedItem.setBibliographicIds(bibliographicIds);
314                 loanedItem.setDateDue(oleCirculationHelperService.getGregorianCalendarDate(oleCheckedOutItems1.getDueDate()));
315                 loanedItem.setTitle(oleCheckedOutItems1.getTitle());
316                 MediumType mediumType = new MediumType(OLENCIPConstants.MEDIUM_TYPE, oleCheckedOutItems1.getItemType());
317                 loanedItem.setMediumType(mediumType);
318                // loanedItem.setRenewalCount(new BigDecimal(oleCheckedOutItems1.getNumberOfRenewals()));
319                 loanedItem.setDateCheckedOut(oleCirculationHelperService.getGregorianCalendarDate(oleCheckedOutItems1.getLoanDate()));
320                 loanedItems.add(loanedItem);
321             }
322         }
323         return loanedItems;
324     }
325 
326 
327     private List<RequestedItem> getRequestedItems(OLEHolds oleHolds, AgencyId agencyId) {
328         RequestedItem requestedItem;
329         List<RequestedItem> requestedItems = new ArrayList<RequestedItem>();
330         if (oleHolds != null && oleHolds.getOleHoldList() != null) {
331             for (OLEHold oleHold : oleHolds.getOleHoldList()) {
332                 requestedItem = new RequestedItem();
333                 requestedItem.setHoldQueuePosition(new BigDecimal(oleHold.getPriority()));
334                 ItemId itemId = new ItemId();
335                 itemId.setItemIdentifierValue(oleHold.getItemId());
336                 ItemIdentifierType itemIdentifierType = new ItemIdentifierType(OLENCIPConstants.IDENTIFIER_TYPE, oleHold.getItemType());
337                 itemId.setItemIdentifierType(itemIdentifierType);
338                 requestedItem.setItemId(itemId);
339                 requestedItem.setItemId(itemId);
340                 RequestId requestId = new RequestId();
341                 requestId.setAgencyId(agencyId);
342                 requestId.setRequestIdentifierValue(oleHold.getRequestId());
343                 requestedItem.setRequestId(requestId);
344                 RequestType requestType = new RequestType(OLENCIPConstants.REQUEST_TYPES, oleHold.getRequestType());
345                 requestedItem.setRequestType(requestType);
346                 RequestStatusType requestStatusType = new RequestStatusType("");
347                 requestedItem.setRequestStatusType(requestStatusType);
348                 requestedItem.setDatePlaced(oleCirculationHelperService.getGregorianCalendarDate(oleHold.getCreateDate()));
349                 requestedItem.setPickupDate(oleCirculationHelperService.getGregorianCalendarDate(oleHold.getAvailableDate()));
350                 PickupLocation pickupLocation = new PickupLocation(oleHold.getPickupLocation());
351                 requestedItem.setPickupLocation(pickupLocation);
352                 requestedItem.setTitle(oleHold.getTitle());
353                 requestedItems.add(requestedItem);
354             }
355 
356         }
357         return requestedItems;
358     }
359 
360     private List<UserFiscalAccount> getUserFiscalAccounts(OLEItemFines oleItemFines, AgencyId agencyId) {
361         UserFiscalAccount userFiscalAccount;
362         List<UserFiscalAccount> userFiscalAccounts = new ArrayList<UserFiscalAccount>();
363 
364         if (oleItemFines != null && oleItemFines.getOleItemFineList() != null) {
365             for (OLEItemFine oleItemFine : oleItemFines.getOleItemFineList()) {
366                 userFiscalAccount = new UserFiscalAccount();
367                 AccountBalance accountBalance = new AccountBalance();
368                 CurrencyCode currencyCode = new CurrencyCode(OLENCIPConstants.USD, 1);
369                 accountBalance.setCurrencyCode(currencyCode);
370                 accountBalance.setMonetaryValue(new BigDecimal(oleItemFine.getBalance().intValue()));
371                 userFiscalAccount.setAccountBalance(accountBalance);
372                 List<AccountDetails> accountDetailsList = new ArrayList<AccountDetails>();
373                 AccountDetails accountDetails = new AccountDetails();
374                 accountDetails.setAccrualDate(oleCirculationHelperService.getGregorianCalendarDate(oleItemFine.getDateCharged()));
375                 FiscalTransactionInformation fiscalTransactionInformation = new FiscalTransactionInformation();
376                 Amount amount = new Amount();
377                 amount.setCurrencyCode(currencyCode);
378                 amount.setMonetaryValue(new BigDecimal(oleItemFine.getAmount().intValue()));
379                 fiscalTransactionInformation.setAmount(amount);
380                 PaymentMethodType paymentMethodType = new PaymentMethodType(OLENCIPConstants.PAYMENT_METHOD_TYPE, OLENCIPConstants.CASH);
381                 fiscalTransactionInformation.setPaymentMethodType(paymentMethodType);
382                 FiscalActionType fiscalActionType = new FiscalActionType(OLENCIPConstants.FISCAL_ACTION_TYPE, OLENCIPConstants.FINES);
383                 fiscalTransactionInformation.setFiscalActionType(fiscalActionType);
384                 FiscalTransactionType fiscalTransactionType = new FiscalTransactionType(OLENCIPConstants.FISCAL_TRANSACTION_TYPE, oleItemFine.getReason());
385                 fiscalTransactionInformation.setFiscalTransactionType(fiscalTransactionType);
386                 ItemDetails itemDetails = new ItemDetails();
387                 ItemId itemId = new ItemId();
388                 if (oleItemFine.getItemId() != null)
389                     itemId.setItemIdentifierValue(oleItemFine.getItemId());
390                 else
391                     itemId.setItemIdentifierValue("");
392                 itemId.setAgencyId(agencyId);
393                 ItemIdentifierType itemIdentifierType = new ItemIdentifierType(OLENCIPConstants.IDENTIFIER_TYPE, OLENCIPConstants.ITEM_BARCODES);
394                 itemId.setItemIdentifierType(itemIdentifierType);
395                 itemDetails.setItemId(itemId);
396                 BibliographicDescription bibliographicDescription = new BibliographicDescription();
397                 bibliographicDescription.setTitle(oleItemFine.getTitle());
398                 bibliographicDescription.setAuthor(oleItemFine.getAuthor());
399                 itemDetails.setBibliographicDescription(bibliographicDescription);
400                 fiscalTransactionInformation.setItemDetails(itemDetails);
401                 accountDetails.setFiscalTransactionInformation(fiscalTransactionInformation);
402                 accountDetailsList.add(accountDetails);
403                 userFiscalAccount.setAccountDetails(accountDetailsList);
404                 userFiscalAccounts.add(userFiscalAccount);
405             }
406         }
407         return userFiscalAccounts;
408     }
409 
410 
411     public OleSelectDocumentService getOleSelectDocumentService() {
412         if(oleSelectDocumentService == null){
413             oleSelectDocumentService = SpringContext.getBean(OleSelectDocumentService.class);
414         }
415         return oleSelectDocumentService;
416     }
417 
418     public void setOleSelectDocumentService(OleSelectDocumentService oleSelectDocumentService) {
419         this.oleSelectDocumentService = oleSelectDocumentService;
420     }
421 
422 
423 
424 }