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    
017    package org.kuali.kfs.module.cg.businessobject;
018    
019    import java.util.LinkedHashMap;
020    
021    import org.kuali.kfs.coa.businessobject.Chart;
022    import org.kuali.kfs.coa.businessobject.Organization;
023    import org.kuali.rice.kns.bo.Inactivateable;
024    import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
025    
026    /**
027     * Represents a relationship between a {@link Proposal} and an {@Org}.
028     */
029    public class ProposalOrganization extends PersistableBusinessObjectBase implements Primaryable, Inactivateable {
030    
031        private String chartOfAccountsCode;
032        private String organizationCode;
033        private Long proposalNumber;
034        private boolean proposalPrimaryOrganizationIndicator;
035        private boolean active = true;
036    
037        private Organization organization;
038        private Chart chartOfAccounts;
039    
040        /**
041         * Default constructor.
042         */
043        public ProposalOrganization() {
044        }
045    
046        /**
047         * Gets the chartOfAccountsCode attribute.
048         * 
049         * @return Returns the chartOfAccountsCode
050         */
051        public String getChartOfAccountsCode() {
052            return chartOfAccountsCode;
053        }
054    
055        /**
056         * Sets the chartOfAccountsCode attribute.
057         * 
058         * @param chartOfAccountsCode The chartOfAccountsCode to set.
059         */
060        public void setChartOfAccountsCode(String chartOfAccountsCode) {
061            this.chartOfAccountsCode = chartOfAccountsCode;
062        }
063    
064    
065        /**
066         * Gets the organizationCode attribute.
067         * 
068         * @return Returns the organizationCode
069         */
070        public String getOrganizationCode() {
071            return organizationCode;
072        }
073    
074        /**
075         * Sets the organizationCode attribute.
076         * 
077         * @param organizationCode The organizationCode to set.
078         */
079        public void setOrganizationCode(String organizationCode) {
080            this.organizationCode = organizationCode;
081        }
082    
083    
084        /**
085         * Gets the proposalNumber attribute.
086         * 
087         * @return Returns the proposalNumber
088         */
089        public Long getProposalNumber() {
090            return proposalNumber;
091        }
092    
093        /**
094         * Sets the proposalNumber attribute.
095         * 
096         * @param proposalNumber The proposalNumber to set.
097         */
098        public void setProposalNumber(Long proposalNumber) {
099            this.proposalNumber = proposalNumber;
100        }
101    
102        /**
103         * @return Returns the proposalPrimaryOrganizationIndicator.
104         */
105        public boolean isProposalPrimaryOrganizationIndicator() {
106            return proposalPrimaryOrganizationIndicator;
107        }
108    
109        /**
110         * @see Primaryable#isPrimary()
111         */
112        public boolean isPrimary() {
113            return isProposalPrimaryOrganizationIndicator();
114        }
115    
116        /**
117         * @param proposalPrimaryOrganizationIndicator The proposalPrimaryOrganizationIndicator to set.
118         */
119        public void setProposalPrimaryOrganizationIndicator(boolean proposalPrimaryOrganizationIndicator) {
120            this.proposalPrimaryOrganizationIndicator = proposalPrimaryOrganizationIndicator;
121        }
122    
123        /**
124         * Gets the active attribute.
125         * 
126         * @return Returns the active attribute.
127         */
128        public boolean isActive() {
129            return active;
130        }
131    
132        /**
133         * Sets the active attribute value.
134         * 
135         * @param active true if the instance is active, false otherwise
136         */
137        public void setActive(boolean active) {
138            this.active = active;
139        }
140    
141        /**
142         * Gets the organization attribute.
143         * 
144         * @return Returns the organization
145         */
146        public Organization getOrganization() {
147            return organization;
148        }
149    
150        /**
151         * Sets the organization attribute.
152         * 
153         * @param organization The organization to set.
154         * @deprecated
155         */
156        public void setOrganization(Organization organization) {
157            this.organization = organization;
158        }
159    
160        /**
161         * Gets the chartOfAccounts attribute.
162         * 
163         * @return Returns the chartOfAccounts
164         */
165        public Chart getChartOfAccounts() {
166            return chartOfAccounts;
167        }
168    
169        /**
170         * Sets the chartOfAccounts attribute.
171         * 
172         * @param chartOfAccounts The chartOfAccounts to set.
173         * @deprecated
174         */
175        public void setChartOfAccounts(Chart chartOfAccounts) {
176            this.chartOfAccounts = chartOfAccounts;
177        }
178    
179        /**
180         * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
181         */
182        protected LinkedHashMap toStringMapper() {
183            LinkedHashMap m = new LinkedHashMap();
184            m.put("chartOfAccountsCode", this.chartOfAccountsCode);
185            m.put("organizationCode", this.organizationCode);
186            if (this.proposalNumber != null) {
187                m.put("proposalNumber", this.proposalNumber.toString());
188            }
189            return m;
190        }
191    
192        /**
193         * This can be displayed by Proposal.xml lookup results.
194         * 
195         * @see Object#toString()
196         */
197        @Override
198        public String toString() {
199            // todo: get "primary" and "secondary" from ApplicationResources.properties via KFSKeyConstants?
200            return getChartOfAccountsCode() + "-" + getOrganizationCode() + " " + (isProposalPrimaryOrganizationIndicator() ? "primary" : "secondary");
201        }
202    
203    }