001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.module.bc.report;
017
018 import java.math.BigDecimal;
019 import java.util.ArrayList;
020 import java.util.List;
021
022 import org.kuali.rice.kns.bo.BusinessObject;
023 import org.kuali.rice.kns.util.KualiInteger;
024 import org.kuali.rice.kns.util.ObjectUtils;
025
026 /**
027 * This class contains methods
028 */
029 public class BudgetConstructionReportHelper {
030
031 public static BigDecimal setDecimalDigit(BigDecimal number, int digit, boolean setNullIndicator) {
032 BigDecimal returnNum = BigDecimal.ZERO;
033 if (number != null) {
034 if ((number.compareTo(BigDecimal.ZERO) == 0) && setNullIndicator){
035 return null;
036 }
037 returnNum = number.setScale(digit, BigDecimal.ROUND_HALF_UP);
038 }
039 return returnNum;
040 }
041
042 public static BigDecimal calculatePercent(BigDecimal numerator, BigDecimal denominator) {
043 BigDecimal result = BigDecimal.ZERO;
044 if (numerator != null && denominator != null && (denominator.compareTo(BigDecimal.ZERO) != 0) ) {
045 result = numerator.divide(denominator, 3, BigDecimal.ROUND_HALF_UP ).movePointRight(2);
046 }
047 return result;
048 }
049
050 public static BigDecimal calculatePercent(Integer numerator, Integer denominator) {
051 BigDecimal result = BigDecimal.ZERO;
052 if (numerator != null && denominator != null){
053 return calculatePercent(new BigDecimal(numerator.intValue()), new BigDecimal(denominator.intValue()));
054 }
055 return result;
056 }
057
058 public static BigDecimal calculateDivide(BigDecimal numerator, BigDecimal denominator) {
059 BigDecimal result = BigDecimal.ZERO;
060 if (denominator.compareTo(BigDecimal.ZERO) != 0) {
061 result = numerator.divide(denominator, 3, BigDecimal.ROUND_HALF_UP);
062 }
063 return result;
064 }
065
066 public static Integer convertKualiInteger(KualiInteger num) {
067 Integer returnNum = null;
068 if (num != null) {
069 returnNum = new Integer(num.intValue());
070 }
071 else {
072 returnNum = new Integer(0);
073 }
074 return returnNum;
075 }
076
077 public static List deleteDuplicated(List<BusinessObject> list, List<String> fields) {
078 List returnList = new ArrayList();
079 List<String> foundObjects = new ArrayList<String>();
080
081 for (BusinessObject businessObject : list) {
082 String valueString = "";
083 for (String fieldName : fields) {
084 Object fieldValue = ObjectUtils.getPropertyValue(businessObject, fieldName);
085 valueString += fieldValue.toString();
086 }
087 if (!foundObjects.contains(valueString)) {
088 returnList.add(businessObject);
089 foundObjects.add(valueString);
090 }
091 }
092 return returnList;
093 }
094
095 public static boolean isSameEntry(BusinessObject firstObject, BusinessObject secondObject, List<String> fields) {
096 String firstValueString = "";
097 String secondValueString = "";
098 for (String fieldName : fields) {
099 Object firstFieldValue = ObjectUtils.getPropertyValue(firstObject, fieldName);
100 Object secondFieldValue = ObjectUtils.getPropertyValue(secondObject, fieldName);
101 firstValueString += firstFieldValue.toString();
102 secondValueString += secondFieldValue.toString();
103 }
104 if (firstValueString.equals(secondValueString)) {
105 return true;
106 }
107 else {
108 return false;
109 }
110
111 }
112 }