Coverage Report - org.kuali.student.enrollment.class1.lpr.model.LprEntity
 
Classes in this File Line Coverage Branch Coverage Complexity
LprEntity
0%
0/72
0%
0/8
1.143
LprEntity$1
0%
0/9
N/A
1.143
LprEntity$2
0%
0/6
N/A
1.143
 
 1  
 package org.kuali.student.enrollment.class1.lpr.model;
 2  
 
 3  
 import java.math.BigDecimal;
 4  
 import java.util.ArrayList;
 5  
 import java.util.Date;
 6  
 import java.util.LinkedHashMap;
 7  
 import java.util.List;
 8  
 import java.util.Map;
 9  
 
 10  
 import javax.persistence.CascadeType;
 11  
 import javax.persistence.Column;
 12  
 import javax.persistence.Entity;
 13  
 import javax.persistence.OneToMany;
 14  
 import javax.persistence.Table;
 15  
 import javax.persistence.Temporal;
 16  
 import javax.persistence.TemporalType;
 17  
 
 18  
 import org.kuali.student.enrollment.lpr.dto.LprInfo;
 19  
 import org.kuali.student.enrollment.lpr.infc.Lpr;
 20  
 import org.kuali.student.r2.common.dto.AttributeInfo;
 21  
 import org.kuali.student.r2.common.entity.MetaEntity;
 22  
 import org.kuali.student.r2.common.helper.EntityMergeHelper;
 23  
 import org.kuali.student.r2.common.helper.EntityMergeHelper.EntityMergeOptions;
 24  
 import org.kuali.student.r2.common.helper.EntityMergeHelper.EntityMergeResult;
 25  
 import org.kuali.student.r2.common.helper.EntityMergeHelper.StringMergeOptions;
 26  
 import org.kuali.student.r2.common.infc.Attribute;
 27  
 
 28  
 /**
 29  
  * @author Igor
 30  
  */
 31  
 @Entity
 32  
 @Table(name = "KSEN_LPR")
 33  
 public class LprEntity extends MetaEntity {
 34  
 
 35  
         @Column(name = "PERS_ID")
 36  
         private String personId;
 37  
 
 38  
         @Column(name = "LUI_ID")
 39  
         private String luiId;
 40  
 
 41  
         @Column(name = "COMMIT_PERCT")
 42  
         private BigDecimal commitmentPercent;
 43  
 
 44  
         @Temporal(TemporalType.TIMESTAMP)
 45  
         @Column(name = "EFF_DT")
 46  
         private Date effectiveDate;
 47  
 
 48  
         @Temporal(TemporalType.TIMESTAMP)
 49  
         @Column(name = "EXPIR_DT")
 50  
         private Date expirationDate;
 51  
 
 52  
         @Column(name = "LPR_TYPE")
 53  
         private String personRelationTypeId;
 54  
 
 55  
         @Column(name = "LPR_STATE")
 56  
         private String personRelationStateId;
 57  
 
 58  
         @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
 59  
         private List<LprAttributeEntity> attributes;
 60  
 
 61  
         @OneToMany(cascade = CascadeType.ALL, mappedBy = "lpr")
 62  
         private List<LprResultValueGroupEntity> resultValueGroups;
 63  
 
 64  0
         public LprEntity() {
 65  0
         }
 66  
 
 67  
         public LprEntity(Lpr dto) {
 68  0
                 super(dto);
 69  
                 // These are the read-only fields
 70  0
                 this.setId(dto.getId());
 71  0
                 this.setLuiId(dto.getLuiId());
 72  0
                 this.setPersonId(dto.getPersonId());
 73  0
                 this.setPersonRelationTypeId(dto.getTypeKey());
 74  0
                 fromDto(dto);
 75  0
         }
 76  
 
 77  
         
 78  
         public List<Object> fromDto(Lpr dto) {
 79  
 
 80  0
                 List<Object> orphanData = new ArrayList<Object>();
 81  
 
 82  0
                 this.setCommitmentPercent(new BigDecimal(dto.getCommitmentPercent()));
 83  0
                 this.setExpirationDate(dto.getExpirationDate());
 84  0
                 this.setEffectiveDate(dto.getEffectiveDate());
 85  0
                 this.setPersonRelationStateId(dto.getStateKey());
 86  
 
 87  0
                 EntityMergeHelper<LprAttributeEntity, Attribute> attributeMergeHelper = new EntityMergeHelper<LprAttributeEntity, Attribute>();
 88  
 
 89  0
                 EntityMergeResult<LprAttributeEntity> attributeMergeResult = attributeMergeHelper
 90  
                                 .merge(this.attributes,
 91  
                                                 (List<Attribute>) dto.getAttributes(),
 92  0
                                                 new EntityMergeOptions<LprAttributeEntity, Attribute>() {
 93  
 
 94  
                                                         @Override
 95  
                                                         public String getEntityId(LprAttributeEntity entity) {
 96  0
                                                                 return entity.getId();
 97  
                                                         }
 98  
 
 99  
                                                         @Override
 100  
                                                         public String getInfoId(Attribute info) {
 101  0
                                                                 return info.getId();
 102  
                                                         }
 103  
 
 104  
                                                         @Override
 105  
                                                         public List<Object> merge(
 106  
                                                                         LprAttributeEntity entity, Attribute info) {
 107  
 
 108  0
                                                                 entity.fromDto(info); 
 109  
                                                                 
 110  0
                                                                 entity.setOwner(LprEntity.this);
 111  
 
 112  0
                                                                 return new ArrayList<Object>();
 113  
                                                         }
 114  
 
 115  
                                                         @Override
 116  
                                                         public LprAttributeEntity create(Attribute info) {
 117  0
                                                                 LprAttributeEntity entity = new LprAttributeEntity(info);
 118  
                                                         
 119  0
                                                                 entity.setOwner(LprEntity.this);
 120  
                                                                 
 121  0
                                                                 return entity;
 122  
                                                         }
 123  
 
 124  
                                                 });
 125  
 
 126  0
                 this.attributes = attributeMergeResult.getMergedList();
 127  
 
 128  0
                 orphanData.addAll(attributeMergeResult.getOrphanList());
 129  
 
 130  0
                 EntityMergeHelper<LprResultValueGroupEntity, String> resultValueGroupMergeHelper = new EntityMergeHelper<LprResultValueGroupEntity, String>();
 131  
 
 132  0
                 EntityMergeResult<LprResultValueGroupEntity> resultValueGroupMergeResult = resultValueGroupMergeHelper
 133  
                                 .mergeStringList(this.resultValueGroups,
 134  
                                                 dto.getResultValuesGroupKeys(),
 135  0
                                                 new StringMergeOptions<LprResultValueGroupEntity>() {
 136  
 
 137  
                                                         @Override
 138  
                                                         public String getKey(
 139  
                                                                         LprResultValueGroupEntity entity) {
 140  0
                                                                 return entity.getResultValueGroupId();
 141  
                                                         }
 142  
 
 143  
                                                         @Override
 144  
                                                         public LprResultValueGroupEntity create(String value) {
 145  
 
 146  0
                                                                 LprResultValueGroupEntity entity = new LprResultValueGroupEntity();
 147  
 
 148  0
                                                                 entity.setResultValueGroupId(value);
 149  
 
 150  0
                                                                 entity.setLpr(LprEntity.this);
 151  
 
 152  0
                                                                 return entity;
 153  
                                                         }
 154  
 
 155  
                                                 });
 156  
 
 157  0
                 this.resultValueGroups = resultValueGroupMergeResult.getMergedList();
 158  
 
 159  0
                 orphanData.addAll(resultValueGroupMergeResult.getOrphanList());
 160  
 
 161  0
                 return orphanData;
 162  
         }
 163  
 
 164  
         public String getPersonId() {
 165  0
                 return personId;
 166  
         }
 167  
 
 168  
         public void setPersonId(String personId) {
 169  0
                 this.personId = personId;
 170  0
         }
 171  
 
 172  
         public String getLuiId() {
 173  0
                 return luiId;
 174  
         }
 175  
 
 176  
         public void setLuiId(String luiId) {
 177  0
                 this.luiId = luiId;
 178  0
         }
 179  
 
 180  
         public Date getEffectiveDate() {
 181  0
                 return effectiveDate;
 182  
         }
 183  
 
 184  
         public void setEffectiveDate(Date effectiveDate) {
 185  0
                 this.effectiveDate = effectiveDate;
 186  0
         }
 187  
 
 188  
         public Date getExpirationDate() {
 189  0
                 return expirationDate;
 190  
         }
 191  
 
 192  
         public void setExpirationDate(Date expirationDate) {
 193  0
                 this.expirationDate = expirationDate;
 194  0
         }
 195  
 
 196  
         public String getPersonRelationTypeId() {
 197  0
                 return personRelationTypeId;
 198  
         }
 199  
 
 200  
         public void setPersonRelationTypeId(String personRelationTypeId) {
 201  0
                 this.personRelationTypeId = personRelationTypeId;
 202  0
         }
 203  
 
 204  
         public String getPersonRelationStateId() {
 205  0
                 return personRelationStateId;
 206  
         }
 207  
 
 208  
         public void setPersonRelationStateId(String personRelationStateId) {
 209  0
                 this.personRelationStateId = personRelationStateId;
 210  0
         }
 211  
 
 212  
         public List<LprAttributeEntity> getAttributes() {
 213  0
                 return attributes;
 214  
         }
 215  
 
 216  
         public void setAttributes(List<LprAttributeEntity> attributes) {
 217  0
                 this.attributes = attributes;
 218  0
         }
 219  
 
 220  
         public LprInfo toDto() {
 221  0
                 LprInfo lprInfo = new LprInfo();
 222  0
                 lprInfo.setId(getId());
 223  0
                 lprInfo.setLuiId(luiId);
 224  0
                 lprInfo.setCommitmentPercent("" + commitmentPercent);
 225  0
                 lprInfo.setPersonId(personId);
 226  0
                 lprInfo.setEffectiveDate(effectiveDate);
 227  0
                 lprInfo.setExpirationDate(expirationDate);
 228  0
                 lprInfo.setTypeKey(personRelationTypeId);
 229  0
                 lprInfo.setStateKey(personRelationStateId);
 230  
 
 231  
                 // instead need to create a new JPA entity to hold the lpr to rvg
 232  
                 // mapping
 233  0
                 List<String> rvGroupIds = new ArrayList<String>();
 234  0
                 if (null != getResultValueGroups()) {
 235  0
                         for (LprResultValueGroupEntity rvGroup : getResultValueGroups()) {
 236  0
                                 rvGroupIds.add(rvGroup.getResultValueGroupId());
 237  
                         }
 238  
                 }
 239  0
                 lprInfo.setResultValuesGroupKeys(rvGroupIds);
 240  
 
 241  0
                 lprInfo.setMeta(super.toDTO());
 242  0
                 List<AttributeInfo> atts = lprInfo.getAttributes();
 243  0
                 if (getAttributes() != null) {
 244  0
                         for (LprAttributeEntity att : getAttributes()) {
 245  0
                                 AttributeInfo attInfo = att.toDto();
 246  0
                                 atts.add(attInfo);
 247  0
                         }
 248  
                 }
 249  
 
 250  0
                 return lprInfo;
 251  
         }
 252  
 
 253  
         public List<LprResultValueGroupEntity> getResultValueGroups() {
 254  0
                 return resultValueGroups;
 255  
         }
 256  
 
 257  
         public void setResultValueGroups(
 258  
                         List<LprResultValueGroupEntity> resultValueGroups) {
 259  0
                 this.resultValueGroups = resultValueGroups;
 260  0
         }
 261  
 
 262  
         public BigDecimal getCommitmentPercent() {
 263  0
                 return commitmentPercent;
 264  
         }
 265  
 
 266  
         public void setCommitmentPercent(BigDecimal commitmentPercent) {
 267  0
                 this.commitmentPercent = commitmentPercent;
 268  0
         }
 269  
 
 270  
 }