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.sql.Date; 020 import java.sql.Timestamp; 021 import java.util.ArrayList; 022 import java.util.LinkedHashMap; 023 import java.util.List; 024 025 import org.apache.ojb.broker.PersistenceBroker; 026 import org.apache.ojb.broker.PersistenceBrokerException; 027 import org.kuali.kfs.integration.cg.ContractAndGrantsProposal; 028 import org.kuali.kfs.module.cg.CGConstants; 029 import org.kuali.kfs.sys.KFSConstants; 030 import org.kuali.kfs.sys.context.SpringContext; 031 import org.kuali.rice.kim.bo.Person; 032 import org.kuali.rice.kns.bo.Inactivateable; 033 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase; 034 import org.kuali.rice.kns.service.LookupService; 035 import org.kuali.rice.kns.util.KualiDecimal; 036 import org.kuali.rice.kns.util.ObjectUtils; 037 import org.kuali.rice.kns.util.TypedArrayList; 038 039 /** 040 * See functional documentation. 041 */ 042 public class Proposal extends PersistableBusinessObjectBase implements Inactivateable, ContractAndGrantsProposal { 043 044 private Long proposalNumber; 045 private Date proposalBeginningDate; 046 private Date proposalEndingDate; 047 048 /** 049 * This field is for write-only to the database via OJB, not the corresponding property of this BO. OJB uses reflection to read 050 * it, so the compiler warns because it doesn't know. 051 * 052 * @see #getProposalTotalAmount 053 * @see #setProposalTotalAmount 054 */ 055 @SuppressWarnings( { "unused" }) 056 private KualiDecimal proposalTotalAmount; 057 058 private KualiDecimal proposalDirectCostAmount; 059 private KualiDecimal proposalIndirectCostAmount; 060 private Date proposalRejectedDate; 061 private Timestamp proposalLastUpdateDate; 062 private Date proposalDueDate; 063 private KualiDecimal proposalTotalProjectAmount; 064 private Date proposalSubmissionDate; 065 private boolean proposalFederalPassThroughIndicator; 066 private String oldProposalNumber; 067 private String grantNumber; 068 private Date proposalClosingDate; 069 private String proposalAwardTypeCode; 070 private String agencyNumber; 071 private String proposalStatusCode; 072 private String federalPassThroughAgencyNumber; 073 private String cfdaNumber; 074 private String proposalFellowName; 075 private String proposalPurposeCode; 076 private String proposalProjectTitle; 077 private boolean active; 078 private List<ProposalSubcontractor> proposalSubcontractors; 079 private List<ProposalOrganization> proposalOrganizations; 080 private List<ProposalProjectDirector> proposalProjectDirectors; 081 private List<ProposalResearchRisk> proposalResearchRisks; 082 083 private ProposalAwardType proposalAwardType; 084 private Agency agency; 085 private ProposalStatus proposalStatus; 086 private Agency federalPassThroughAgency; 087 private ProposalPurpose proposalPurpose; 088 private CFDA cfda; 089 private ProposalOrganization primaryProposalOrganization; 090 private String routingOrg; 091 private String routingChart; 092 private LookupService lookupService; 093 private Award award; 094 095 /** Dummy value used to facilitate lookups */ 096 private transient String lookupPersonUniversalIdentifier; 097 private transient Person lookupPerson; 098 099 100 private final String userLookupRoleNamespaceCode = KFSConstants.ParameterNamespaces.KFS; 101 private final String userLookupRoleName = KFSConstants.SysKimConstants.CONTRACTS_AND_GRANTS_PROJECT_DIRECTOR; 102 103 /** 104 * Default constructor. 105 */ 106 @SuppressWarnings( { "unchecked" }) 107 public Proposal() { 108 // Must use TypedArrayList because its get() method automatically grows 109 // the array for Struts. 110 proposalSubcontractors = new TypedArrayList(ProposalSubcontractor.class); 111 proposalOrganizations = new TypedArrayList(ProposalOrganization.class); 112 proposalProjectDirectors = new TypedArrayList(ProposalProjectDirector.class); 113 proposalResearchRisks = new TypedArrayList(ProposalResearchRisk.class); 114 } 115 116 /** 117 * Gets the award awarded to a proposal instance. 118 * 119 * @return the award corresponding to a proposal instance if the proposal has been awarded. 120 */ 121 public Award getAward() { 122 return award; 123 } 124 125 /** 126 * Sets the award awarding a proposal instance. 127 * 128 * @param award the award awarding a proposal instance 129 */ 130 public void setAward(Award award) { 131 this.award = award; 132 } 133 134 /** 135 * @see org.kuali.rice.kns.bo.PersistableBusinessObjectBase#buildListOfDeletionAwareLists() 136 */ 137 @Override 138 public List buildListOfDeletionAwareLists() { 139 List<List> managedLists = super.buildListOfDeletionAwareLists(); 140 managedLists.add(getProposalSubcontractors()); 141 managedLists.add(getProposalOrganizations()); 142 managedLists.add(getProposalProjectDirectors()); 143 // research risks cannot be deleted (nor added) 144 return managedLists; 145 } 146 147 /** 148 * Gets the proposalNumber attribute. 149 * 150 * @return Returns the proposalNumber 151 */ 152 public Long getProposalNumber() { 153 return proposalNumber; 154 } 155 156 /** 157 * Sets the proposalNumber attribute. 158 * 159 * @param proposalNumber The proposalNumber to set. 160 */ 161 public void setProposalNumber(Long proposalNumber) { 162 this.proposalNumber = proposalNumber; 163 } 164 165 /** 166 * Gets the proposalBeginningDate attribute. 167 * 168 * @return Returns the proposalBeginningDate 169 */ 170 public Date getProposalBeginningDate() { 171 return proposalBeginningDate; 172 } 173 174 /** 175 * Sets the proposalBeginningDate attribute. 176 * 177 * @param proposalBeginningDate The proposalBeginningDate to set. 178 */ 179 public void setProposalBeginningDate(Date proposalBeginningDate) { 180 this.proposalBeginningDate = proposalBeginningDate; 181 } 182 183 /** 184 * Gets the proposalEndingDate attribute. 185 * 186 * @return Returns the proposalEndingDate 187 */ 188 public Date getProposalEndingDate() { 189 return proposalEndingDate; 190 } 191 192 /** 193 * Sets the proposalEndingDate attribute. 194 * 195 * @param proposalEndingDate The proposalEndingDate to set. 196 */ 197 public void setProposalEndingDate(Date proposalEndingDate) { 198 this.proposalEndingDate = proposalEndingDate; 199 } 200 201 /** 202 * Gets the proposalTotalAmount attribute. 203 * 204 * @return Returns the proposalTotalAmount 205 */ 206 public KualiDecimal getProposalTotalAmount() { 207 KualiDecimal direct = getProposalDirectCostAmount(); 208 KualiDecimal indirect = getProposalIndirectCostAmount(); 209 return ObjectUtils.isNull(direct) || ObjectUtils.isNull(indirect) ? null : direct.add(indirect); 210 } 211 212 /** 213 * Does nothing. This property is determined by the direct and indirect cost amounts. This setter is here only because without 214 * it, the maintenance framework won't display this attribute. 215 * 216 * @param proposalTotalAmount The proposalTotalAmount to set. 217 */ 218 public void setProposalTotalAmount(KualiDecimal proposalTotalAmount) { 219 // do nothing 220 } 221 222 /** 223 * OJB calls this method as the first operation before this BO is inserted into the database. The database contains 224 * CGPRPSL_TOT_AMT, a denormalized column that Kuali does not use but needs to maintain with this method because OJB bypasses 225 * the getter. 226 * 227 * @param persistenceBroker from OJB 228 * @throws PersistenceBrokerException 229 */ 230 @Override 231 public void beforeInsert(PersistenceBroker persistenceBroker) throws PersistenceBrokerException { 232 super.beforeInsert(persistenceBroker); 233 proposalTotalAmount = getProposalTotalAmount(); 234 } 235 236 /** 237 * OJB calls this method as the first operation before this BO is updated to the database. The database contains 238 * CGPRPSL_TOT_AMT, a denormalized column that Kuali does not use but needs to maintain with this method because OJB bypasses 239 * the getter. 240 * 241 * @param persistenceBroker from OJB 242 * @throws PersistenceBrokerException 243 */ 244 @Override 245 public void beforeUpdate(PersistenceBroker persistenceBroker) throws PersistenceBrokerException { 246 super.beforeUpdate(persistenceBroker); 247 proposalTotalAmount = getProposalTotalAmount(); 248 } 249 250 /** 251 * Gets the proposalDirectCostAmount attribute. 252 * 253 * @return Returns the proposalDirectCostAmount 254 */ 255 public KualiDecimal getProposalDirectCostAmount() { 256 return proposalDirectCostAmount; 257 } 258 259 /** 260 * Sets the proposalDirectCostAmount attribute. 261 * 262 * @param proposalDirectCostAmount The proposalDirectCostAmount to set. 263 */ 264 public void setProposalDirectCostAmount(KualiDecimal proposalDirectCostAmount) { 265 this.proposalDirectCostAmount = proposalDirectCostAmount; 266 } 267 268 /** 269 * Gets the proposalIndirectCostAmount attribute. 270 * 271 * @return Returns the proposalIndirectCostAmount 272 */ 273 public KualiDecimal getProposalIndirectCostAmount() { 274 return proposalIndirectCostAmount; 275 } 276 277 /** 278 * Sets the proposalIndirectCostAmount attribute. 279 * 280 * @param proposalIndirectCostAmount The proposalIndirectCostAmount to set. 281 */ 282 public void setProposalIndirectCostAmount(KualiDecimal proposalIndirectCostAmount) { 283 this.proposalIndirectCostAmount = proposalIndirectCostAmount; 284 } 285 286 /** 287 * Gets the proposalRejectedDate attribute. 288 * 289 * @return Returns the proposalRejectedDate 290 */ 291 public Date getProposalRejectedDate() { 292 return proposalRejectedDate; 293 } 294 295 /** 296 * Sets the proposalRejectedDate attribute. 297 * 298 * @param proposalRejectedDate The proposalRejectedDate to set. 299 */ 300 public void setProposalRejectedDate(Date proposalRejectedDate) { 301 this.proposalRejectedDate = proposalRejectedDate; 302 } 303 304 /** 305 * Gets the proposalLastUpdateDate attribute. 306 * 307 * @return Returns the proposalLastUpdateDate 308 */ 309 public Timestamp getProposalLastUpdateDate() { 310 return proposalLastUpdateDate; 311 } 312 313 /** 314 * Sets the proposalLastUpdateDate attribute. 315 * 316 * @param proposalLastUpdateDate The proposalLastUpdateDate to set. 317 */ 318 public void setProposalLastUpdateDate(Timestamp proposalLastUpdateDate) { 319 this.proposalLastUpdateDate = proposalLastUpdateDate; 320 } 321 322 /** 323 * Gets the proposalDueDate attribute. 324 * 325 * @return Returns the proposalDueDate 326 */ 327 public Date getProposalDueDate() { 328 return proposalDueDate; 329 } 330 331 /** 332 * Sets the proposalDueDate attribute. 333 * 334 * @param proposalDueDate The proposalDueDate to set. 335 */ 336 public void setProposalDueDate(Date proposalDueDate) { 337 this.proposalDueDate = proposalDueDate; 338 } 339 340 /** 341 * Gets the proposalTotalProjectAmount attribute. 342 * 343 * @return Returns the proposalTotalProjectAmount 344 */ 345 public KualiDecimal getProposalTotalProjectAmount() { 346 return proposalTotalProjectAmount; 347 } 348 349 /** 350 * Sets the proposalTotalProjectAmount attribute. 351 * 352 * @param proposalTotalProjectAmount The proposalTotalProjectAmount to set. 353 */ 354 public void setProposalTotalProjectAmount(KualiDecimal proposalTotalProjectAmount) { 355 this.proposalTotalProjectAmount = proposalTotalProjectAmount; 356 } 357 358 /** 359 * Gets the proposalSubmissionDate attribute. 360 * 361 * @return Returns the proposalSubmissionDate 362 */ 363 public Date getProposalSubmissionDate() { 364 return proposalSubmissionDate; 365 } 366 367 /** 368 * Sets the proposalSubmissionDate attribute. 369 * 370 * @param proposalSubmissionDate The proposalSubmissionDate to set. 371 */ 372 public void setProposalSubmissionDate(Date proposalSubmissionDate) { 373 this.proposalSubmissionDate = proposalSubmissionDate; 374 } 375 376 /** 377 * Gets the proposalFederalPassThroughIndicator attribute. 378 * 379 * @return Returns the proposalFederalPassThroughIndicator 380 */ 381 public boolean getProposalFederalPassThroughIndicator() { 382 return proposalFederalPassThroughIndicator; 383 } 384 385 /** 386 * Sets the proposalFederalPassThroughIndicator attribute. 387 * 388 * @param proposalFederalPassThroughIndicator The proposalFederalPassThroughIndicator to set. 389 */ 390 public void setProposalFederalPassThroughIndicator(boolean proposalFederalPassThroughIndicator) { 391 this.proposalFederalPassThroughIndicator = proposalFederalPassThroughIndicator; 392 } 393 394 /** 395 * Gets the oldProposalNumber attribute. 396 * 397 * @return Returns the oldProposalNumber 398 */ 399 public String getOldProposalNumber() { 400 return oldProposalNumber; 401 } 402 403 /** 404 * Sets the oldProposalNumber attribute. 405 * 406 * @param oldProposalNumber The oldProposalNumber to set. 407 */ 408 public void setOldProposalNumber(String oldProposalNumber) { 409 this.oldProposalNumber = oldProposalNumber; 410 } 411 412 /** 413 * Gets the grantNumber attribute. 414 * 415 * @return Returns the grantNumber 416 */ 417 public String getGrantNumber() { 418 return grantNumber; 419 } 420 421 /** 422 * Sets the grantNumber attribute. 423 * 424 * @param grantNumber The grantNumber to set. 425 */ 426 public void setGrantNumber(String grantNumber) { 427 this.grantNumber = grantNumber; 428 } 429 430 /** 431 * Gets the proposalClosingDate attribute. 432 * 433 * @return Returns the proposalClosingDate 434 */ 435 public Date getProposalClosingDate() { 436 return proposalClosingDate; 437 } 438 439 /** 440 * Sets the proposalClosingDate attribute. 441 * 442 * @param proposalClosingDate The proposalClosingDate to set. 443 */ 444 public void setProposalClosingDate(Date proposalClosingDate) { 445 this.proposalClosingDate = proposalClosingDate; 446 } 447 448 /** 449 * Gets the proposalAwardTypeCode attribute. 450 * 451 * @return Returns the proposalAwardTypeCode 452 */ 453 public String getProposalAwardTypeCode() { 454 return proposalAwardTypeCode; 455 } 456 457 /** 458 * Sets the proposalAwardTypeCode attribute. 459 * 460 * @param proposalAwardTypeCode The proposalAwardTypeCode to set. 461 */ 462 public void setProposalAwardTypeCode(String proposalAwardTypeCode) { 463 this.proposalAwardTypeCode = proposalAwardTypeCode; 464 } 465 466 /** 467 * Gets the agencyNumber attribute. 468 * 469 * @return Returns the agencyNumber 470 */ 471 public String getAgencyNumber() { 472 return agencyNumber; 473 } 474 475 /** 476 * Sets the agencyNumber attribute. 477 * 478 * @param agencyNumber The agencyNumber to set. 479 */ 480 public void setAgencyNumber(String agencyNumber) { 481 this.agencyNumber = agencyNumber; 482 } 483 484 /** 485 * Gets the proposalStatusCode attribute. 486 * 487 * @return Returns the proposalStatusCode 488 */ 489 public String getProposalStatusCode() { 490 return proposalStatusCode; 491 } 492 493 /** 494 * Sets the proposalStatusCode attribute. 495 * 496 * @param proposalStatusCode The proposalStatusCode to set. 497 */ 498 public void setProposalStatusCode(String proposalStatusCode) { 499 this.proposalStatusCode = proposalStatusCode; 500 } 501 502 /** 503 * Gets the federalPassThroughAgencyNumber attribute. 504 * 505 * @return Returns the federalPassThroughAgencyNumber 506 */ 507 public String getFederalPassThroughAgencyNumber() { 508 return federalPassThroughAgencyNumber; 509 } 510 511 /** 512 * Sets the federalPassThroughAgencyNumber attribute. 513 * 514 * @param federalPassThroughAgencyNumber The federalPassThroughAgencyNumber to set. 515 */ 516 public void setFederalPassThroughAgencyNumber(String federalPassThroughAgencyNumber) { 517 this.federalPassThroughAgencyNumber = federalPassThroughAgencyNumber; 518 } 519 520 /** 521 * Gets the cfdaNumber attribute. 522 * 523 * @return Returns the cfdaNumber 524 */ 525 public String getCfdaNumber() { 526 return cfdaNumber; 527 } 528 529 /** 530 * Sets the cfdaNumber attribute. 531 * 532 * @param cfdaNumber The cfdaNumber to set. 533 */ 534 public void setCfdaNumber(String cfdaNumber) { 535 this.cfdaNumber = cfdaNumber; 536 } 537 538 /** 539 * Gets the proposalFellowName attribute. 540 * 541 * @return Returns the proposalFellowName 542 */ 543 public String getProposalFellowName() { 544 return proposalFellowName; 545 } 546 547 /** 548 * Sets the proposalFellowName attribute. 549 * 550 * @param proposalFellowName The proposalFellowName to set. 551 */ 552 public void setProposalFellowName(String proposalFellowName) { 553 this.proposalFellowName = proposalFellowName; 554 } 555 556 /** 557 * Gets the proposalPurposeCode attribute. 558 * 559 * @return Returns the proposalPurposeCode 560 */ 561 public String getProposalPurposeCode() { 562 return proposalPurposeCode; 563 } 564 565 /** 566 * Sets the proposalPurposeCode attribute. 567 * 568 * @param proposalPurposeCode The proposalPurposeCode to set. 569 */ 570 public void setProposalPurposeCode(String proposalPurposeCode) { 571 this.proposalPurposeCode = proposalPurposeCode; 572 } 573 574 /** 575 * Gets the proposalProjectTitle attribute. 576 * 577 * @return Returns the proposalProjectTitle 578 */ 579 public String getProposalProjectTitle() { 580 return proposalProjectTitle; 581 } 582 583 /** 584 * Sets the proposalProjectTitle attribute. 585 * 586 * @param proposalProjectTitle The proposalProjectTitle to set. 587 */ 588 public void setProposalProjectTitle(String proposalProjectTitle) { 589 this.proposalProjectTitle = proposalProjectTitle; 590 } 591 592 /** 593 * Gets the active attribute. 594 * 595 * @return Returns the active. 596 */ 597 public boolean isActive() { 598 return active; 599 } 600 601 /** 602 * Sets the active attribute value. 603 * 604 * @param active The active to set. 605 */ 606 public void setActive(boolean active) { 607 this.active = active; 608 } 609 610 /** 611 * Gets the {@link ProposalAwardType} attribute. 612 * 613 * @return Returns the {@link ProposalAwardType} 614 */ 615 public ProposalAwardType getProposalAwardType() { 616 return proposalAwardType; 617 } 618 619 /** 620 * Sets the {@link ProposalAwardType} attribute. 621 * 622 * @param proposalAwardType The {@link ProposalAwardType} to set. 623 * @deprecated 624 */ 625 public void setProposalAwardType(ProposalAwardType proposalAwardType) { 626 this.proposalAwardType = proposalAwardType; 627 } 628 629 /** 630 * Gets the {@link Agency} attribute. 631 * 632 * @return Returns the {@link Agency} 633 */ 634 public Agency getAgency() { 635 return agency; 636 } 637 638 /** 639 * Sets the {@link Agency} attribute. 640 * 641 * @param agency The {@link Agency} to set. 642 * @deprecated 643 */ 644 public void setAgency(Agency agency) { 645 this.agency = agency; 646 } 647 648 /** 649 * Gets the {@link ProposalStatus} attribute. 650 * 651 * @return Returns the {@link ProposalStatus} 652 */ 653 public ProposalStatus getProposalStatus() { 654 return proposalStatus; 655 } 656 657 /** 658 * Sets the {@link ProposalStatus} attribute. 659 * 660 * @param proposalStatus The {@link ProposalStatus} to set. 661 * @deprecated 662 */ 663 public void setProposalStatus(ProposalStatus proposalStatus) { 664 this.proposalStatus = proposalStatus; 665 } 666 667 /** 668 * Gets the federalPassThroughAgency attribute. 669 * 670 * @return Returns the federalPassThroughAgency 671 */ 672 public Agency getFederalPassThroughAgency() { 673 return federalPassThroughAgency; 674 } 675 676 /** 677 * Sets the federalPassThrough {@link Agency} attribute. 678 * 679 * @param federalPassThroughAgency The federalPassThrough {@link Agency} to set. 680 * @deprecated 681 */ 682 public void setFederalPassThroughAgency(Agency federalPassThroughAgency) { 683 this.federalPassThroughAgency = federalPassThroughAgency; 684 } 685 686 /** 687 * Gets the {@link ProposalPurpose} attribute. 688 * 689 * @return Returns the proposalPurpose 690 */ 691 public ProposalPurpose getProposalPurpose() { 692 return proposalPurpose; 693 } 694 695 /** 696 * Sets the {@link ProposalPurpose} attribute. 697 * 698 * @param proposalPurpose The {@link ProposalPurpose} to set. 699 * @deprecated 700 */ 701 public void setProposalPurpose(ProposalPurpose proposalPurpose) { 702 this.proposalPurpose = proposalPurpose; 703 } 704 705 /** 706 * Gets the {@link CFDA} attribute. 707 * 708 * @return Returns the {@link CFDA} 709 */ 710 public CFDA getCfda() { 711 return cfda; 712 } 713 714 /** 715 * Sets the {@link CFDA} attribute. 716 * 717 * @param cfda The {@link CFDA} to set. 718 * @deprecated 719 */ 720 public void setCfda(CFDA cfda) { 721 this.cfda = cfda; 722 } 723 724 /** 725 * Gets the {@link List} of {@link ProposalSubcontractor}s associated with a {@link Proposal} instance. 726 * 727 * @return Returns the proposalSubcontractors list 728 */ 729 public List<ProposalSubcontractor> getProposalSubcontractors() { 730 return proposalSubcontractors; 731 } 732 733 /** 734 * Sets the {@link ProposalSubcontractor}s {@link List}. 735 * 736 * @param proposalSubcontractors The {@link ProposalSubcontractor}s {@link List} to set. 737 */ 738 public void setProposalSubcontractors(List<ProposalSubcontractor> proposalSubcontractors) { 739 this.proposalSubcontractors = proposalSubcontractors; 740 } 741 742 /** 743 * Gets the {@link List} of {@link ProposalOrganization}s associated with a {@link Proposal} instance. 744 * 745 * @return Returns the {@link ProposalOrganization}s. 746 */ 747 public List<ProposalOrganization> getProposalOrganizations() { 748 return proposalOrganizations; 749 } 750 751 /** 752 * @param proposalOrganizations The proposalOrganizations to set. 753 */ 754 public void setProposalOrganizations(List<ProposalOrganization> proposalOrganizations) { 755 this.proposalOrganizations = proposalOrganizations; 756 } 757 758 /** 759 * @return Returns the proposalProjectDirectors. 760 */ 761 public List<ProposalProjectDirector> getProposalProjectDirectors() { 762 return proposalProjectDirectors; 763 } 764 765 /** 766 * @param proposalProjectDirectors The proposalProjectDirectors to set. 767 */ 768 public void setProposalProjectDirectors(List<ProposalProjectDirector> proposalProjectDirectors) { 769 this.proposalProjectDirectors = proposalProjectDirectors; 770 } 771 772 /** 773 * @return Returns the proposalResearchRisks. 774 */ 775 public List<ProposalResearchRisk> getProposalResearchRisks() { 776 return proposalResearchRisks; 777 } 778 779 /** 780 * @return Returns the active proposalResearchRisks. 781 */ 782 public List<ProposalResearchRisk> getActiveProposalResearchRisks() { 783 List<ProposalResearchRisk> activeRisks = new ArrayList<ProposalResearchRisk>(); 784 for (ProposalResearchRisk risk : proposalResearchRisks) { 785 if (risk.isActive()) 786 activeRisks.add(risk); 787 } 788 return activeRisks; 789 } 790 791 792 /** 793 * @param proposalResearchRisks The proposalResearchRisks to set. 794 */ 795 public void setProposalResearchRisks(List<ProposalResearchRisk> proposalResearchRisks) { 796 this.proposalResearchRisks = proposalResearchRisks; 797 } 798 799 /** 800 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 801 */ 802 protected LinkedHashMap toStringMapper() { 803 LinkedHashMap<String, String> m = new LinkedHashMap<String, String>(); 804 if (this.proposalNumber != null) { 805 m.put("proposalNumber", this.proposalNumber.toString()); 806 } 807 return m; 808 } 809 810 /** 811 * Gets the lookup {@link Person}. 812 * 813 * @return the lookup {@link Person} 814 */ 815 public Person getLookupPerson() { 816 return lookupPerson; 817 } 818 819 /** 820 * Sets the lookup {@link Person} 821 * 822 * @param lookupPerson 823 */ 824 public void setLookupPerson(Person lookupPerson) { 825 this.lookupPerson = lookupPerson; 826 } 827 828 /** 829 * Gets the universal user id of the lookup person. 830 * 831 * @return the id of the lookup person 832 */ 833 public String getLookupPersonUniversalIdentifier() { 834 lookupPerson = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(lookupPersonUniversalIdentifier, lookupPerson); 835 return lookupPersonUniversalIdentifier; 836 } 837 838 /** 839 * Sets the universal user id of the lookup person 840 * 841 * @param lookupPersonId the id of the lookup person 842 */ 843 public void setLookupPersonUniversalIdentifier(String lookupPersonId) { 844 this.lookupPersonUniversalIdentifier = lookupPersonId; 845 } 846 847 /** 848 * I added this getter to the BO to resolve KULCG-300. I'm not sure if this is actually needed by the code, but the framework 849 * breaks all lookups on the proposal maintenance doc without this getter. 850 * 851 * @return the {@link LookupService} used by the instance. 852 */ 853 public LookupService getLookupService() { 854 return lookupService; 855 } 856 857 858 /** 859 * Gets the id of the routing {@link Chart} 860 * 861 * @return the id of the routing {@link Chart} 862 */ 863 public String getRoutingChart() { 864 return routingChart; 865 } 866 867 /** 868 * Sets the id of the routing {@link Chart}. 869 * 870 * @return the id of the routing {@link Chart}. 871 */ 872 public void setRoutingChart(String routingChart) { 873 this.routingChart = routingChart; 874 } 875 876 /** 877 * Gets the id of the routing {@link Org}. 878 * 879 * @return the id of the routing {@link Org} 880 */ 881 public String getRoutingOrg() { 882 return routingOrg; 883 } 884 885 /** 886 * Sets the id of the routing {@link Org}. 887 * 888 * @param the id of the routing {@link Org} 889 */ 890 public void setRoutingOrg(String routingOrg) { 891 this.routingOrg = routingOrg; 892 } 893 894 /** 895 * Gets the primary {@link ProposalOrganization} for a proposal. 896 * 897 * @return the primary {@link ProposalOrganization} for a proposal 898 */ 899 public ProposalOrganization getPrimaryProposalOrganization() { 900 for (ProposalOrganization po : proposalOrganizations) { 901 if (po != null && po.isProposalPrimaryOrganizationIndicator()) { 902 setPrimaryProposalOrganization(po); 903 break; 904 } 905 } 906 907 return primaryProposalOrganization; 908 } 909 910 /** 911 * Sets the {@link LookupService}. For Spring compatibility. 912 * 913 * @param lookupService 914 */ 915 public void setLookupService(LookupService lookupService) { 916 this.lookupService = lookupService; 917 } 918 919 /** 920 * Sets the primary {@link ProposalOrganization} for a proposal 921 * 922 * @param primaryProposalOrganization 923 */ 924 public void setPrimaryProposalOrganization(ProposalOrganization primaryProposalOrganization) { 925 this.primaryProposalOrganization = primaryProposalOrganization; 926 this.routingChart = primaryProposalOrganization.getChartOfAccountsCode(); 927 this.routingOrg = primaryProposalOrganization.getOrganizationCode(); 928 } 929 930 931 public String getUserLookupRoleNamespaceCode() { 932 return userLookupRoleNamespaceCode; 933 } 934 935 public void setUserLookupRoleNamespaceCode(String userLookupRoleNamespaceCode) { 936 } 937 938 public String getUserLookupRoleName() { 939 return userLookupRoleName; 940 } 941 942 public void setUserLookupRoleName(String userLookupRoleName) { 943 } 944 } 945