01: /*
02: * Copyright 2007 The Kuali Foundation.
03: *
04: * Licensed under the Educational Community License, Version 1.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.opensource.org/licenses/ecl1.php
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16: package org.kuali.module.purap.util;
17:
18: import java.util.ArrayList;
19: import java.util.List;
20:
21: import org.kuali.core.util.ObjectUtils;
22: import org.kuali.module.purap.bo.PurApItem;
23: import org.kuali.module.purap.bo.PurchaseOrderItem;
24:
25: /**
26: * Purchasing Accounts Payable Item Utilities.
27: * This class contains item utilities.
28: */
29: public class PurApItemUtils {
30:
31: /**
32: * Checks if an item is active. It is used mainly when were dealing with generic items (which may be po) And need to
33: * make sure the active rules are applied if it is a poitem
34: *
35: * @param item the purap item passed in
36: * @return true if item is active
37: */
38: public static boolean checkItemActive(PurApItem item) {
39: boolean active = true;
40: if (item instanceof PurchaseOrderItem) {
41: PurchaseOrderItem poi = (PurchaseOrderItem) item;
42: active = poi.isItemActiveIndicator();
43: }
44: return active;
45: }
46:
47: public static boolean isNonZeroExtended(PurApItem item) {
48: return (ObjectUtils.isNotNull(item)
49: && ObjectUtils.isNotNull(item.getExtendedPrice()) && !item
50: .getExtendedPrice().isZero());
51: }
52:
53: /**
54: * Helper to get aboveTheLineItems only from an item list
55: *
56: * @param items a list of items including above and below the line
57: * @return below the line items only
58: */
59: public static List<PurApItem> getAboveTheLineOnly(
60: List<PurApItem> items) {
61: List<PurApItem> returnItems = new ArrayList<PurApItem>();
62: for (PurApItem item : items) {
63: if (item.getItemType().isItemTypeAboveTheLineIndicator()) {
64: returnItems.add((PurApItem) ObjectUtils.deepCopy(item));
65: }
66: }
67: return returnItems;
68: }
69:
70: /**
71: * Counts the below the line, currently it relies on below the line being at the bottom
72: *
73: * @return a count of below the line items
74: */
75: public static int countBelowTheLineItems(List<PurApItem> items) {
76: int count = 0;
77: for (int i = items.size() - 1; i > 0; i--) {
78: PurApItem item = items.get(i);
79: // will have to change if we stop putting below the line at bottom
80: if (item.getItemType().isItemTypeAboveTheLineIndicator()) {
81: break;
82: } else {
83: count++;
84: }
85: }
86: return count;
87: }
88:
89: }
|