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.Account; 022 import org.kuali.kfs.coa.businessobject.Chart; 023 import org.kuali.kfs.integration.cg.ContractsAndGrantsAccountAwardInformation; 024 import org.kuali.kfs.sys.context.SpringContext; 025 import org.kuali.rice.kim.bo.Person; 026 import org.kuali.rice.kim.service.PersonService; 027 import org.kuali.rice.kns.bo.Inactivateable; 028 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase; 029 import org.kuali.rice.kns.util.ObjectUtils; 030 031 /** 032 * This class represents an association between an award and an account. It's like a reference to the account from the award. This 033 * way an award can maintain a collection of these references instead of owning accounts directly. 034 */ 035 public class AwardAccount extends PersistableBusinessObjectBase implements CGProjectDirector, Inactivateable, ContractsAndGrantsAccountAwardInformation { 036 037 private Long proposalNumber; 038 private String chartOfAccountsCode; 039 private String accountNumber; 040 private String principalId; 041 private boolean active = true; 042 043 private Account account; 044 private Chart chartOfAccounts; 045 private Person projectDirector; 046 private Award award; 047 048 /** 049 * Default constructor. 050 */ 051 public AwardAccount() { 052 // Struts needs this instance to populate the secondary key, principalName. 053 try { 054 projectDirector = (Person)SpringContext.getBean(PersonService.class).getPersonImplementationClass().newInstance(); 055 } catch (Exception e) {} 056 } 057 058 /*** 059 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getProposalNumber() 060 */ 061 public Long getProposalNumber() { 062 return proposalNumber; 063 } 064 065 /** 066 * Sets the proposalNumber attribute. 067 * 068 * @param proposalNumber The proposalNumber to set. 069 */ 070 public void setProposalNumber(Long proposalNumber) { 071 this.proposalNumber = proposalNumber; 072 } 073 074 075 /*** 076 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getChartOfAccountsCode() 077 */ 078 public String getChartOfAccountsCode() { 079 return chartOfAccountsCode; 080 } 081 082 /** 083 * Sets the chartOfAccountsCode attribute. 084 * 085 * @param chartOfAccountsCode The chartOfAccountsCode to set. 086 */ 087 public void setChartOfAccountsCode(String chartOfAccountsCode) { 088 this.chartOfAccountsCode = chartOfAccountsCode; 089 } 090 091 092 /*** 093 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getAccountNumber() 094 */ 095 public String getAccountNumber() { 096 return accountNumber; 097 } 098 099 /** 100 * Sets the accountNumber attribute. 101 * 102 * @param accountNumber The accountNumber to set. 103 */ 104 public void setAccountNumber(String accountNumber) { 105 this.accountNumber = accountNumber; 106 } 107 108 /*** 109 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getPrincipalId() 110 */ 111 public String getPrincipalId() { 112 return principalId; 113 } 114 115 /** 116 * Sets the principalId attribute. 117 * 118 * @param principalId The principalId to set. 119 */ 120 public void setPrincipalId(String principalId) { 121 this.principalId = principalId; 122 } 123 124 /*** 125 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getAccount() 126 */ 127 public Account getAccount() { 128 return account; 129 } 130 131 /** 132 * Sets the account attribute. 133 * 134 * @param account The account to set. 135 * @deprecated Setter is required by OJB, but should not be used to modify this attribute. This attribute is set on the initial 136 * creation of the object and should not be changed. 137 */ 138 @Deprecated 139 public void setAccount(Account account) { 140 this.account = account; 141 } 142 143 /*** 144 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getChartOfAccounts() 145 */ 146 public Chart getChartOfAccounts() { 147 return chartOfAccounts; 148 } 149 150 /** 151 * Sets the chartOfAccounts attribute. 152 * 153 * @param chartOfAccounts The chartOfAccounts to set. 154 * @deprecated Setter is required by OJB, but should not be used to modify this attribute. This attribute is set on the initial 155 * creation of the object and should not be changed. 156 */ 157 @Deprecated 158 public void setChartOfAccounts(Chart chartOfAccounts) { 159 this.chartOfAccounts = chartOfAccounts; 160 } 161 162 /*** 163 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getProjectDirector() 164 */ 165 public Person getProjectDirector() { 166 projectDirector = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(principalId, projectDirector); 167 return projectDirector; 168 } 169 170 /** 171 * Sets the project director attribute 172 * 173 * @param projectDirector The projectDirector to set. 174 * @deprecated Setter is required by OJB, but should not be used to modify this attribute. This attribute is set on the initial 175 * creation of the object and should not be changed. 176 */ 177 @Deprecated 178 public void setProjectDirector(Person projectDirector) { 179 this.projectDirector = projectDirector; 180 } 181 182 /** 183 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 184 */ 185 @SuppressWarnings("unchecked") 186 @Override 187 protected LinkedHashMap toStringMapper() { 188 LinkedHashMap m = new LinkedHashMap(); 189 if (this.proposalNumber != null) { 190 m.put("proposalNumber", this.proposalNumber.toString()); 191 } 192 m.put("chartOfAccountsCode", this.chartOfAccountsCode); 193 m.put("accountNumber", this.accountNumber); 194 return m; 195 } 196 197 /*** 198 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getAward() 199 */ 200 public Award getAward() { 201 return award; 202 } 203 204 /** 205 * This method sets the associated award to the value provided. 206 * 207 * @param award Value to be assigned to the associated Award object. 208 */ 209 public void setAward(Award award) { 210 this.award = award; 211 } 212 213 /** 214 * @see org.kuali.rice.kns.bo.Inactivateable#isActive() 215 */ 216 public boolean isActive() { 217 return active; 218 } 219 220 /** 221 * @see org.kuali.rice.kns.bo.Inactivateable#setActive(boolean) 222 */ 223 public void setActive(boolean active) { 224 this.active = true; 225 } 226 227 /** 228 * @see org.kuali.kfs.integration.cg.ContractsAndGrantsAccountAwardInformation#getProjectDirectorName() 229 */ 230 public String getProjectDirectorName() { 231 if (!ObjectUtils.isNull(projectDirector)) { 232 return projectDirector.getName(); 233 } 234 return null; 235 } 236 } 237