View Javadoc

1   package org.kuali.student.enrollment.class1.lui.model;
2   
3   import org.kuali.student.enrollment.lui.dto.LuiLuiRelationInfo;
4   import org.kuali.student.enrollment.lui.infc.LuiLuiRelation;
5   import org.kuali.student.r1.common.entity.KSEntityConstants;
6   import org.kuali.student.r2.common.assembler.TransformUtility;
7   import org.kuali.student.r2.common.entity.AttributeOwner;
8   import org.kuali.student.r2.common.entity.MetaEntity;
9   import org.kuali.student.r2.common.util.RichTextHelper;
10  
11  import javax.persistence.CascadeType;
12  import javax.persistence.Column;
13  import javax.persistence.Entity;
14  import javax.persistence.FetchType;
15  import javax.persistence.JoinColumn;
16  import javax.persistence.ManyToOne;
17  import javax.persistence.NamedQueries;
18  import javax.persistence.NamedQuery;
19  import javax.persistence.OneToMany;
20  import javax.persistence.Table;
21  import javax.persistence.Temporal;
22  import javax.persistence.TemporalType;
23  import java.util.ArrayList;
24  import java.util.Date;
25  import java.util.HashSet;
26  import java.util.List;
27  import java.util.Set;
28  
29  @Entity
30  @Table(name = "KSEN_LUILUI_RELTN")
31  @NamedQueries({
32      @NamedQuery(name="LuiLuiRelationENR.getLuiLuiRelationsByLui", query="SELECT rel from LuiLuiRelationEntity rel where rel.lui.id=:luiId OR rel.relatedLui.id=:luiId"),
33      @NamedQuery(name="LuiLuiRelationENR.getLuiIdsByRelation", query="select rel.lui.id from LuiLuiRelationEntity rel where rel.relatedLui.id=:relatedLuiId and rel.luiLuiRelationType=:luLuRelationTypeKey"),
34      @NamedQuery(name="LuiLuiRelationENR.getLuiIdsAndStateByRelatedLuisAndRelationType", query="Select distinct rel.lui.id, rel.lui.luiState from LuiLuiRelationEntity rel where rel.relatedLui.id in (:luiIds) AND rel.luiLuiRelationType=:luiLuiRelationTypeKey"),
35      @NamedQuery(name="LuiLuiRelationENR.getLuisByRelation", query = "select rel.lui from LuiLuiRelationEntity rel where rel.relatedLui.id=:relatedLuiId and rel.luiLuiRelationType=:luLuRelationTypeKey"),
36      @NamedQuery(name="LuiLuiRelationENR.getRelatedLuisByLuiId", query="select rel.relatedLui.id from LuiLuiRelationEntity rel where rel.lui.id=:luiId and rel.luiLuiRelationType=:luLuRelationTypeKey"),
37      @NamedQuery(name="LuiLuiRelationENR.getLuiLuiRelationsByRelatedLuiAndLuiId", query="Select rel from LuiLuiRelationEntity rel where rel.lui.id=:luiId AND rel.relatedLui.id=:relatedLuiId"),
38      @NamedQuery(name="LuiLuiRelationENR.getRelatedLuisByLuiIdAndRelationType", query="Select rel.relatedLui from LuiLuiRelationEntity rel where rel.lui.id=:luiId AND rel.luiLuiRelationType=:luiLuiRelationTypeKey"),
39      @NamedQuery(name="LuiLuiRelationENR.getRelatedLuiIdsByLuiIdAndRelationType", query="Select rel.relatedLui.id from LuiLuiRelationEntity rel where rel.lui.id=:luiId AND rel.luiLuiRelationType=:luiLuiRelationTypeKey"),
40      @NamedQuery(name="LuiLuiRelationENR.getLuiLuiRelationIdsByType", query="select rel.id from LuiLuiRelationEntity rel where rel.luiLuiRelationType=:luiLuiRelationTypeKey"),
41      @NamedQuery(name="LuiLuiRelationENR.getLuiLuiRelationsByIds", query="Select rel from LuiLuiRelationEntity rel where rel.id in (:ids)")
42  })
43  public class LuiLuiRelationEntity extends MetaEntity implements AttributeOwner<LuiLuiRelationAttributeEntity> {
44  
45      @Column(name = "NAME")
46      private String name;
47      @Column(name = "DESCR_FORMATTED", length = KSEntityConstants.EXTRA_LONG_TEXT_LENGTH)
48      private String formatted;
49      @Column(name = "DESCR_PLAIN", length = KSEntityConstants.EXTRA_LONG_TEXT_LENGTH)
50      private String plain;
51      @ManyToOne
52      @JoinColumn(name = "LUI_ID")
53      private LuiEntity lui;
54      @ManyToOne
55      @JoinColumn(name = "RELATED_LUI_ID")
56      private LuiEntity relatedLui;
57      @Column(name = "LUILUI_RELTN_TYPE")
58      private String luiLuiRelationType;
59      @Column(name = "LUILUI_RELTN_STATE")
60      private String luiLuiRelationState;
61      @Temporal(TemporalType.TIMESTAMP)
62      @Column(name = "EFF_DT")
63      private Date effectiveDate;
64      @Temporal(TemporalType.TIMESTAMP)
65      @Column(name = "EXPIR_DT")
66      private Date expirationDate;
67      @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner", fetch = FetchType.EAGER)
68      private Set<LuiLuiRelationAttributeEntity> attributes = new HashSet<LuiLuiRelationAttributeEntity>();
69  
70      public LuiLuiRelationEntity() {
71      }
72  
73      public LuiLuiRelationEntity(LuiLuiRelation luiLuiRelation) {
74          this.setId(luiLuiRelation.getId());
75          this.setLuiLuiRelationType(luiLuiRelation.getTypeKey());
76          fromDto(luiLuiRelation);
77      }
78  
79      public List<Object> fromDto(LuiLuiRelation luiLuiRelation) {
80          
81          super.fromDTO(luiLuiRelation);
82          
83          List<Object> orphansToDelete = new ArrayList<Object>();
84  
85          this.setEffectiveDate(luiLuiRelation.getEffectiveDate());
86          this.setExpirationDate(luiLuiRelation.getExpirationDate());
87          this.setLuiLuiRelationState(luiLuiRelation.getStateKey());
88          this.setName(luiLuiRelation.getName());
89          if (luiLuiRelation.getDescr() == null) {
90              this.setDescrFormatted(null);
91              this.setDescrPlain(null);
92          } else {
93              this.setDescrFormatted(luiLuiRelation.getDescr().getFormatted());
94              this.setDescrPlain(luiLuiRelation.getDescr().getPlain());
95          }
96  
97          //Attributes
98          orphansToDelete.addAll(TransformUtility.mergeToEntityAttributes(LuiLuiRelationAttributeEntity.class, luiLuiRelation, this));
99  
100         return orphansToDelete;
101      }
102 
103     public LuiLuiRelationInfo toDto() {
104         LuiLuiRelationInfo info = new LuiLuiRelationInfo();
105         info.setId(getId());
106         if (lui != null) {
107             info.setLuiId(lui.getId());
108         }
109         if (relatedLui != null) {
110             info.setRelatedLuiId(relatedLui.getId());
111         }
112         info.setEffectiveDate(effectiveDate);
113         info.setExpirationDate(expirationDate);
114         info.setStateKey(luiLuiRelationState);
115         info.setTypeKey(luiLuiRelationType);
116         info.setMeta(super.toDTO());
117         info.setDescr(new RichTextHelper().toRichTextInfo(plain, formatted));
118 
119         //Attributes
120         info.setAttributes(TransformUtility.toAttributeInfoList(this));
121 
122         return info;
123     }
124 
125     public String getName() {
126         return name;
127     }
128 
129     public void setName(String name) {
130         this.name = name;
131     }
132 
133     public String getDescrFormatted() {
134         return formatted;
135     }
136 
137     public void setDescrFormatted(String formatted) {
138         this.formatted = formatted;
139     }
140 
141     public String getDescrPlain() {
142         return plain;
143     }
144 
145     public void setDescrPlain(String plain) {
146         this.plain = plain;
147     }
148 
149     public LuiEntity getLui() {
150         return lui;
151     }
152 
153     public void setLui(LuiEntity lui) {
154         this.lui = lui;
155     }
156 
157     public LuiEntity getRelatedLui() {
158         return relatedLui;
159     }
160 
161     public void setRelatedLui(LuiEntity relatedLui) {
162         this.relatedLui = relatedLui;
163     }
164 
165     public String getLuiLuiRelationType() {
166         return luiLuiRelationType;
167     }
168 
169     public void setLuiLuiRelationType(String luiLuiRelationType) {
170         this.luiLuiRelationType = luiLuiRelationType;
171     }
172 
173     public String getLuiLuiRelationState() {
174         return luiLuiRelationState;
175     }
176 
177     public void setLuiLuiRelationState(String luiLuiRelationState) {
178         this.luiLuiRelationState = luiLuiRelationState;
179     }
180 
181     public Date getEffectiveDate() {
182         return effectiveDate;
183     }
184 
185     public void setEffectiveDate(Date effectiveDate) {
186         this.effectiveDate = effectiveDate;
187     }
188 
189     public Date getExpirationDate() {
190         return expirationDate;
191     }
192 
193     public void setExpirationDate(Date expirationDate) {
194         this.expirationDate = expirationDate;
195     }
196 
197     public void setAttributes(Set<LuiLuiRelationAttributeEntity> attributes) {
198         this.attributes = attributes;
199 
200     }
201 
202     public Set<LuiLuiRelationAttributeEntity> getAttributes() {
203         return attributes;
204     }
205 }