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.cab.businessobject; 017 018 import org.apache.commons.lang.builder.EqualsBuilder; 019 import org.apache.commons.lang.builder.HashCodeBuilder; 020 import org.kuali.rice.kns.util.KualiDecimal; 021 022 023 /** 024 * Base account line group class which assist in easy group by clause 025 */ 026 public abstract class AccountLineGroup { 027 protected Integer universityFiscalYear; 028 protected String chartOfAccountsCode; 029 protected String accountNumber; 030 protected String subAccountNumber; 031 protected String financialObjectCode; 032 protected String financialSubObjectCode; 033 protected String universityFiscalPeriodCode; 034 protected String documentNumber; 035 protected String referenceFinancialDocumentNumber; 036 protected String projectCode; 037 protected String organizationReferenceId; 038 protected KualiDecimal amount; 039 040 041 /** 042 * Gets the universityFiscalYear attribute. 043 * 044 * @return Returns the universityFiscalYear 045 */ 046 public Integer getUniversityFiscalYear() { 047 return universityFiscalYear; 048 } 049 050 /** 051 * Sets the universityFiscalYear attribute. 052 * 053 * @param universityFiscalYear The universityFiscalYear to set. 054 */ 055 public void setUniversityFiscalYear(Integer universityFiscalYear) { 056 this.universityFiscalYear = universityFiscalYear; 057 } 058 059 /** 060 * Gets the chartOfAccountsCode attribute. 061 * 062 * @return Returns the chartOfAccountsCode 063 */ 064 public String getChartOfAccountsCode() { 065 return chartOfAccountsCode; 066 } 067 068 /** 069 * Sets the chartOfAccountsCode attribute. 070 * 071 * @param chartOfAccountsCode The chartOfAccountsCode to set. 072 */ 073 public void setChartOfAccountsCode(String chartOfAccountsCode) { 074 this.chartOfAccountsCode = chartOfAccountsCode; 075 } 076 077 /** 078 * Gets the accountNumber attribute. 079 * 080 * @return Returns the accountNumber 081 */ 082 public String getAccountNumber() { 083 return accountNumber; 084 } 085 086 /** 087 * Sets the accountNumber attribute. 088 * 089 * @param accountNumber The accountNumber to set. 090 */ 091 public void setAccountNumber(String accountNumber) { 092 this.accountNumber = accountNumber; 093 } 094 095 /** 096 * Gets the subAccountNumber attribute. 097 * 098 * @return Returns the subAccountNumber 099 */ 100 public String getSubAccountNumber() { 101 return subAccountNumber; 102 } 103 104 /** 105 * Sets the subAccountNumber attribute. 106 * 107 * @param subAccountNumber The subAccountNumber to set. 108 */ 109 public void setSubAccountNumber(String subAccountNumber) { 110 this.subAccountNumber = subAccountNumber; 111 } 112 113 /** 114 * Gets the financialObjectCode attribute. 115 * 116 * @return Returns the financialObjectCode 117 */ 118 public String getFinancialObjectCode() { 119 return financialObjectCode; 120 } 121 122 /** 123 * Sets the financialObjectCode attribute. 124 * 125 * @param financialObjectCode The financialObjectCode to set. 126 */ 127 public void setFinancialObjectCode(String financialObjectCode) { 128 this.financialObjectCode = financialObjectCode; 129 } 130 131 /** 132 * Gets the financialSubObjectCode attribute. 133 * 134 * @return Returns the financialSubObjectCode 135 */ 136 public String getFinancialSubObjectCode() { 137 return financialSubObjectCode; 138 } 139 140 /** 141 * Sets the financialSubObjectCode attribute. 142 * 143 * @param financialSubObjectCode The financialSubObjectCode to set. 144 */ 145 public void setFinancialSubObjectCode(String financialSubObjectCode) { 146 this.financialSubObjectCode = financialSubObjectCode; 147 } 148 149 /** 150 * Gets the universityFiscalPeriodCode attribute. 151 * 152 * @return Returns the universityFiscalPeriodCode 153 */ 154 public String getUniversityFiscalPeriodCode() { 155 return universityFiscalPeriodCode; 156 } 157 158 /** 159 * Sets the universityFiscalPeriodCode attribute. 160 * 161 * @param universityFiscalPeriodCode The universityFiscalPeriodCode to set. 162 */ 163 public void setUniversityFiscalPeriodCode(String universityFiscalPeriodCode) { 164 this.universityFiscalPeriodCode = universityFiscalPeriodCode; 165 } 166 167 /** 168 * Gets the documentNumber attribute. 169 * 170 * @return Returns the documentNumber 171 */ 172 public String getDocumentNumber() { 173 return documentNumber; 174 } 175 176 /** 177 * Sets the documentNumber attribute. 178 * 179 * @param documentNumber The documentNumber to set. 180 */ 181 public void setDocumentNumber(String documentNumber) { 182 this.documentNumber = documentNumber; 183 } 184 185 /** 186 * Gets the referenceFinancialDocumentNumber attribute. 187 * 188 * @return Returns the referenceFinancialDocumentNumber 189 */ 190 public String getReferenceFinancialDocumentNumber() { 191 return referenceFinancialDocumentNumber; 192 } 193 194 /** 195 * Sets the referenceFinancialDocumentNumber attribute. 196 * 197 * @param referenceFinancialDocumentNumber The referenceFinancialDocumentNumber to set. 198 */ 199 public void setReferenceFinancialDocumentNumber(String referenceFinancialDocumentNumber) { 200 this.referenceFinancialDocumentNumber = referenceFinancialDocumentNumber; 201 } 202 203 204 /** 205 * Gets the projectCode attribute. 206 * 207 * @return Returns the projectCode. 208 */ 209 public String getProjectCode() { 210 return projectCode; 211 } 212 213 /** 214 * Sets the projectCode attribute value. 215 * 216 * @param projectCode The projectCode to set. 217 */ 218 public void setProjectCode(String projectCode) { 219 this.projectCode = projectCode; 220 } 221 222 /** 223 * Gets the organizationReferenceId attribute. 224 * 225 * @return Returns the organizationReferenceId. 226 */ 227 public String getOrganizationReferenceId() { 228 return organizationReferenceId; 229 } 230 231 /** 232 * Sets the organizationReferenceId attribute value. 233 * 234 * @param organizationReferenceId The organizationReferenceId to set. 235 */ 236 public void setOrganizationReferenceId(String organizationReferenceId) { 237 this.organizationReferenceId = organizationReferenceId; 238 } 239 240 /** 241 * Overridden so that group by statement can be easily implemented. 242 * <li>DO NOT REMOVE this method, it is critical to reconciliation process</li> 243 * 244 * @see java.lang.Object#equals(java.lang.Object) 245 */ 246 @Override 247 public boolean equals(Object obj) { 248 if (this == obj) { 249 return true; 250 } 251 if (obj == null || !AccountLineGroup.class.isAssignableFrom(obj.getClass())) { 252 return false; 253 } 254 AccountLineGroup test = (AccountLineGroup) obj; 255 EqualsBuilder equalsBuilder = new EqualsBuilder(); 256 equalsBuilder.append(this.universityFiscalYear, test.getUniversityFiscalYear()); 257 equalsBuilder.append(replaceFiller(chartOfAccountsCode), replaceFiller(test.getChartOfAccountsCode())); 258 equalsBuilder.append(replaceFiller(accountNumber), replaceFiller(test.getAccountNumber())); 259 equalsBuilder.append(replaceFiller(subAccountNumber), replaceFiller(test.getSubAccountNumber())); 260 equalsBuilder.append(replaceFiller(financialObjectCode), replaceFiller(test.getFinancialObjectCode())); 261 equalsBuilder.append(replaceFiller(financialSubObjectCode), replaceFiller(test.getFinancialSubObjectCode())); 262 equalsBuilder.append(replaceFiller(universityFiscalPeriodCode), replaceFiller(test.getUniversityFiscalPeriodCode())); 263 equalsBuilder.append(replaceFiller(documentNumber), replaceFiller(test.getDocumentNumber())); 264 equalsBuilder.append(replaceFiller(referenceFinancialDocumentNumber), replaceFiller(test.getReferenceFinancialDocumentNumber())); 265 equalsBuilder.append(replaceFiller(organizationReferenceId), replaceFiller(test.getOrganizationReferenceId())); 266 equalsBuilder.append(replaceFiller(projectCode), replaceFiller(test.getProjectCode())); 267 return equalsBuilder.isEquals(); 268 } 269 270 private String replaceFiller(String val) { 271 if (val == null) { 272 return ""; 273 } 274 char[] charArray = val.trim().toCharArray(); 275 for (char c : charArray) { 276 if (c != '-') { 277 return val; 278 } 279 } 280 return ""; 281 } 282 283 /** 284 * Overridden so that group by statement can be easily implemented. 285 * <li>DO NOT REMOVE this method, it is critical to reconciliation process</li> 286 * 287 * @see java.lang.Object#hashCode(java.lang.Object) 288 */ 289 @Override 290 public int hashCode() { 291 HashCodeBuilder hashCodeBuilder = new HashCodeBuilder(37, 41); 292 hashCodeBuilder.append(this.universityFiscalYear); 293 hashCodeBuilder.append(replaceFiller(chartOfAccountsCode)); 294 hashCodeBuilder.append(replaceFiller(accountNumber)); 295 hashCodeBuilder.append(replaceFiller(subAccountNumber)); 296 hashCodeBuilder.append(replaceFiller(financialObjectCode)); 297 hashCodeBuilder.append(replaceFiller(financialSubObjectCode)); 298 hashCodeBuilder.append(replaceFiller(universityFiscalPeriodCode)); 299 hashCodeBuilder.append(replaceFiller(documentNumber)); 300 hashCodeBuilder.append(replaceFiller(referenceFinancialDocumentNumber)); 301 hashCodeBuilder.append(replaceFiller(organizationReferenceId)); 302 hashCodeBuilder.append(replaceFiller(projectCode)); 303 return hashCodeBuilder.toHashCode(); 304 } 305 306 /** 307 * Gets the absAmout attribute. 308 * 309 * @return Returns the absAmout 310 */ 311 312 public KualiDecimal getAmount() { 313 return amount; 314 } 315 316 /** 317 * Sets the amount attribute. 318 * 319 * @param amount The amount to set. 320 */ 321 322 public void setAmount(KualiDecimal absAmount) { 323 this.amount = absAmount; 324 } 325 326 @Override 327 public String toString() { 328 return this.hashCode() + "-" + universityFiscalYear + "-" + chartOfAccountsCode + "-" + accountNumber + "-" + replaceFiller(subAccountNumber) + "-" + financialObjectCode + "-" + replaceFiller(financialSubObjectCode) + "-" + universityFiscalPeriodCode + "-" + documentNumber + "-" + referenceFinancialDocumentNumber; 329 } 330 }