View Javadoc
1   package org.kuali.ole.deliver.util;
2   
3   import org.apache.commons.lang3.StringUtils;
4   import org.kuali.ole.deliver.bo.OleCirculationDesk;
5   import org.kuali.ole.deliver.bo.OleDeliverRequestBo;
6   import org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.ItemRecord;
7   import org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.ItemStatusRecord;
8   import org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.ItemTypeRecord;
9   import org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.LocationsCheckinCountRecord;
10  
11  import java.util.ArrayList;
12  import java.util.Iterator;
13  import java.util.List;
14  
15  /**
16   * Created by pvsubrah on 6/5/15.
17   */
18  public class OleItemRecordForCirc {
19      private String itemLocation;
20      private String itemLibraryLocation;
21      private String institutionLocation;
22      private String campusLocation;
23      private String collectionLocation;
24      private String itemStatusToBeUpdatedTo;
25      private OleCirculationDesk checkinLocation;
26      private String routeToLocation;
27      private OleCirculationDesk pickupLocation;
28      private OleCirculationDesk operatorCircLocation;
29      private OleDeliverRequestBo oleDeliverRequestBo;
30      private LocationsCheckinCountRecord locationsCheckinCountRecordToBeUpdated;
31      private ItemRecord itemRecord;
32  
33      private boolean isCheckinLocationSameAsHomeLocation;
34      private boolean isLocationMappedToCircDesk;
35      private boolean isPickupLocationSameAsOperatorCircLocation;
36  
37      public String getItemType() {
38          if (null != itemRecord) {
39              ItemTypeRecord itemTempTypeRecord = itemRecord.getItemTempTypeRecord();
40              String itemType = getItemTypeFromItemTypeRecord(itemTempTypeRecord);
41              if (StringUtils.isBlank(itemType)) {
42                  return getItemTypeFromItemTypeRecord(itemRecord.getItemTypeRecord());
43              }
44              return itemType;
45          }
46          return null;
47      }
48  
49      private String getItemTypeFromItemTypeRecord(ItemTypeRecord itemTypeRecord) {
50          if (null != itemTypeRecord && StringUtils.isNotBlank(itemTypeRecord.getCode())) {
51              return itemTypeRecord.getCode();
52          }
53          return null;
54      }
55  
56      public String getItemLocation() {
57          return itemLocation;
58      }
59  
60      public void setItemLocation(String itemLocation) {
61          this.itemLocation = itemLocation;
62      }
63  
64      public String getItemLibraryLocation() {
65          return itemLibraryLocation;
66      }
67  
68      public void setItemLibraryLocation(String itemLibraryLocation) {
69          this.itemLibraryLocation = itemLibraryLocation;
70      }
71  
72      public ItemStatusRecord getItemStatusRecord() {
73          if (null != itemRecord) {
74              return itemRecord.getItemStatusRecord();
75          }
76          return null;
77      }
78  
79  
80      public String getItemUUID() {
81          if (null != itemRecord) {
82              return itemRecord.getItemId();
83          }
84          return null;
85      }
86  
87      public void setInstitutionLocation(String institutionLocation) {
88          this.institutionLocation = institutionLocation;
89      }
90  
91      public void setCampusLocation(String campusLocation) {
92          this.campusLocation = campusLocation;
93      }
94  
95      public void setCollectionLocation(String collectionLocation) {
96          this.collectionLocation = collectionLocation;
97      }
98  
99      public String getInstitutionLocation() {
100         return institutionLocation;
101     }
102 
103     public String getCampusLocation() {
104         return campusLocation;
105     }
106 
107     public String getCollectionLocation() {
108         return collectionLocation;
109     }
110 
111     public String getItemStatusToBeUpdatedTo() {
112         return itemStatusToBeUpdatedTo;
113     }
114 
115     public void setItemStatusToBeUpdatedTo(String itemStatusToBeUpdatedTo) {
116         this.itemStatusToBeUpdatedTo = itemStatusToBeUpdatedTo;
117     }
118 
119     public OleCirculationDesk getCheckinLocation() {
120         return checkinLocation;
121     }
122 
123     public void setCheckinLocation(OleCirculationDesk checkinLocation) {
124         this.checkinLocation = checkinLocation;
125     }
126 
127     public OleCirculationDesk getPickupLocation() {
128         if (null != getOleDeliverRequestBo()) {
129             pickupLocation = getOleDeliverRequestBo().getOlePickUpLocation();
130         }
131         return pickupLocation;
132     }
133 
134     public void setPickupLocation(OleCirculationDesk pickupLocation) {
135         this.pickupLocation = pickupLocation;
136     }
137 
138     public void setOperatorCircLocation(OleCirculationDesk operatorCircLocation) {
139         this.operatorCircLocation = operatorCircLocation;
140     }
141 
142     public Boolean isItemPickupLocationSameAsOperatorCircLoc() {
143        return isPickupLocationSameAsOperatorCircLocation;
144     }
145 
146     public void setIsPickupLocationSameAsOperatorCircLocation(boolean isPickupLocationSameAsOperatorCircLocation) {
147         this.isPickupLocationSameAsOperatorCircLocation = isPickupLocationSameAsOperatorCircLocation;
148     }
149 
150     public Boolean isCheckinLocationSameAsHomeLocation() {
151       return isCheckinLocationSameAsHomeLocation;
152 
153     }
154 
155     public void setIsCheckinLocationSameAsHomeLocation(boolean isCheckinLocationSameAsHomeLocation) {
156         this.isCheckinLocationSameAsHomeLocation = isCheckinLocationSameAsHomeLocation;
157     }
158 
159     public boolean isLocationMappedToCirculationDesk() {
160         return isLocationMappedToCircDesk;
161     }
162 
163     public void setIsLocationMappedToCircDesk(boolean isLocationMappedToCircDesk) {
164         this.isLocationMappedToCircDesk = isLocationMappedToCircDesk;
165     }
166 
167     public String getItemFullPathLocation() {
168         StringBuilder stringBuilder = new StringBuilder();
169         if (StringUtils.isNotEmpty(institutionLocation)) {
170             stringBuilder.append(institutionLocation);
171         }
172         if (StringUtils.isNotEmpty(campusLocation)) {
173             appendLocationToStrinBuilder(stringBuilder, campusLocation);
174         }
175         if (StringUtils.isNotEmpty(itemLibraryLocation)) {
176             appendLocationToStrinBuilder(stringBuilder, itemLibraryLocation);
177         }
178         if (StringUtils.isNotEmpty(collectionLocation)) {
179             appendLocationToStrinBuilder(stringBuilder, collectionLocation);
180         }
181         if (StringUtils.isNotEmpty(itemLocation)) {
182             appendLocationToStrinBuilder(stringBuilder, itemLocation);
183         }
184 
185         return stringBuilder.toString();
186     }
187 
188     private void appendLocationToStrinBuilder(StringBuilder stringBuilder, String location) {
189         if (stringBuilder.length() > 0) {
190             stringBuilder.append("/").append(location);
191         } else {
192             stringBuilder.append(location);
193         }
194     }
195 
196     public OleCirculationDesk getOperatorCircLocation() {
197         return operatorCircLocation;
198     }
199 
200     public OleDeliverRequestBo getOleDeliverRequestBo() {
201         return oleDeliverRequestBo;
202     }
203 
204     public void setOleDeliverRequestBo(OleDeliverRequestBo oleDeliverRequestBo) {
205         this.oleDeliverRequestBo = oleDeliverRequestBo;
206     }
207 
208     public List<LocationsCheckinCountRecord> getLocationsCheckinCountRecords() {
209         if (null != itemRecord) {
210             return itemRecord.getLocationsCheckinCountRecords();
211         }
212         return new ArrayList<>();
213     }
214 
215     public void updateCheckinCount() {
216         List<LocationsCheckinCountRecord> locationsCheckinCountRecords = getLocationsCheckinCountRecords();
217         if (!locationsCheckinCountRecords.isEmpty()) {
218             for (Iterator<LocationsCheckinCountRecord> iterator = locationsCheckinCountRecords.iterator(); iterator.hasNext(); ) {
219                 LocationsCheckinCountRecord checkinCountRecord = iterator.next();
220                 if (checkinCountRecord.getLocationName().equals(getItemFullPathLocation())) {
221                     Integer locationCount = checkinCountRecord.getLocationCount();
222                     checkinCountRecord.setLocationCount(null == locationCount ? 1 : locationCount + 1);
223                     locationsCheckinCountRecordToBeUpdated = checkinCountRecord;
224                 }
225             }
226         } else {
227             locationsCheckinCountRecordToBeUpdated = new LocationsCheckinCountRecord();
228             locationsCheckinCountRecordToBeUpdated.setLocationCount(1);
229             locationsCheckinCountRecordToBeUpdated.setLocationName(getItemFullPathLocation());
230             locationsCheckinCountRecordToBeUpdated.setLocationInhouseCount(0);
231         }
232     }
233 
234     public void updateInHouseCheckinCount() {
235         List<LocationsCheckinCountRecord> locationsCheckinCountRecords = getLocationsCheckinCountRecords();
236         if (!locationsCheckinCountRecords.isEmpty()) {
237             for (Iterator<LocationsCheckinCountRecord> iterator = locationsCheckinCountRecords.iterator(); iterator.hasNext(); ) {
238                 LocationsCheckinCountRecord checkinCountRecord = iterator.next();
239                 if (checkinCountRecord.getLocationName().equals(getItemFullPathLocation())) {
240                     Integer locationInhouseCount = checkinCountRecord.getLocationInhouseCount();
241                     checkinCountRecord.setLocationInhouseCount(null == locationInhouseCount ? 1 : locationInhouseCount + 1);
242                     locationsCheckinCountRecordToBeUpdated = checkinCountRecord;
243                 }
244             }
245         } else {
246             locationsCheckinCountRecordToBeUpdated = new LocationsCheckinCountRecord();
247             locationsCheckinCountRecordToBeUpdated.setLocationInhouseCount(1);
248             locationsCheckinCountRecordToBeUpdated.setLocationName(getItemFullPathLocation());
249             locationsCheckinCountRecordToBeUpdated.setLocationCount(0);
250         }
251     }
252 
253     public LocationsCheckinCountRecord getLocationsCheckinCountRecordToBeUpdated() {
254         return locationsCheckinCountRecordToBeUpdated;
255     }
256 
257     public void setLocationsCheckinCountRecordToBeUpdated(LocationsCheckinCountRecord locationsCheckinCountRecordToBeUpdated) {
258         this.locationsCheckinCountRecordToBeUpdated = locationsCheckinCountRecordToBeUpdated;
259     }
260 
261     public ItemRecord getItemRecord() {
262         return itemRecord;
263     }
264 
265     public void setItemRecord(ItemRecord itemRecord) {
266         this.itemRecord = itemRecord;
267     }
268 
269     public String getRouteToLocation() {
270         return routeToLocation;
271     }
272 
273     public void setRouteToLocation(String routeToLocation) {
274         this.routeToLocation = routeToLocation;
275     }
276 }