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.purap.exception;
017    
018    import java.io.Serializable;
019    import java.util.ArrayList;
020    import java.util.Iterator;
021    import java.util.List;
022    
023    import org.apache.commons.lang.builder.ToStringBuilder;
024    import org.kuali.kfs.coa.businessobject.Account;
025    
026    
027    /**
028     * @author tdurkin
029     */
030    public class PaymentRequestInitializationValidationErrors implements Serializable {
031    
032    //    public List errorMessages = new ArrayList();
033        private List expiredAccounts = new ArrayList();
034        private List closedAccounts = new ArrayList();
035        private Integer purchaseOrderNumberToUse;
036        public boolean canAutoClosePO = false;
037        
038        private List<PREQCreationFailure> PREQCreationFailures = new ArrayList<PREQCreationFailure>();
039    
040        public void addPREQCreationFailure(String rejectReasonCode,
041                                           String extraDescription){
042            
043            PREQCreationFailure rejectReason = new PREQCreationFailure();
044            rejectReason.setRejectReasonCode(rejectReasonCode);
045            rejectReason.setExtraDescription(extraDescription);
046            PREQCreationFailures.add(rejectReason);
047        }
048        
049        public PREQCreationFailure[] getPREQCreationFailures(){
050            if (PREQCreationFailures.size() > 0){
051                PREQCreationFailure[] rejectReasons = new PREQCreationFailure[this.PREQCreationFailures.size()]; 
052                return this.PREQCreationFailures.toArray(rejectReasons);
053            }else {
054                return null;
055            }
056        }
057        
058        public void addExpiredAccount(Account expiredAccount) {
059            expiredAccounts.add(new AccountContinuation(expiredAccount));
060        }
061    
062        public void addClosedAccount(Account closedAccount) {
063            closedAccounts.add(new AccountContinuation(closedAccount));
064        }
065    
066        public void addExpiredAccount(AccountContinuation expiredAccount) {
067            expiredAccounts.add(expiredAccount);
068        }
069    
070        public void addClosedAccount(AccountContinuation closedAccount) {
071            closedAccounts.add(closedAccount);
072        }
073        
074        public boolean isClosedAccountsValid() {
075            return this.isListMembersValid(closedAccounts);
076        }
077    
078        public boolean isExpiredAccountsValid() {
079            return this.isListMembersValid(expiredAccounts);
080        }
081    
082        public boolean isListMembersValid(List l) {
083            for (Iterator i = l.iterator(); i.hasNext();) {
084                AccountContinuation acctCont = (AccountContinuation) i.next();
085                if (acctCont.getReplacementAccountValid() == null || acctCont.getReplacementAccountValid().equals(Boolean.FALSE)) {
086                    return false;
087                }
088            }
089            return true;
090        }
091    
092        public Integer getPurchaseOrderNumberToUse() {
093            return purchaseOrderNumberToUse;
094        }
095    
096        public void setPurchaseOrderNumberToUse(Integer purchaseOrderNumberToUse) {
097            this.purchaseOrderNumberToUse = purchaseOrderNumberToUse;
098        }
099    
100        public boolean isCanAutoClosePO() {
101            return canAutoClosePO;
102        }
103    
104        public void setCanAutoClosePO(boolean canAutoClosePO) {
105            this.canAutoClosePO = canAutoClosePO;
106        }
107    
108        public class AccountContinuation implements Serializable {
109            
110            private String accountFinancialChartOfAccountsCode;
111            private String accountAccountNumber;
112            private String replacementFinancialChartOfAccountsCode;
113            private String replacementAccountNumber;
114            private Boolean replacementAccountValid;
115    
116            public AccountContinuation(Account account) {
117                this.accountFinancialChartOfAccountsCode = account.getChartOfAccountsCode();
118                this.accountAccountNumber = account.getAccountNumber();
119                this.replacementFinancialChartOfAccountsCode = account.getContinuationFinChrtOfAcctCd();
120                this.replacementAccountNumber = account.getContinuationAccountNumber();
121            }
122    
123            public void setAccountFinancialChartOfAccountsCode(String accountFinancialChartOfAccountsCode) {
124                this.accountFinancialChartOfAccountsCode = accountFinancialChartOfAccountsCode;
125            }
126    
127            public String getAccountFinancialChartOfAccountsCode() {
128                return accountFinancialChartOfAccountsCode;
129            }
130    
131            public void setAccountAccountNumber(String accountAccountNumber) {
132                this.accountAccountNumber = accountAccountNumber;
133            }
134    
135            public String getAccountAccountNumber() {
136                return accountAccountNumber;
137            }
138    
139            public void setReplacementFinancialChartOfAccountsCode(String continuationFinancialChartOfAccountsCode) {
140                this.replacementFinancialChartOfAccountsCode = continuationFinancialChartOfAccountsCode;
141            }
142    
143            public String getReplacementFinancialChartOfAccountsCode() {
144                return replacementFinancialChartOfAccountsCode;
145            }
146    
147            public void setReplacementAccountNumber(String continuationAccountNumber) {
148                this.replacementAccountNumber = continuationAccountNumber;
149            }
150    
151            public String getReplacementAccountNumber() {
152                return replacementAccountNumber;
153            }
154    
155            public Boolean getReplacementAccountValid() {
156                return replacementAccountValid;
157            }
158    
159            public void setReplacementAccountValid(Boolean replacementAccountValid) {
160                this.replacementAccountValid = replacementAccountValid;
161            }
162        }
163        
164        public final class PREQCreationFailure {
165            
166            private String rejectReasonCode;
167            private String extraDescription;
168            
169            public String getExtraDescription() {
170                return extraDescription;
171            }
172            public void setExtraDescription(String extraDescription) {
173                this.extraDescription = extraDescription;
174            }
175            public String getRejectReasonCode() {
176                return rejectReasonCode;
177            }
178            public void setRejectReasonCode(String rejectReasonCode) {
179                this.rejectReasonCode = rejectReasonCode;
180            }
181            
182        }
183    }