001    package org.kuali.student.enrollment.class1.roster.model;
002    
003    import java.util.ArrayList;
004    import java.util.Date;
005    import java.util.HashSet;
006    import java.util.List;
007    import java.util.Set;
008    
009    import javax.persistence.CascadeType;
010    import javax.persistence.Column;
011    import javax.persistence.Entity;
012    import javax.persistence.FetchType;
013    import javax.persistence.OneToMany;
014    import javax.persistence.Table;
015    import javax.persistence.Temporal;
016    import javax.persistence.TemporalType;
017    
018    import org.kuali.student.enrollment.roster.dto.LprRosterEntryInfo;
019    import org.kuali.student.r2.common.dto.AttributeInfo;
020    import org.kuali.student.r2.common.entity.AttributeOwner;
021    import org.kuali.student.r2.common.entity.MetaEntity;
022    import org.kuali.student.r2.common.infc.Attribute;
023    
024    @Entity
025    @Table(name = "KSEN_LPR_ROSTER_ENTRY")
026    public class LprRosterEntryEntity extends MetaEntity implements AttributeOwner<LprRosterEntryAttributeEntity>{
027    
028        @Column(name = "LPRROSTER_ID")
029        private String lprRosterId;
030    
031        @Column(name = "LPR_ID")
032        private String lprId;
033    
034        @Column(name = "POSITION")
035        private Integer position;
036    
037        @Temporal(TemporalType.TIMESTAMP)
038        private Date effectiveDate;
039    
040        @Temporal(TemporalType.TIMESTAMP)
041        private Date expirationDate;
042    
043        @Column(name = "RELATION_TYPE_ID")
044        private String lprEntryRelationType;
045    
046        @Column(name = "RELATION_STATE_ID")
047        private String lprEntryRelationState;
048    
049        @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner", fetch = FetchType.EAGER, orphanRemoval=true)
050        private Set<LprRosterEntryAttributeEntity> attributes;
051    
052        public LprRosterEntryEntity() {}
053    
054        public LprRosterEntryEntity(LprRosterEntryInfo dto) {
055            if (dto != null) {
056                this.setId(dto.getId());
057                this.setLprId(dto.getLprId());
058                this.setLprRosterId(dto.getLprRosterId());
059                this.setExpirationDate(dto.getExpirationDate());
060                this.setEffectiveDate(dto.getEffectiveDate());
061                this.setPosition(dto.getPosition());
062                if (dto.getStateKey() != null) {
063                    this.setLprEntryRelationState(dto.getStateKey());
064                }
065                this.setAttributes(new HashSet<LprRosterEntryAttributeEntity>());
066                if (null != dto.getAttributes()) {
067                    for (Attribute att : dto.getAttributes()) {
068                        LprRosterEntryAttributeEntity attEntity = new LprRosterEntryAttributeEntity(att, this);
069                        this.getAttributes().add(attEntity);
070                    }
071                }
072            }
073        }
074    
075        public Date getEffectiveDate() {
076            return effectiveDate;
077        }
078    
079        public void setEffectiveDate(Date effectiveDate) {
080            this.effectiveDate = effectiveDate;
081        }
082    
083        public Date getExpirationDate() {
084            return expirationDate;
085        }
086    
087        public void setExpirationDate(Date expirationDate) {
088            this.expirationDate = expirationDate;
089        }
090    
091        public String getLprId() {
092            return lprId;
093        }
094    
095        public void setLprId(String lprId) {
096            this.lprId = lprId;
097        }
098    
099        public String getLprRosterId() {
100            return lprRosterId;
101        }
102    
103        public void setLprRosterId(String lprRosterId) {
104            this.lprRosterId = lprRosterId;
105        }
106    
107        public Integer getPosition() {
108            return position;
109        }
110    
111        public void setPosition(Integer position) {
112            this.position = position;
113        }
114    
115        public Set<LprRosterEntryAttributeEntity> getAttributes() {
116            return attributes;
117        }
118    
119        public void setAttributes(Set<LprRosterEntryAttributeEntity> attributes) {
120            this.attributes = attributes;
121        }
122    
123        public String getLprEntryRelationState() {
124            return lprEntryRelationState;
125        }
126    
127        public void setLprEntryRelationState(String lprEntryRelationState) {
128            this.lprEntryRelationState = lprEntryRelationState;
129        }
130    
131        public String getLprEntryRelationType() {
132            return lprEntryRelationType;
133        }
134    
135        public void setLprEntryRelationType(String lprEntryRelationType) {
136            this.lprEntryRelationType = lprEntryRelationType;
137        }
138    
139        public LprRosterEntryInfo toDto() {
140            LprRosterEntryInfo info = new LprRosterEntryInfo();
141            info.setId(this.getId());
142            info.setEffectiveDate(getEffectiveDate());
143            info.setExpirationDate(getExpirationDate());
144            info.setLprId(getLprId());
145            info.setLprRosterId(getLprRosterId());
146            info.setPosition(getPosition());
147    
148            if (getLprEntryRelationState() != null) {
149                info.setStateKey(getLprEntryRelationState());
150            }
151            if (getLprEntryRelationType() != null) {
152                info.setTypeKey(getLprEntryRelationType());
153            }
154    
155            List<AttributeInfo> atts = new ArrayList<AttributeInfo>();
156            for (LprRosterEntryAttributeEntity att : getAttributes()) {
157                AttributeInfo attInfo = att.toDto();
158                atts.add(attInfo);
159            }
160            info.setAttributes(atts);
161            info.setMeta(super.toDTO());
162    
163            return info;
164        }
165    
166    }