001 /** 002 * Copyright 2010 The Kuali Foundation Licensed under the 003 * Educational Community License, Version 2.0 (the "License"); you may 004 * not use this file except in compliance with the License. You may 005 * obtain a copy of the License at 006 * 007 * http://www.osedu.org/licenses/ECL-2.0 008 * 009 * Unless required by applicable law or agreed to in writing, 010 * software distributed under the License is distributed on an "AS IS" 011 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 012 * or implied. See the License for the specific language governing 013 * permissions and limitations under the License. 014 */ 015 016 package org.kuali.student.lum.lu.entity; 017 018 import java.util.Date; 019 import java.util.List; 020 021 import javax.persistence.CascadeType; 022 import javax.persistence.Column; 023 import javax.persistence.Entity; 024 import javax.persistence.JoinColumn; 025 import javax.persistence.ManyToOne; 026 import javax.persistence.NamedQueries; 027 import javax.persistence.NamedQuery; 028 import javax.persistence.OneToMany; 029 import javax.persistence.Table; 030 import javax.persistence.Temporal; 031 import javax.persistence.TemporalType; 032 033 import org.kuali.student.common.entity.AttributeOwner; 034 import org.kuali.student.common.entity.MetaEntity; 035 036 @Entity 037 @Table(name = "KSLU_CLUCLU_RELTN") 038 @NamedQueries({ 039 @NamedQuery(name="CluCluRelation.getCluCluRelation", query="SELECT rel FROM CluCluRelation rel WHERE rel.clu.id = :cluId or rel.relatedClu.id = :cluId"), 040 @NamedQuery(name="CluCluRelation.getRelatedCluIdsByCluId", query="SELECT rel.relatedClu.id FROM CluCluRelation rel WHERE rel.clu.id = :cluId AND rel.luLuRelationType.id = :luLuRelationTypeId"), 041 @NamedQuery(name="CluCluRelation.getCluIdsByRelatedCluId", query = "SELECT rel.clu.id FROM CluCluRelation rel WHERE rel.relatedClu.id = :relatedCluId AND rel.luLuRelationType.id = :luLuRelationTypeId"), 042 @NamedQuery(name="CluCluRelation.getRelationTypeByCluId", query="SELECT distinct rel.luLuRelationType.id FROM CluCluRelation rel WHERE rel.clu.id = :cluId AND rel.relatedClu.id = :relatedCluId"), 043 @NamedQuery(name="CluCluRelation.getRelatedClusByCluId", query="SELECT rel.relatedClu FROM CluCluRelation rel WHERE rel.clu.id = :cluId AND rel.luLuRelationType.id = :luLuRelationTypeId"), 044 @NamedQuery(name="CluCluRelation.getClusByRelatedCluId", query="SELECT rel.clu FROM CluCluRelation rel WHERE rel.relatedClu.id = :relatedCluId AND rel.luLuRelationType.id = :luLuRelationTypeId"), 045 @NamedQuery(name="CluCluRelation.getRelatedClusByCluIdSt", query="SELECT rel.relatedClu FROM CluCluRelation rel WHERE rel.clu.id = :cluId AND rel.luLuRelationType.id = :luLuRelationTypeId AND rel.relatedClu.state in (:luStateList)"), 046 @NamedQuery(name="CluCluRelation.getClusByRelatedCluIdSt", query="SELECT rel.clu FROM CluCluRelation rel WHERE rel.relatedClu.id = :relatedCluId AND rel.luLuRelationType.id = :luLuRelationTypeId AND rel.clu.state in (:luStateList)") 047 }) 048 public class CluCluRelation extends MetaEntity implements 049 AttributeOwner<CluCluRelationAttribute> { 050 051 @ManyToOne 052 @JoinColumn(name="CLU_ID") 053 private Clu clu; 054 055 @ManyToOne 056 @JoinColumn(name="RELATED_CLU_ID") 057 private Clu relatedClu; 058 059 @ManyToOne 060 @JoinColumn(name="LU_RELTN_TYPE_ID") 061 private LuLuRelationType luLuRelationType; 062 063 @Column(name = "CLU_RELTN_REQ") 064 private boolean cluRelationRequired; 065 066 @Temporal(TemporalType.TIMESTAMP) 067 @Column(name = "EFF_DT") 068 private Date effectiveDate; 069 070 @Temporal(TemporalType.TIMESTAMP) 071 @Column(name = "EXPIR_DT") 072 private Date expirationDate; 073 074 @Column(name = "ST") 075 private String state; 076 077 @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner") 078 private List<CluCluRelationAttribute> attributes; 079 080 public Clu getClu() { 081 return clu; 082 } 083 084 public void setClu(Clu clu) { 085 this.clu = clu; 086 } 087 088 public Clu getRelatedClu() { 089 return relatedClu; 090 } 091 092 public void setRelatedClu(Clu relatedClu) { 093 this.relatedClu = relatedClu; 094 } 095 096 public LuLuRelationType getLuLuRelationType() { 097 return luLuRelationType; 098 } 099 100 public void setLuLuRelationType(LuLuRelationType luLuRelationType) { 101 this.luLuRelationType = luLuRelationType; 102 } 103 104 public boolean isCluRelationRequired() { 105 return cluRelationRequired; 106 } 107 108 public void setCluRelationRequired(boolean cluRelationRequired) { 109 this.cluRelationRequired = cluRelationRequired; 110 } 111 112 public Date getEffectiveDate() { 113 return effectiveDate; 114 } 115 116 public void setEffectiveDate(Date effectiveDate) { 117 this.effectiveDate = effectiveDate; 118 } 119 120 public Date getExpirationDate() { 121 return expirationDate; 122 } 123 124 public void setExpirationDate(Date expirationDate) { 125 this.expirationDate = expirationDate; 126 } 127 128 public String getState() { 129 return state; 130 } 131 132 public void setState(String state) { 133 this.state = state; 134 } 135 136 @Override 137 public List<CluCluRelationAttribute> getAttributes() { 138 return attributes; 139 } 140 141 @Override 142 public void setAttributes(List<CluCluRelationAttribute> attributes) { 143 this.attributes = attributes; 144 } 145 }