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 java.util.List;
019
020import javax.persistence.CascadeType;
021import javax.persistence.Column;
022import javax.persistence.Entity;
023import javax.persistence.FetchType;
024import javax.persistence.GeneratedValue;
025import javax.persistence.Id;
026import javax.persistence.IdClass;
027import javax.persistence.JoinColumn;
028import javax.persistence.JoinColumns;
029import javax.persistence.OneToMany;
030import javax.persistence.Table;
031import javax.persistence.Transient;
032
033import org.hibernate.annotations.Fetch;
034import org.hibernate.annotations.FetchMode;
035import org.hibernate.annotations.GenericGenerator;
036import org.hibernate.annotations.Parameter;
037import org.kuali.rice.core.api.delegation.DelegationType;
038import org.springframework.util.AutoPopulatingList;
039
040/**
041 * This is a description of what this class does - kellerj don't forget to fill this in.
042 *
043 * @author Kuali Rice Team (kuali-rice@googleroles.com)
044 *
045 */
046@IdClass(RoleDocumentDelegationId.class)
047@Entity
048@Table(name="KRIM_PND_DLGN_T")
049public class RoleDocumentDelegation extends KimDocumentBoActivatableBase {
050
051        private static final long serialVersionUID = 1L;
052
053        @Id
054        @GeneratedValue(generator="KRIM_DLGN_ID_S")
055        @GenericGenerator(name="KRIM_DLGN_ID_S",strategy="org.kuali.rice.core.jpa.spring.RiceNumericStringSequenceStyleGenerator",parameters={
056                        @Parameter(name="sequence_name",value="KRIM_DLGN_ID_S"),
057                        @Parameter(name="value_column",value="id")
058                })
059        @Column(name="DLGN_ID")
060        protected String delegationId;
061
062        @Column(name="ROLE_ID")
063        protected String roleId;
064
065        @Column(name="KIM_TYP_ID")
066        protected String kimTypeId;
067
068        @Column(name="DLGN_TYP_CD")
069        protected String delegationTypeCode;
070
071        @OneToMany(targetEntity=RoleDocumentDelegationMember.class, fetch=FetchType.EAGER, cascade={CascadeType.ALL})
072    @Fetch(value = FetchMode.SELECT)
073        @JoinColumns({
074                @JoinColumn(name="dlgn_id",insertable=false,updatable=false),
075                @JoinColumn(name="fdoc_nbr", insertable=false, updatable=false)
076        })
077        private List<RoleDocumentDelegationMember> members = new AutoPopulatingList(RoleDocumentDelegationMember.class);
078
079        @Transient
080        private RoleDocumentDelegationMember member = new RoleDocumentDelegationMember();
081
082        @Transient
083        protected List<KimDocumentRoleQualifier> qualifiers = new AutoPopulatingList(KimDocumentRoleQualifier.class);
084
085        public String getRoleId() {
086                return this.roleId;
087        }
088
089        public void setRoleId(String roleId) {
090                this.roleId = roleId;
091        }
092
093        public String getKimTypeId() {
094                return this.kimTypeId;
095        }
096
097        public void setKimTypeId(String typeId) {
098                this.kimTypeId = typeId;
099        }
100
101        public String getDelegationTypeCode() {
102                return this.delegationTypeCode;
103        }
104
105        public void setDelegationTypeCode(String delegationTypeCode) {
106                this.delegationTypeCode = delegationTypeCode;
107        }
108
109        public String getDelegationId() {
110                return this.delegationId;
111        }
112
113        public void setDelegationId(String delegationId) {
114                this.delegationId = delegationId;
115        }
116
117        /**
118         * @return the qualifiers
119         */
120        public List<KimDocumentRoleQualifier> getQualifiers() {
121                return this.qualifiers;
122        }
123
124        /**
125         * @param qualifiers the qualifiers to set
126         */
127        public void setQualifiers(List<KimDocumentRoleQualifier> qualifiers) {
128                this.qualifiers = qualifiers;
129        }
130
131        public int getNumberOfQualifiers(){
132                return qualifiers==null?0:qualifiers.size();
133        }
134
135        /**
136         * @return the members
137         */
138        public List<RoleDocumentDelegationMember> getMembers() {
139                return this.members;
140        }
141
142        /**
143         * @param members the members to set
144         */
145        public void setMembers(List<RoleDocumentDelegationMember> members) {
146                this.members = members;
147        }
148
149        /**
150         * @return the member
151         */
152        public RoleDocumentDelegationMember getMember() {
153                return this.member;
154        }
155
156        /**
157         * @param member the member to set
158         */
159        public void setMember(RoleDocumentDelegationMember member) {
160                this.member = member;
161        }
162
163        public boolean isDelegationPrimary(){
164                return DelegationType.PRIMARY.getCode().equals(getDelegationTypeCode());
165        }
166
167        public boolean isDelegationSecondary(){
168                return DelegationType.SECONDARY.getCode().equals(getDelegationTypeCode());
169        }
170
171}