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.gl.service.impl;
017    
018    import java.util.Arrays;
019    
020    import org.kuali.kfs.coa.service.BalanceTypeService;
021    import org.kuali.kfs.gl.ObjectHelper;
022    import org.kuali.kfs.gl.businessobject.OriginEntryFull;
023    import org.kuali.kfs.sys.context.SpringContext;
024    
025    /**
026     * This class represents an origin entry key
027     */
028    public class OriginEntryKey {
029        static BalanceTypeService balanceTypService = SpringContext.getBean(BalanceTypeService.class);
030    
031        /*
032         * (non-Javadoc)
033         * 
034         * @see java.lang.Object#equals(java.lang.Object)
035         */
036        public boolean equals(Object obj) {
037            if (!(obj instanceof OriginEntryKey) || null == obj) {
038                return false;
039            }
040    
041            OriginEntryKey key = (OriginEntryKey) obj;
042            return ObjectHelper.isEqual(getAccountNumber(), key.getAccountNumber()) && ObjectHelper.isEqual(getBalanceTypeCode(), key.getBalanceTypeCode()) && ObjectHelper.isEqual(getChartCode(), key.getChartCode()) && ObjectHelper.isEqual(getFinancialSystemDocumentTypeCodeCode(), key.getFinancialSystemDocumentTypeCodeCode()) && ObjectHelper.isEqual(getEntrySequenceNumber(), key.getEntrySequenceNumber()) && ObjectHelper.isEqual(getDocumentNumber(), key.getDocumentNumber()) && ObjectHelper.isEqual(getFinancialObjectCode(), key.getFinancialObjectCode()) && ObjectHelper.isEqual(getFiscalPeriodCode(), key.getFiscalPeriodCode()) && ObjectHelper.isEqual(getFiscalYear(), key.getFiscalYear()) && ObjectHelper.isEqual(getObjectTypeCode(), key.getObjectTypeCode()) && ObjectHelper.isEqual(getSubAccountNumber(), key.getSubAccountNumber()) && ObjectHelper.isEqual(getSubObjectCode(), key.getSubObjectCode()) && ObjectHelper.isEqual(getSystemOriginationCode(), key.getSystemOriginationCode());
043        }
044    
045        /**
046         * @param entry
047         * @return
048         */
049        static public OriginEntryKey buildFromOriginEntry(OriginEntryFull entry) {
050            if (null == entry) {
051                return null;
052            }
053    
054            OriginEntryKey key = new OriginEntryKey();
055            key.setAccountNumber(entry.getAccountNumber());
056            key.setBalanceTypeCode(entry.getFinancialBalanceTypeCode());
057            key.setChartCode(entry.getChartOfAccountsCode());
058            key.setFinancialSystemDocumentTypeCodeCode(entry.getFinancialDocumentTypeCode());
059            key.setEntrySequenceNumber(entry.getTransactionLedgerEntrySequenceNumber().toString());
060            key.setDocumentNumber(entry.getDocumentNumber());
061            key.setFinancialObjectCode(entry.getFinancialObjectCode());
062            key.setFiscalPeriodCode(entry.getUniversityFiscalPeriodCode());
063            key.setFiscalYear(entry.getUniversityFiscalYear().toString());
064            key.setObjectTypeCode(entry.getFinancialObjectTypeCode());
065            key.setSubAccountNumber(entry.getSubAccountNumber());
066            key.setSubObjectCode(entry.getFinancialSubObjectCode());
067            key.setSystemOriginationCode(entry.getFinancialSystemOriginationCode());
068            return key;
069        }
070    
071        /**
072         * @param entry
073         */
074        public void setIntoOriginEntry(OriginEntryFull entry) {
075            entry.setAccountNumber(getAccountNumber());
076            entry.setBalanceType(balanceTypService.getBalanceTypeByCode(getBalanceTypeCode()));
077            entry.setChartOfAccountsCode(getChartCode());
078            entry.setTransactionLedgerEntrySequenceNumber(new Integer(getEntrySequenceNumber()));
079            entry.setDocumentNumber(getDocumentNumber());
080            entry.setFinancialObjectCode(getFinancialObjectCode());
081            entry.setUniversityFiscalPeriodCode(getFiscalPeriodCode());
082            entry.setUniversityFiscalYear(new Integer(getFiscalYear()));
083            entry.setFinancialObjectTypeCode(getObjectTypeCode());
084            entry.setSubAccountNumber(getSubAccountNumber());
085            entry.setFinancialSubObjectCode(getSubObjectCode());
086            entry.setFinancialSystemOriginationCode(getSystemOriginationCode());
087            entry.setFinancialDocumentTypeCode(getFinancialSystemDocumentTypeCodeCode());
088        }
089    
090        /**
091         * @return Returns the accountNumber.
092         */
093        public String getAccountNumber() {
094            return new String(accountNumber);
095        }
096    
097        /**
098         * @param accountNumber The accountNumber to set.
099         */
100        public void setAccountNumber(String accountNumber) {
101            if (null != accountNumber) {
102                System.arraycopy(accountNumber.toCharArray(), 0, this.accountNumber, 0, this.accountNumber.length);
103            }
104            else {
105                Arrays.fill(this.accountNumber, (char) 0);
106            }
107        }
108    
109        /**
110         * @return Returns the balanceTypeCode.
111         */
112        public String getBalanceTypeCode() {
113            return new String(balanceTypeCode);
114        }
115    
116        /**
117         * @param balanceTypeCode The balanceTypeCode to set.
118         */
119        public void setBalanceTypeCode(String balanceTypeCode) {
120            if (null != balanceTypeCode) {
121                System.arraycopy(balanceTypeCode.toCharArray(), 0, this.balanceTypeCode, 0, this.balanceTypeCode.length);
122            }
123            else {
124                Arrays.fill(this.balanceTypeCode, (char) 0);
125            }
126        }
127    
128        /**
129         * @return Returns the chartCode.
130         */
131        public String getChartCode() {
132            return new String(chartCode);
133        }
134    
135        /**
136         * @param chartCode The chartCode to set.
137         */
138        public void setChartCode(String chartCode) {
139            if (null != chartCode) {
140                System.arraycopy(chartCode, 0, this.chartCode, 0, this.chartCode.length);
141            }
142            else {
143                Arrays.fill(this.chartCode, (char) 0);
144            }
145        }
146    
147        /**
148         * @return Returns the financialSystemDocumentTypeCodeCode.
149         */
150        public String getFinancialSystemDocumentTypeCodeCode() {
151            return new String(financialSystemDocumentTypeCodeCode);
152        }
153    
154        /**
155         * @param financialSystemDocumentTypeCodeCode The financialSystemDocumentTypeCodeCode to set.
156         */
157        public void setFinancialSystemDocumentTypeCodeCode(String financialSystemDocumentTypeCodeCode) {
158            if (null != financialSystemDocumentTypeCodeCode) {
159                System.arraycopy(financialSystemDocumentTypeCodeCode.toCharArray(), 0, this.financialSystemDocumentTypeCodeCode, 0, this.financialSystemDocumentTypeCodeCode.length);
160            }
161            else {
162                Arrays.fill(this.financialSystemDocumentTypeCodeCode, (char) 0);
163            }
164        }
165    
166        /**
167         * @return Returns the entrySequenceNumber.
168         */
169        public String getEntrySequenceNumber() {
170            return new String(entrySequenceNumber);
171        }
172    
173        /**
174         * @param entrySequenceNumber The entrySequenceNumber to set.
175         */
176        public void setEntrySequenceNumber(String entrySequenceNumber) {
177            if (null != entrySequenceNumber) {
178                System.arraycopy(entrySequenceNumber, 0, this.entrySequenceNumber, 0, this.entrySequenceNumber.length);
179            }
180            else {
181                Arrays.fill(this.entrySequenceNumber, (char) 0);
182            }
183        }
184    
185        /**
186         * @return Returns the documentNumber.
187         */
188        public String getDocumentNumber() {
189            return new String(documentNumber);
190        }
191    
192        /**
193         * @param documentNumber The documentNumber to set.
194         */
195        public void setDocumentNumber(String documentNumber) {
196            if (null != documentNumber) {
197                System.arraycopy(documentNumber, 0, this.documentNumber, 0, this.documentNumber.length);
198            }
199            else {
200                Arrays.fill(this.documentNumber, (char) 0);
201            }
202        }
203    
204        /**
205         * @return Returns the financialObjectCode.
206         */
207        public String getFinancialObjectCode() {
208            return new String(financialObjectCode);
209        }
210    
211        /**
212         * @param financialObjectCode The financialObjectCode to set.
213         */
214        public void setFinancialObjectCode(String financialObjectCode) {
215            if (null != financialObjectCode) {
216                System.arraycopy(financialObjectCode, 0, this.financialObjectCode, 0, this.financialObjectCode.length);
217            }
218            else {
219                Arrays.fill(this.financialObjectCode, (char) 0);
220            }
221        }
222    
223        /**
224         * @return Returns the fiscalPeriodCode.
225         */
226        public String getFiscalPeriodCode() {
227            return new String(fiscalPeriodCode);
228        }
229    
230        /**
231         * @param fiscalPeriodCode The fiscalPeriodCode to set.
232         */
233        public void setFiscalPeriodCode(String fiscalPeriodCode) {
234            if (null != fiscalPeriodCode) {
235                System.arraycopy(fiscalPeriodCode, 0, this.fiscalPeriodCode, 0, this.fiscalPeriodCode.length);
236            }
237            else {
238                Arrays.fill(this.fiscalPeriodCode, (char) 0);
239            }
240        }
241    
242        /**
243         * @return Returns the fiscalYear.
244         */
245        public String getFiscalYear() {
246            return new String(fiscalYear);
247        }
248    
249        /**
250         * @param fiscalYear The fiscalYear to set.
251         */
252        public void setFiscalYear(String fiscalYear) {
253            if (null != fiscalYear) {
254                System.arraycopy(fiscalYear, 0, this.fiscalYear, 0, this.fiscalYear.length);
255            }
256            else {
257                Arrays.fill(this.fiscalYear, (char) 0);
258            }
259        }
260    
261        /**
262         * @return Returns the objectTypeCode.
263         */
264        public String getObjectTypeCode() {
265            return new String(objectTypeCode);
266        }
267    
268        /**
269         * @param objectTypeCode The objectTypeCode to set.
270         */
271        public void setObjectTypeCode(String objectTypeCode) {
272            if (null != objectTypeCode) {
273                System.arraycopy(objectTypeCode, 0, this.objectTypeCode, 0, this.objectTypeCode.length);
274            }
275            else {
276                Arrays.fill(this.objectTypeCode, (char) 0);
277            }
278        }
279    
280        /**
281         * @return Returns the subAccountNumber.
282         */
283        public String getSubAccountNumber() {
284            return new String(subAccountNumber);
285        }
286    
287        /**
288         * @param subAccountNumber The subAccountNumber to set.
289         */
290        public void setSubAccountNumber(String subAccountNumber) {
291            if (null != subAccountNumber) {
292                System.arraycopy(subAccountNumber, 0, this.subAccountNumber, 0, this.subAccountNumber.length);
293            }
294            else {
295                Arrays.fill(this.subAccountNumber, (char) 0);
296            }
297        }
298    
299        /**
300         * @return Returns the subObjectCode.
301         */
302        public String getSubObjectCode() {
303            return new String(subObjectCode);
304        }
305    
306        /**
307         * @param subObjectCode The subObjectCode to set.
308         */
309        public void setSubObjectCode(String subObjectCode) {
310            if (null != subObjectCode) {
311                System.arraycopy(subObjectCode, 0, this.subObjectCode, 0, this.subObjectCode.length);
312            }
313            else {
314                Arrays.fill(this.subObjectCode, (char) 0);
315            }
316        }
317    
318        /**
319         * @return Returns the systemOriginationCode.
320         */
321        public String getSystemOriginationCode() {
322            return new String(systemOriginationCode);
323        }
324    
325        /**
326         * @param systemOriginationCode The systemOriginationCode to set.
327         */
328        public void setSystemOriginationCode(String systemOriginationCode) {
329            if (null != systemOriginationCode) {
330                System.arraycopy(systemOriginationCode.toCharArray(), 0, this.systemOriginationCode, 0, this.systemOriginationCode.length);
331            }
332            else {
333                Arrays.fill(this.systemOriginationCode, (char) 0);
334            }
335        }
336    
337        public OriginEntryKey() {
338            super();
339        }
340    
341        final private char[] fiscalYear = new char[4];
342    
343        final private char[] chartCode = new char[2];
344    
345        final private char[] accountNumber = new char[7];
346    
347        final private char[] subAccountNumber = new char[5];
348    
349        final private char[] financialObjectCode = new char[4];
350    
351        final private char[] subObjectCode = new char[3];
352    
353        final private char[] balanceTypeCode = new char[2];
354    
355        final private char[] objectTypeCode = new char[2];
356    
357        final private char[] fiscalPeriodCode = new char[2];
358    
359        final private char[] financialSystemDocumentTypeCodeCode = new char[4];
360    
361        final private char[] systemOriginationCode = new char[2];
362    
363        final private char[] documentNumber = new char[9];
364    
365        final private char[] entrySequenceNumber = new char[5];
366    }