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 }