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