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 import org.kuali.rice.kns.util.ObjectUtils;
028
029 /**
030 * Represents a relationship between a {@link Proposal} and a {@link ProjectDirector}.
031 */
032 public class ProposalProjectDirector extends PersistableBusinessObjectBase implements Primaryable, CGProjectDirector, Inactivateable {
033
034 private String principalId;
035 private Long proposalNumber;
036 private boolean proposalPrimaryProjectDirectorIndicator;
037 private String proposalProjectDirectorProjectTitle;
038 private boolean active = true;
039
040 private Person projectDirector;
041
042
043 private final String userLookupRoleNamespaceCode = KFSConstants.ParameterNamespaces.KFS;
044 private final String userLookupRoleName = KFSConstants.SysKimConstants.CONTRACTS_AND_GRANTS_PROJECT_DIRECTOR;
045
046 /**
047 * Default constructor.
048 */
049 public ProposalProjectDirector() {
050 }
051
052 /**
053 * @see org.kuali.kfs.module.cg.businessobject.CGProjectDirector#getPrincipalId()
054 */
055 public String getPrincipalId() {
056 return principalId;
057 }
058
059 /**
060 * @see org.kuali.kfs.module.cg.businessobject.CGProjectDirector#setPrincipalId(java.lang.String)
061 */
062 public void setPrincipalId(String principalId) {
063 this.principalId = principalId;
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 proposalPrimaryProjectDirectorIndicator attribute.
083 *
084 * @return Returns the proposalPrimaryProjectDirectorIndicator
085 */
086 public boolean isProposalPrimaryProjectDirectorIndicator() {
087 return proposalPrimaryProjectDirectorIndicator;
088 }
089
090 /**
091 * @see Primaryable#isPrimary()
092 */
093 public boolean isPrimary() {
094 return isProposalPrimaryProjectDirectorIndicator();
095 }
096
097 /**
098 * Sets the proposalPrimaryProjectDirectorIndicator attribute.
099 *
100 * @param proposalPrimaryProjectDirectorIndicator The proposalPrimaryProjectDirectorIndicator to set.
101 */
102 public void setProposalPrimaryProjectDirectorIndicator(boolean proposalPrimaryProjectDirectorIndicator) {
103 this.proposalPrimaryProjectDirectorIndicator = proposalPrimaryProjectDirectorIndicator;
104 }
105
106
107 /**
108 * Gets the proposalProjectDirectorProjectTitle attribute.
109 *
110 * @return Returns the proposalProjectDirectorProjectTitle
111 */
112 public String getProposalProjectDirectorProjectTitle() {
113 return proposalProjectDirectorProjectTitle;
114 }
115
116 /**
117 * Sets the proposalProjectDirectorProjectTitle attribute.
118 *
119 * @param proposalProjectDirectorProjectTitle The proposalProjectDirectorProjectTitle to set.
120 */
121 public void setProposalProjectDirectorProjectTitle(String proposalProjectDirectorProjectTitle) {
122 this.proposalProjectDirectorProjectTitle = proposalProjectDirectorProjectTitle;
123 }
124
125 /**
126 * Gets the active attribute.
127 *
128 * @return Returns the active.
129 */
130 public boolean isActive() {
131 return active;
132 }
133
134 /**
135 * Sets the active attribute value.
136 *
137 * @param active The active to set.
138 */
139 public void setActive(boolean active) {
140 this.active = active;
141 }
142
143 /**
144 * @see org.kuali.kfs.module.cg.businessobject.CGProjectDirector#getProjectDirector()
145 */
146 public Person getProjectDirector() {
147 if (principalId != null) {
148 projectDirector = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(principalId, projectDirector);
149 }
150 return projectDirector;
151 }
152
153 /**
154 * @see org.kuali.kfs.module.cg.businessobject.CGProjectDirector#setProjectDirector(org.kuali.kfs.module.cg.businessobject.ProjectDirector)
155 */
156 public void setProjectDirector(Person projectDirector) {
157 this.projectDirector = projectDirector;
158 }
159
160 /**
161 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
162 */
163 protected LinkedHashMap toStringMapper() {
164 LinkedHashMap m = new LinkedHashMap();
165 m.put("principalId", this.principalId);
166 if (this.proposalNumber != null) {
167 m.put("proposalNumber", this.proposalNumber.toString());
168 }
169 return m;
170 }
171
172 /**
173 * This can be displayed by Proposal.xml lookup results.
174 *
175 * @see Object#toString()
176 */
177 @Override
178 public String toString() {
179 // todo: get "nonexistent", "primary", and "secondary" from ApplicationResources.properties via KFSKeyConstants?
180 String name = ObjectUtils.isNull(getProjectDirector()) ? "nonexistent" : getProjectDirector().getName();
181 String title = getProposalProjectDirectorProjectTitle() == null ? "" : " " + getProposalProjectDirectorProjectTitle();
182 return name + " " + (isProposalPrimaryProjectDirectorIndicator() ? "primary" : "secondary") + title;
183 }
184
185 /**
186 * Gets the userLookupRoleNamespaceCode attribute.
187 * @return Returns the userLookupRoleNamespaceCode.
188 */
189 public String getUserLookupRoleNamespaceCode() {
190 return userLookupRoleNamespaceCode;
191 }
192
193 /**
194 * Gets the userLookupRoleName attribute.
195 * @return Returns the userLookupRoleName.
196 */
197 public String getUserLookupRoleName() {
198 return userLookupRoleName;
199 }
200 }
201