1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.kuali.kfs.module.tem.document.service.impl;
20  
21  import java.util.ArrayList;
22  import java.util.HashMap;
23  import java.util.List;
24  import java.util.Map;
25  
26  import org.kuali.kfs.module.tem.TemPropertyConstants.TemProfileProperties;
27  import org.kuali.kfs.module.tem.businessobject.TemProfileArranger;
28  import org.kuali.kfs.module.tem.document.TravelArrangerDocument;
29  import org.kuali.kfs.module.tem.document.service.TravelArrangerDocumentService;
30  import org.kuali.rice.krad.service.BusinessObjectService;
31  import org.kuali.rice.krad.util.KRADPropertyConstants;
32  import org.kuali.rice.krad.util.ObjectUtils;
33  
34  @SuppressWarnings("rawtypes")
35  public class TravelArrangerDocumentServiceImpl implements TravelArrangerDocumentService {
36  
37      protected BusinessObjectService businessObjectService;
38  
39      @Override
40      public void createTravelProfileArranger(TravelArrangerDocument arrangerDoc) {
41          Integer profileId = arrangerDoc.getProfileId();
42          String arrangerId = arrangerDoc.getArrangerId();
43  
44          TemProfileArranger profileArranger = findProfileArranger(arrangerId, profileId);
45          if(ObjectUtils.isNull(profileArranger)) {
46             profileArranger = createNewTravelProfileArranger(arrangerDoc);
47          } else {
48              
49              profileArranger.setActive(true);
50              profileArranger.setPrimary(arrangerDoc.getPrimaryInd());
51              profileArranger.setTaInd(arrangerDoc.getTaInd());
52              profileArranger.setTrInd(arrangerDoc.getTrInd());
53          }
54  
55          businessObjectService.save(profileArranger);
56      }
57  
58      @Override
59      public void inactivateTravelProfileArranger(TravelArrangerDocument arrangerDoc) {
60          Integer profileId = arrangerDoc.getProfileId();
61          String arrangerId = arrangerDoc.getArrangerId();
62          TemProfileArranger profileArranger = findTemProfileArranger(arrangerId, profileId);
63          if(ObjectUtils.isNotNull(profileArranger)) {
64              profileArranger.setActive(Boolean.FALSE);
65              businessObjectService.save(profileArranger);
66          }
67  
68      }
69  
70      @Override
71      public TemProfileArranger findPrimaryTravelProfileArranger(String arrangerId, Integer profileId) {
72          Map fieldValues = new HashMap();
73          fieldValues.put("profileId", profileId);
74  
75          List<TemProfileArranger> profileArrangers = new ArrayList<TemProfileArranger>( businessObjectService.findMatching(TemProfileArranger.class, fieldValues));
76  
77          for(TemProfileArranger profileArranger: profileArrangers) {
78              if(profileArranger.getPrimary() && !profileArranger.getPrincipalId().equals(arrangerId)) {
79                  return profileArranger;
80              }
81          }
82          return null;
83      }
84  
85      
86  
87  
88  
89  
90      protected TemProfileArranger createNewTravelProfileArranger(TravelArrangerDocument arrangerDoc) {
91          TemProfileArranger profileArranger = new TemProfileArranger();
92          profileArranger.setActive(true);
93          profileArranger.setProfileId(arrangerDoc.getProfileId());
94          profileArranger.setPrincipalId(arrangerDoc.getArrangerId());
95          profileArranger.setPrimary(arrangerDoc.getPrimaryInd());
96          profileArranger.setTaInd(arrangerDoc.getTaInd());
97          profileArranger.setTrInd(arrangerDoc.getTrInd());
98  
99          return profileArranger;
100     }
101 
102     protected TemProfileArranger findProfileArranger(String principalId, Integer profileId) {
103         Map fieldValues = new HashMap();
104         fieldValues.put(TemProfileProperties.PRINCIPAL_ID, principalId);
105         fieldValues.put(TemProfileProperties.PROFILE_ID, profileId);
106 
107         List<TemProfileArranger> profileArrangers = new ArrayList<TemProfileArranger>( businessObjectService.findMatching(TemProfileArranger.class, fieldValues));
108         if(profileArrangers.size() == 1) {
109             return profileArrangers.get(0);
110         } else if (profileArrangers.size() == 0) {
111             return null;
112         }
113         return null;
114     }
115 
116     
117 
118 
119     @Override
120     public TemProfileArranger findTemProfileArranger(String principalId, Integer profileId) {
121         Map fieldValues = new HashMap();
122         fieldValues.put(TemProfileProperties.PRINCIPAL_ID, principalId);
123         fieldValues.put(TemProfileProperties.PROFILE_ID, profileId);
124         
125         fieldValues.put(KRADPropertyConstants.ACTIVE, "Y");
126 
127         List<TemProfileArranger> profileArrangers = new ArrayList<TemProfileArranger>( businessObjectService.findMatching(TemProfileArranger.class, fieldValues));
128         if(profileArrangers.size() == 1) {
129             return profileArrangers.get(0);
130         } else if (profileArrangers.size() == 0) {
131             return null;
132         }
133         return null;
134     }
135 
136     
137 
138 
139     @Override
140     public boolean hasArrangees(String principalId) {
141         Map<String, String> fieldValues = new HashMap<String, String>();
142         fieldValues.put(TemProfileProperties.PRINCIPAL_ID, principalId);
143         fieldValues.put(KRADPropertyConstants.ACTIVE, "Y");
144 
145         final int arrangeeCount = businessObjectService.countMatching(TemProfileArranger.class, fieldValues);
146         return arrangeeCount > 0;
147     }
148 
149     public BusinessObjectService getBusinessObjectService() {
150         return businessObjectService;
151     }
152 
153     public void setBusinessObjectService(BusinessObjectService businessObjectService) {
154         this.businessObjectService = businessObjectService;
155     }
156 }