001/*
002 * Copyright 2007 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 */
016package org.kuali.ole.sys.businessobject;
017
018import java.io.Serializable;
019import java.util.LinkedHashMap;
020
021import org.kuali.ole.coa.businessobject.Account;
022import org.kuali.rice.core.api.util.type.KualiDecimal;
023import org.kuali.rice.krad.bo.TransientBusinessObjectBase;
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 */
030public 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.krad.bo.BusinessObjectBase#toStringMapper()
111     */
112    
113    protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
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}