001 /**
002 * Copyright 2005-2012 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.kim.bo.ui;
017
018 import org.hibernate.annotations.Fetch;
019 import org.hibernate.annotations.FetchMode;
020 import org.hibernate.annotations.GenericGenerator;
021 import org.hibernate.annotations.Parameter;
022 import org.kuali.rice.kim.impl.identity.affiliation.EntityAffiliationTypeBo;
023 import org.kuali.rice.krad.util.ObjectUtils;
024
025 import javax.persistence.CascadeType;
026 import javax.persistence.Column;
027 import javax.persistence.Entity;
028 import javax.persistence.FetchType;
029 import javax.persistence.GeneratedValue;
030 import javax.persistence.Id;
031 import javax.persistence.IdClass;
032 import javax.persistence.JoinColumn;
033 import javax.persistence.JoinColumns;
034 import javax.persistence.ManyToOne;
035 import javax.persistence.OneToMany;
036 import javax.persistence.Table;
037 import javax.persistence.Transient;
038 import java.util.ArrayList;
039 import java.util.List;
040
041 /**
042 * This is a description of what this class does - shyu don't forget to fill this in.
043 *
044 * @author Kuali Rice Team (rice.collab@kuali.org)
045 *
046 */
047 @IdClass(PersonDocumentAffiliationId.class)
048 @Entity
049 @Table(name = "KRIM_PND_AFLTN_MT")
050 public class PersonDocumentAffiliation extends PersonDocumentBoDefaultBase {
051 private static final long serialVersionUID = 1L;
052
053 @Id
054 @GeneratedValue(generator="KRIM_ENTITY_AFLTN_ID_S")
055 @GenericGenerator(name="KRIM_ENTITY_AFLTN_ID_S",strategy="org.kuali.rice.core.jpa.spring.RiceNumericStringSequenceStyleGenerator",parameters={
056 @Parameter(name="sequence_name",value="KRIM_ENTITY_AFLTN_ID_S"),
057 @Parameter(name="value_column",value="id")
058 })
059 @Column(name = "ENTITY_AFLTN_ID")
060 protected String entityAffiliationId;
061
062 @Column(name = "AFLTN_TYP_CD")
063 protected String affiliationTypeCode;
064
065 @Column(name = "CAMPUS_CD")
066 protected String campusCode;
067
068 @ManyToOne(targetEntity=EntityAffiliationTypeBo.class, fetch = FetchType.EAGER, cascade = {})
069 @JoinColumn(name = "AFLTN_TYP_CD", insertable = false, updatable = false)
070 protected EntityAffiliationTypeBo affiliationType;
071 @Transient
072 protected PersonDocumentEmploymentInfo newEmpInfo;
073
074 @OneToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE},fetch=FetchType.EAGER)
075 //@JoinColumn(name="ENTITY_AFLTN_ID", insertable=false, updatable=false)
076 @Fetch(value = FetchMode.SELECT)
077 @JoinColumns({
078 @JoinColumn(name="FDOC_NBR",insertable=false,updatable=false),
079 @JoinColumn(name="ENTITY_AFLTN_ID", insertable=false, updatable=false)
080 })
081 protected List<PersonDocumentEmploymentInfo> empInfos;
082
083 public PersonDocumentAffiliation() {
084 empInfos = new ArrayList<PersonDocumentEmploymentInfo>();
085 setNewEmpInfo(new PersonDocumentEmploymentInfo());
086 this.active = true;
087 }
088
089 /**
090 * @see org.kuali.rice.kim.api.identity.EntityAffiliationContract#getAffiliationTypeCode()
091 */
092 public String getAffiliationTypeCode() {
093 if(ObjectUtils.isNull(affiliationTypeCode))
094 return "";
095 return affiliationTypeCode;
096 }
097
098 /**
099 * @see org.kuali.rice.kim.api.identity.EntityAffiliationContract#getCampusCode()
100 */
101 public String getCampusCode() {
102 return campusCode;
103 }
104
105 /**
106 * @see org.kuali.rice.kim.api.identity.EntityAffiliationContract#getEntityAffiliationId()
107 */
108 public String getEntityAffiliationId() {
109 if(ObjectUtils.isNull(entityAffiliationId))
110 return "";
111 return entityAffiliationId;
112 }
113
114 /**
115 * @see org.kuali.rice.kim.api.identity.EntityAffiliationContract#setAffiliationTypeCode(java.lang.String)
116 */
117 public void setAffiliationTypeCode(String affiliationTypeCode) {
118 this.affiliationTypeCode = affiliationTypeCode;
119 }
120
121 /**
122 * @see org.kuali.rice.kim.api.identity.EntityAffiliationContract#setCampusCode(java.lang.String)
123 */
124 public void setCampusCode(String campusCode) {
125 this.campusCode = campusCode;
126 }
127
128 public void setEntityAffiliationId(String entityAffiliationId) {
129 this.entityAffiliationId = entityAffiliationId;
130 }
131
132 public PersonDocumentEmploymentInfo getNewEmpInfo() {
133 return this.newEmpInfo;
134 }
135
136 public void setNewEmpInfo(PersonDocumentEmploymentInfo newEmpInfo) {
137 this.newEmpInfo = newEmpInfo;
138 }
139
140 public List<PersonDocumentEmploymentInfo> getEmpInfos() {
141 return this.empInfos;
142 }
143
144 public void setEmpInfos(List<PersonDocumentEmploymentInfo> empInfos) {
145 this.empInfos = empInfos;
146 }
147
148 public EntityAffiliationTypeBo getAffiliationType() {
149 if(ObjectUtils.isNull(affiliationType))
150 return null;
151 return this.affiliationType;
152 }
153
154 public boolean isEmploymentAffiliationType() {
155 if(ObjectUtils.isNull(affiliationType))
156 return false;
157 return this.affiliationType.isEmploymentAffiliationType();
158 }
159
160 public void setAffiliationType(EntityAffiliationTypeBo affiliationType) {
161 this.affiliationType = affiliationType;
162 }
163
164 }