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.sys.KFSConstants;
022    import org.kuali.kfs.sys.context.SpringContext;
023    import org.kuali.rice.kim.bo.Person;
024    import org.kuali.rice.kim.bo.impl.PersonImpl;
025    import org.kuali.rice.kns.bo.Inactivateable;
026    import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
027    
028    /**
029     * This class represents an association between an award and a project director. It's like a reference to the project director from
030     * the award. This way an award can maintain a collection of these references instead of owning project directors directly.
031     */
032    public class AwardProjectDirector extends PersistableBusinessObjectBase implements Primaryable, CGProjectDirector, Inactivateable {
033    
034        private String principalId;
035        private Long proposalNumber;
036        private boolean awardPrimaryProjectDirectorIndicator;
037        private String awardProjectDirectorProjectTitle;
038        private boolean active = true;
039    
040        private Person projectDirector;
041        
042        private final String userLookupRoleNamespaceCode = KFSConstants.ParameterNamespaces.KFS;
043        private final String userLookupRoleName = KFSConstants.SysKimConstants.CONTRACTS_AND_GRANTS_PROJECT_DIRECTOR;
044    
045        /**
046         * Default no-args constructor.
047         */
048        public AwardProjectDirector() {
049        }
050    
051        /**
052         * @see org.kuali.kfs.module.cg.businessobject.CGProjectDirector#getPrincipalId()
053         */
054        public String getPrincipalId() {
055            return principalId;
056        }
057    
058        /**
059         * @see org.kuali.kfs.module.cg.businessobject.CGProjectDirector#setPrincipalId(java.lang.String)
060         */
061        public void setPrincipalId(String principalId) {
062            this.principalId = principalId;
063        }
064    
065    
066        /**
067         * @see org.kuali.kfs.module.cg.businessobject.CGProjectDirector#getProposalNumber()
068         */
069        public Long getProposalNumber() {
070            return proposalNumber;
071        }
072    
073        /**
074         * @see org.kuali.kfs.module.cg.businessobject.CGProjectDirector#setProposalNumber(java.lang.Long)
075         */
076        public void setProposalNumber(Long proposalNumber) {
077            this.proposalNumber = proposalNumber;
078        }
079    
080    
081        /**
082         * Gets the awardPrimaryProjectDirectorIndicator attribute.
083         * 
084         * @return Returns the awardPrimaryProjectDirectorIndicator
085         */
086        public boolean isAwardPrimaryProjectDirectorIndicator() {
087            return awardPrimaryProjectDirectorIndicator;
088        }
089    
090    
091        /**
092         * Sets the awardPrimaryProjectDirectorIndicator attribute.
093         * 
094         * @param awardPrimaryProjectDirectorIndicator The awardPrimaryProjectDirectorIndicator to set.
095         */
096        public void setAwardPrimaryProjectDirectorIndicator(boolean awardPrimaryProjectDirectorIndicator) {
097            this.awardPrimaryProjectDirectorIndicator = awardPrimaryProjectDirectorIndicator;
098        }
099    
100    
101        /**
102         * Gets the awardProjectDirectorProjectTitle attribute.
103         * 
104         * @return Returns the awardProjectDirectorProjectTitle
105         */
106        public String getAwardProjectDirectorProjectTitle() {
107            return awardProjectDirectorProjectTitle;
108        }
109    
110        /**
111         * Sets the awardProjectDirectorProjectTitle attribute.
112         * 
113         * @param awardProjectDirectorProjectTitle The awardProjectDirectorProjectTitle to set.
114         */
115        public void setAwardProjectDirectorProjectTitle(String awardProjectDirectorProjectTitle) {
116            this.awardProjectDirectorProjectTitle = awardProjectDirectorProjectTitle;
117        }
118    
119        /**
120         * @see org.kuali.kfs.module.cg.businessobject.CGProjectDirector#getProjectDirector()
121         */
122        public Person getProjectDirector() {
123            projectDirector = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(principalId, projectDirector);
124            return projectDirector;
125        }
126    
127        /**
128         * @see org.kuali.kfs.module.cg.businessobject.CGProjectDirector#setProjectDirector(org.kuali.kfs.module.cg.businessobject.ProjectDirector)
129         */
130        public void setProjectDirector(Person projectDirector) {
131            this.projectDirector = projectDirector;
132        }
133    
134        /**
135         * @see Primaryable#isPrimary()
136         */
137        public boolean isPrimary() {
138            return isAwardPrimaryProjectDirectorIndicator();
139        }
140    
141        /**
142         * @see org.kuali.rice.kns.bo.Inactivateable#isActive()
143         */
144        public boolean isActive() {
145            return active;
146        }
147    
148        /**
149         * @see org.kuali.rice.kns.bo.Inactivateable#setActive(boolean)
150         */
151        public void setActive(boolean active) {
152            this.active = active;
153        }
154        
155        public String getUserLookupRoleNamespaceCode() {
156            return userLookupRoleNamespaceCode;
157        }
158    
159        public void setUserLookupRoleNamespaceCode(String userLookupRoleNamespaceCode) {
160        }
161    
162        public String getUserLookupRoleName() {
163            return userLookupRoleName;
164        }
165    
166        public void setUserLookupRoleName(String userLookupRoleName) {
167        }
168    
169        /**
170         * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
171         */
172        @SuppressWarnings("unchecked")
173        @Override
174        protected LinkedHashMap toStringMapper() {
175            LinkedHashMap m = new LinkedHashMap();
176            m.put("principalId", this.principalId);
177            if (this.proposalNumber != null) {
178                m.put("proposalNumber", this.proposalNumber.toString());
179            }
180            return m;
181        }
182    
183    }
184