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.external.kc.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.integration.cg.ContractsAndGrantsAwardAccount; 025 import org.kuali.kfs.sys.context.SpringContext; 026 import org.kuali.rice.kim.bo.Person; 027 import org.kuali.rice.kim.service.PersonService; 028 import org.kuali.rice.kns.util.ObjectUtils; 029 030 /** 031 * This class represents an association between an award and an account. It's like a reference to the account from the award. This 032 * way an award can maintain a collection of these references instead of owning accounts directly. 033 */ 034 public class AwardAccount implements ContractsAndGrantsAccountAwardInformation { 035 036 private Long proposalNumber; 037 private String chartOfAccountsCode; 038 private String accountNumber; 039 private String principalId; 040 private boolean active = true; 041 private boolean newCollectionRecord; 042 private boolean federalSponsor; 043 044 private Account account; 045 private Chart chartOfAccounts; 046 private Person projectDirector; 047 private Award award; 048 049 /** 050 * Default constructor. 051 */ 052 public AwardAccount() { 053 // Struts needs this instance to populate the secondary key, principalName. 054 try { 055 projectDirector = (Person)SpringContext.getBean(PersonService.class).getPersonImplementationClass().newInstance(); 056 } catch (Exception e) {} 057 } 058 059 public AwardAccount(ContractsAndGrantsAwardAccount awardAccountDTO, String accountNumber, String chartOfAccountsCode, String cfdaNumber){ 060 // Struts needs this instance to populate the secondary key, principalName. 061 try { 062 projectDirector = (Person)SpringContext.getBean(PersonService.class).getPersonImplementationClass().newInstance(); 063 } catch (Exception e) {} 064 065 066 //setup this class from DTO 067 Proposal proposal = new Proposal(); 068 Award award = new Award(); 069 Agency agency = new Agency(); 070 Agency primeAgency = new Agency(); 071 072 this.setAccountNumber(accountNumber); 073 this.setChartOfAccountsCode(chartOfAccountsCode); 074 this.setPrincipalId(awardAccountDTO.getProjectDirector()); 075 this.setProposalNumber(awardAccountDTO.getAwardId()); 076 this.setActive(true); 077 this.setFederalSponsor(awardAccountDTO.getFederalSponsor()); 078 079 award.setAwardNumber(awardAccountDTO.getProposalNumber()); 080 award.setProposalNumber(awardAccountDTO.getAwardId()); 081 award.setAgencyNumber(awardAccountDTO.getSponsorCode()); 082 award.setAwardTitle(awardAccountDTO.getAwardTitle()); 083 award.setGrantNumber(awardAccountDTO.getGrantNumber()); 084 award.setCfdaNumber(cfdaNumber); 085 086 proposal.setFederalPassThroughAgencyNumber(awardAccountDTO.getProposalFederalPassThroughAgencyNumber()); 087 proposal.setProposalNumber(awardAccountDTO.getAwardId()); 088 089 proposal.setAward(award); 090 this.setAward(award); 091 this.getAward().setProposal(proposal); 092 093 agency.setAgencyNumber(awardAccountDTO.getSponsorCode()); 094 agency.setReportingName(awardAccountDTO.getSponsorName()); 095 primeAgency.setAgencyNumber(awardAccountDTO.getPrimeSponsorCode()); 096 primeAgency.setReportingName(awardAccountDTO.getPrimeSponsorName()); 097 this.getAward().setAgency(agency); 098 this.getAward().setPrimeAgency(primeAgency); 099 } 100 101 /*** 102 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getProposalNumber() 103 */ 104 public Long getProposalNumber() { 105 return proposalNumber; 106 } 107 108 /** 109 * Sets the proposalNumber attribute. 110 * 111 * @param proposalNumber The proposalNumber to set. 112 */ 113 public void setProposalNumber(Long proposalNumber) { 114 this.proposalNumber = proposalNumber; 115 } 116 117 118 /*** 119 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getChartOfAccountsCode() 120 */ 121 public String getChartOfAccountsCode() { 122 return chartOfAccountsCode; 123 } 124 125 /** 126 * Sets the chartOfAccountsCode attribute. 127 * 128 * @param chartOfAccountsCode The chartOfAccountsCode to set. 129 */ 130 public void setChartOfAccountsCode(String chartOfAccountsCode) { 131 this.chartOfAccountsCode = chartOfAccountsCode; 132 } 133 134 135 /*** 136 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getAccountNumber() 137 */ 138 public String getAccountNumber() { 139 return accountNumber; 140 } 141 142 /** 143 * Sets the accountNumber attribute. 144 * 145 * @param accountNumber The accountNumber to set. 146 */ 147 public void setAccountNumber(String accountNumber) { 148 this.accountNumber = accountNumber; 149 } 150 151 /*** 152 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getPrincipalId() 153 */ 154 public String getPrincipalId() { 155 return principalId; 156 } 157 158 /** 159 * Sets the principalId attribute. 160 * 161 * @param principalId The principalId to set. 162 */ 163 public void setPrincipalId(String principalId) { 164 this.principalId = principalId; 165 } 166 167 /*** 168 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getAccount() 169 */ 170 public Account getAccount() { 171 return account; 172 } 173 174 /** 175 * Sets the account attribute. 176 * 177 * @param account The account to set. 178 */ 179 @Deprecated 180 public void setAccount(Account account) { 181 this.account = account; 182 } 183 184 /*** 185 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getChartOfAccounts() 186 */ 187 public Chart getChartOfAccounts() { 188 return chartOfAccounts; 189 } 190 191 /** 192 * Sets the chartOfAccounts attribute. 193 * 194 * @param chartOfAccounts The chartOfAccounts to set. 195 */ 196 @Deprecated 197 public void setChartOfAccounts(Chart chartOfAccounts) { 198 this.chartOfAccounts = chartOfAccounts; 199 } 200 201 /*** 202 * @see org.kuali.kfs.integration.businessobject.cg.ContractsAndGrantsAccountAwardInformation#getProjectDirector() 203 */ 204 public Person getProjectDirector() { 205 projectDirector = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(principalId, projectDirector); 206 return projectDirector; 207 } 208 209 /** 210 * Sets the project director attribute 211 * 212 * @param projectDirector The projectDirector to set. 213 * @deprecated Setter is required by OJB, but should not be used to modify this attribute. This attribute is set on the initial 214 * creation of the object and should not be changed. 215 */ 216 @Deprecated 217 public void setProjectDirector(Person projectDirector) { 218 this.projectDirector = projectDirector; 219 } 220 221 /** 222 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 223 */ 224 @SuppressWarnings("unchecked") 225 protected LinkedHashMap toStringMapper() { 226 LinkedHashMap m = new LinkedHashMap(); 227 if (this.proposalNumber != null) { 228 m.put("proposalNumber", this.proposalNumber.toString()); 229 } 230 m.put("chartOfAccountsCode", this.chartOfAccountsCode); 231 m.put("accountNumber", this.accountNumber); 232 return m; 233 } 234 235 public Award getAward() { 236 return award; 237 } 238 239 public void setAward(Award award) { 240 this.award = award; 241 } 242 243 /** 244 * @see org.kuali.rice.kns.bo.Inactivateable#isActive() 245 */ 246 public boolean isActive() { 247 return active; 248 } 249 250 /** 251 * @see org.kuali.rice.kns.bo.Inactivateable#setActive(boolean) 252 */ 253 public void setActive(boolean active) { 254 this.active = true; 255 } 256 257 /** 258 * @see org.kuali.kfs.integration.cg.ContractsAndGrantsAccountAwardInformation#getProjectDirectorName() 259 */ 260 public String getProjectDirectorName() { 261 if (!ObjectUtils.isNull(getProjectDirector())) { 262 return getProjectDirector().getName(); 263 } 264 return null; 265 } 266 267 // @Override 268 public void prepareForWorkflow() { 269 270 } 271 272 // @Override 273 public void refresh() { 274 } 275 276 public boolean isNewCollectionRecord() { 277 return false; 278 } 279 280 public void setNewCollectionRecord(boolean newCollectionRecord) { 281 this.newCollectionRecord = newCollectionRecord; 282 } 283 284 public boolean isFederalSponsor() { 285 return federalSponsor; 286 } 287 288 public void setFederalSponsor(boolean federalSponsor) { 289 this.federalSponsor = federalSponsor; 290 } 291 } 292