001 /**
002 * Copyright 2005-2013 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 package org.kuali.rice.krad.bo;
017
018 import javax.persistence.Entity;
019 import javax.persistence.Table;
020 import javax.persistence.Transient;
021
022 import org.apache.commons.lang.StringUtils;
023 import org.kuali.rice.kim.api.identity.Person;
024 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
025
026 /**
027 * Ad Hoc Route Person Business Object
028 *
029 * @author Kuali Rice Team (rice.collab@kuali.org)
030 */
031 //@IdClass(AdHocRoutePersonId.class)
032 @Entity
033 @Table(name = "KRNS_ADHOC_RTE_ACTN_RECIP_T")
034 public class AdHocRoutePerson extends AdHocRouteRecipient {
035 private static final long serialVersionUID = 1L;
036
037 @Transient
038 private transient Person person;
039
040 public AdHocRoutePerson() {
041 setType(PERSON_TYPE);
042
043 try {
044 person = (Person) KimApiServiceLocator.getPersonService().getPersonImplementationClass().newInstance();
045 } catch (Exception e) {
046 throw new RuntimeException(e);
047 }
048 }
049
050 @Override
051 public void setType(Integer type) {
052 if (!PERSON_TYPE.equals(type)) {
053 throw new IllegalArgumentException("cannot change type to " + type);
054 }
055 super.setType(type);
056 }
057
058 @Override
059 public void setId(String id) {
060 super.setId(id);
061
062 if (StringUtils.isNotBlank(id)) {
063 person = KimApiServiceLocator.getPersonService().getPersonByPrincipalName(id);
064 setPerson(person);
065 }
066 }
067
068 @Override
069 public void setName(String name) {
070 super.setName(name);
071
072 if (StringUtils.isNotBlank(name) && getId() != null &&
073 ((person != null) && !StringUtils.equals(person.getName(), name))) {
074 person = KimApiServiceLocator.getPersonService().getPersonByPrincipalName(getId());
075 setPerson(person);
076 }
077 }
078
079 public Person getPerson() {
080 if ((person == null) || !StringUtils.equals(person.getPrincipalName(), getId())) {
081 person = KimApiServiceLocator.getPersonService().getPersonByPrincipalName(getId());
082
083 if (person == null) {
084 try {
085 person = (Person) KimApiServiceLocator.getPersonService().getPersonImplementationClass()
086 .newInstance();
087 } catch (Exception e) {
088 throw new RuntimeException(e);
089 }
090 }
091 }
092
093 return person;
094 }
095
096 public void setPerson(Person person) {
097 this.person = person;
098 if (person != null) {
099 this.id = person.getPrincipalName();
100 this.name = person.getName();
101 }
102 }
103 }
104