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.sys.businessobject;
017    
018    import java.io.Serializable;
019    import java.util.LinkedHashMap;
020    
021    import org.kuali.kfs.coa.businessobject.Account;
022    import org.kuali.rice.kns.bo.TransientBusinessObjectBase;
023    import org.kuali.rice.kns.util.KualiDecimal;
024    
025    /**
026     * This class holds respnsibility information pertaining to an account specifically whether or not the responsibility is of type
027     * Fiscal Officer, Primary Delegate of Fiscal Officer, or Secondary Delegate of Fiscal Officer, and if it is one of the delegated
028     * responsibility types, then there is additional information about the responsibility such as dollar range and document type
029     */
030    public class AccountResponsibility extends TransientBusinessObjectBase implements Serializable {
031    
032        private static final long serialVersionUID = 3101634819409319387L;
033        public static final int FISCAL_OFFICER_RESPONSIBILITY = 1;
034        public static final int DELEGATED_RESPONSIBILITY = 2;
035    
036        private Account account;
037        private int accountResponsibilityType;
038        private KualiDecimal minimumDollarAmount;
039        private KualiDecimal maximumDollarAmount;
040        private String documentTypeId;
041    
042        public AccountResponsibility() {
043        }
044    
045        /**
046         * Constructor that allows us to create and pop on same line in other files
047         * 
048         * @param accountResponsibilityType
049         * @param minimumDollarAmount
050         * @param maximumDollarAmount
051         * @param documentTypeId
052         */
053        public AccountResponsibility(int accountResponsibilityType, KualiDecimal minimumDollarAmount, KualiDecimal maximumDollarAmount, String documentTypeId, Account account) {
054            if (!isValidResponsibilityType(accountResponsibilityType)) {
055                throw new IllegalArgumentException("invalid accountResponsibilityType passed in");
056            }
057            this.accountResponsibilityType = accountResponsibilityType;
058            this.minimumDollarAmount = minimumDollarAmount;
059            this.maximumDollarAmount = maximumDollarAmount;
060            this.documentTypeId = documentTypeId;
061            this.account = account;
062        }
063    
064        private boolean isValidResponsibilityType(int type) {
065            return type == FISCAL_OFFICER_RESPONSIBILITY || type == DELEGATED_RESPONSIBILITY;
066        }
067    
068    
069        public Account getAccount() {
070            return account;
071        }
072    
073        public void setAccount(Account account) {
074            this.account = account;
075        }
076    
077        public int getAccountResponsibilityType() {
078            return accountResponsibilityType;
079        }
080    
081        public void setAccountResponsibilityType(int accountResponsibilityType) {
082            this.accountResponsibilityType = accountResponsibilityType;
083        }
084    
085        public String getDocumentTypeId() {
086            return documentTypeId;
087        }
088    
089        public void setDocumentTypeId(String documentTypeId) {
090            this.documentTypeId = documentTypeId;
091        }
092    
093        public KualiDecimal getMaximumDollarAmount() {
094            return maximumDollarAmount;
095        }
096    
097        public void setMaximumDollarAmount(KualiDecimal maximumDollarAmount) {
098            this.maximumDollarAmount = maximumDollarAmount;
099        }
100    
101        public KualiDecimal getMinimumDollarAmount() {
102            return minimumDollarAmount;
103        }
104    
105        public void setMinimumDollarAmount(KualiDecimal minimumDollarAmount) {
106            this.minimumDollarAmount = minimumDollarAmount;
107        }
108    
109        /**
110         * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
111         */
112        @Override
113        protected LinkedHashMap toStringMapper() {
114            LinkedHashMap m = new LinkedHashMap();
115            if (account != null) {
116                m.put("accountNumber", this.account.getAccountNumber());
117            }
118            m.put("accountResponsibilityType", this.accountResponsibilityType);
119            m.put("minimumDollarAmount", this.minimumDollarAmount);
120            m.put("maximumDollarAmount", this.maximumDollarAmount);
121            m.put("documentTypeId", this.documentTypeId);
122            return m;
123        }
124    
125    
126    }