001/**
002 * Copyright 2005-2016 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 */
016package org.kuali.rice.kim.bo.ui;
017
018import org.hibernate.annotations.Fetch;
019import org.hibernate.annotations.FetchMode;
020import org.hibernate.annotations.GenericGenerator;
021import org.hibernate.annotations.Parameter;
022import org.kuali.rice.kim.impl.identity.affiliation.EntityAffiliationTypeBo;
023import org.kuali.rice.krad.util.ObjectUtils;
024
025import javax.persistence.CascadeType;
026import javax.persistence.Column;
027import javax.persistence.Entity;
028import javax.persistence.FetchType;
029import javax.persistence.GeneratedValue;
030import javax.persistence.Id;
031import javax.persistence.IdClass;
032import javax.persistence.JoinColumn;
033import javax.persistence.JoinColumns;
034import javax.persistence.ManyToOne;
035import javax.persistence.OneToMany;
036import javax.persistence.Table;
037import javax.persistence.Transient;
038import java.util.ArrayList;
039import 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")
050public 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}