Coverage Report - org.kuali.student.core.organization.assembly.OrgPersonRelationAssembler
 
Classes in this File Line Coverage Branch Coverage Complexity
OrgPersonRelationAssembler
0%
0/110
0%
0/28
3.083
 
 1  
 /**
 2  
  * Copyright 2010 The Kuali Foundation Licensed under the
 3  
  * Educational Community License, Version 2.0 (the "License"); you may
 4  
  * not use this file except in compliance with the License. You may
 5  
  * obtain a copy of the License at
 6  
  *
 7  
  * http://www.osedu.org/licenses/ECL-2.0
 8  
  *
 9  
  * Unless required by applicable law or agreed to in writing,
 10  
  * software distributed under the License is distributed on an "AS IS"
 11  
  * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 12  
  * or implied. See the License for the specific language governing
 13  
  * permissions and limitations under the License.
 14  
  */
 15  
 
 16  
 package org.kuali.student.core.organization.assembly;
 17  
 
 18  
 import static org.kuali.student.common.assembly.util.AssemblerUtils.addVersionIndicator;
 19  
 import static org.kuali.student.common.assembly.util.AssemblerUtils.getVersionIndicator;
 20  
 import static org.kuali.student.common.assembly.util.AssemblerUtils.isCreated;
 21  
 import static org.kuali.student.common.assembly.util.AssemblerUtils.isDeleted;
 22  
 import static org.kuali.student.common.assembly.util.AssemblerUtils.isModified;
 23  
 import static org.kuali.student.common.assembly.util.AssemblerUtils.isUpdated;
 24  
 
 25  
 import java.util.ArrayList;
 26  
 import java.util.Iterator;
 27  
 import java.util.List;
 28  
 
 29  
 import org.apache.log4j.Logger;
 30  
 import org.kuali.student.common.assembly.data.AssemblyException;
 31  
 import org.kuali.student.common.assembly.data.Data;
 32  
 import org.kuali.student.common.assembly.data.Metadata;
 33  
 import org.kuali.student.common.assembly.data.QueryPath;
 34  
 import org.kuali.student.common.assembly.data.Data.Property;
 35  
 import org.kuali.student.common.assembly.old.Assembler;
 36  
 import org.kuali.student.common.assembly.old.data.SaveResult;
 37  
 import org.kuali.student.common.assembly.util.AssemblerUtils;
 38  
 import org.kuali.student.common.dto.MetaInfo;
 39  
 import org.kuali.student.common.exceptions.DoesNotExistException;
 40  
 import org.kuali.student.common.ui.client.mvc.DataModel;
 41  
 import org.kuali.student.common.ui.client.mvc.DataModelDefinition;
 42  
 import org.kuali.student.common.validation.dto.ValidationResultInfo;
 43  
 import org.kuali.student.core.organization.assembly.data.server.org.OrgHelper;
 44  
 import org.kuali.student.core.organization.assembly.data.server.org.OrgPersonHelper;
 45  
 import org.kuali.student.core.organization.dto.OrgPersonRelationInfo;
 46  
 import org.kuali.student.core.organization.service.OrganizationService;
 47  
 
 48  0
 public class OrgPersonRelationAssembler implements Assembler<Data, OrgPersonHelper>{
 49  0
         final Logger LOG = Logger.getLogger(OrgPersonRelationAssembler.class);
 50  
     private OrganizationService orgService;
 51  
     private Metadata metadata;
 52  0
     private DataModel orgPersonModel = new DataModel();
 53  
     public static final String PERSON_PATH                  = "orgPersonRelationInfo";
 54  
     
 55  
     public void setMetaData(Metadata metadata){
 56  0
         this.metadata=metadata;
 57  
         
 58  0
     }
 59  
 
 60  
     public void setOrgService(OrganizationService service){
 61  0
         orgService = service;
 62  0
     }
 63  
     @Override
 64  
     public Data assemble(OrgPersonHelper input) throws AssemblyException {
 65  
         // TODO Neerav Agrawal - THIS METHOD NEEDS JAVADOCS
 66  0
         return null;
 67  
     }
 68  
 
 69  
     @Override
 70  
     public OrgPersonHelper disassemble(Data input) throws AssemblyException {
 71  
         // TODO Neerav Agrawal - THIS METHOD NEEDS JAVADOCS
 72  0
         return null;
 73  
     }
 74  
 
 75  
     @Override
 76  
     public Data get(String id) throws AssemblyException {
 77  0
         List<OrgPersonRelationInfo> relations = new ArrayList<OrgPersonRelationInfo>();
 78  0
         Data orgRelationMap = null;
 79  
         try{
 80  0
             relations = orgService.getOrgPersonRelationsByOrg(id);
 81  0
             orgRelationMap = buildOrgPersonRelationMap(relations);
 82  
         }
 83  0
         catch(DoesNotExistException dnee){
 84  0
             return null;
 85  
             
 86  
         }
 87  0
         catch(Exception e){
 88  0
                 LOG.error(e);
 89  0
         }
 90  0
         return orgRelationMap;
 91  
     }
 92  
 
 93  
 
 94  
 
 95  
     @Override
 96  
     public SaveResult<Data> save(Data input) throws AssemblyException {
 97  0
             SaveResult<Data> result = new SaveResult<Data>();
 98  0
         result.setValue(input);
 99  0
         List<ValidationResultInfo> validationResults = validate(input);
 100  0
         result.setValidationResults(validationResults);
 101  
         
 102  0
         updatePersonRelations(input);
 103  0
         return result;
 104  
     }
 105  
 
 106  
 
 107  
 
 108  
     @Override
 109  
     public List<ValidationResultInfo> validate(Data input) throws AssemblyException {
 110  
         // TODO Neerav Agrawal - THIS METHOD NEEDS JAVADOCS
 111  0
         return null;
 112  
     }
 113  
     
 114  
     private void updatePersonRelations(Data input) throws AssemblyException{
 115  0
         if (input == null) {
 116  0
             return;
 117  
         }
 118  0
         DataModelDefinition def = new DataModelDefinition(metadata);
 119  0
         orgPersonModel.setDefinition(def);
 120  
         //Set this for readonly permission
 121  0
         QueryPath metaPath = QueryPath.concat(null, PERSON_PATH);
 122  0
         Metadata orgPersonMeta =orgPersonModel.getMetadata(metaPath);
 123  
         
 124  0
         for (Iterator<Property> propertyIter = ((Data)input.get("orgPersonRelationInfo")).iterator();propertyIter.hasNext();) {
 125  0
                 Property p = propertyIter.next();
 126  0
             OrgPersonHelper orgPersonHelper=  OrgPersonHelper.wrap((Data)p.getValue());
 127  0
             if (isUpdated(orgPersonHelper.getData())) {
 128  0
                 if (orgPersonMeta.isCanEdit()) {
 129  0
                     OrgPersonRelationInfo orgPersonRelationInfo = buildOrgPersonRelationInfo(orgPersonHelper);
 130  0
                     orgPersonRelationInfo.setId(orgPersonHelper.getId());
 131  
                     try {
 132  0
                         OrgPersonRelationInfo result = orgService.updateOrgPersonRelation(orgPersonHelper.getId(), orgPersonRelationInfo);
 133  0
                         addVersionIndicator(orgPersonHelper.getData(), OrgPersonRelationInfo.class.getName(), result.getId(), result.getMetaInfo().getVersionInd());
 134  0
                     } catch (Exception e) {
 135  0
                         throw new AssemblyException();
 136  0
                     }
 137  0
                     AssemblerUtils.setUpdated(orgPersonHelper.getData(), false);
 138  0
                 }
 139  
             }
 140  0
             else if(isDeleted(orgPersonHelper.getData())&&orgPersonHelper.getId()!=null){
 141  
                 try{
 142  0
                     orgService.removeOrgPersonRelation(orgPersonHelper.getId());
 143  0
                     propertyIter.remove();
 144  
                 }
 145  0
                 catch(Exception e ){
 146  0
                         LOG.error(e);
 147  0
                     throw(new AssemblyException());
 148  0
                 }
 149  
             }
 150  0
             else if(isCreated(orgPersonHelper.getData())){
 151  0
                 orgPersonHelper.setOrgId((OrgHelper.wrap((Data)input.get("orgInfo")).getId()));
 152  0
                 OrgPersonRelationInfo orgPersonRelationInfo = buildOrgPersonRelationInfo(orgPersonHelper);
 153  
                 try{
 154  0
                     OrgPersonRelationInfo  result = orgService.createOrgPersonRelation(orgPersonHelper.getOrgId(), orgPersonHelper.getPersonId(), orgPersonHelper.getTypeKey(), orgPersonRelationInfo);
 155  0
                     orgPersonHelper.setId(result.getId());
 156  0
                     addVersionIndicator(orgPersonHelper.getData(),OrgPersonRelationInfo.class.getName(),result.getId(),result.getMetaInfo().getVersionInd());
 157  
                 }
 158  0
                 catch(Exception e ){
 159  0
                         LOG.error(e);
 160  0
                     throw new AssemblyException();
 161  0
                 }
 162  0
                 AssemblerUtils.setCreated(orgPersonHelper.getData(), false);
 163  
             }
 164  
            
 165  
           
 166  0
         }
 167  0
     }
 168  
     
 169  
     private OrgPersonRelationInfo buildOrgPersonRelationInfo(OrgPersonHelper orgPersonHelper){
 170  0
         OrgPersonRelationInfo orgPersonRelationInfo = new OrgPersonRelationInfo();
 171  0
         orgPersonRelationInfo.setOrgId(orgPersonHelper.getOrgId());      
 172  0
         orgPersonRelationInfo.setPersonId(orgPersonHelper.getPersonId());
 173  0
         orgPersonRelationInfo.setType(orgPersonHelper.getTypeKey());
 174  0
         orgPersonRelationInfo.setEffectiveDate(orgPersonHelper.getEffectiveDate());
 175  0
         orgPersonRelationInfo.setExpirationDate(orgPersonHelper.getExpirationDate());
 176  0
         if (orgPersonHelper.getState()!=null)
 177  0
                 orgPersonRelationInfo.setState(orgPersonHelper.getState());
 178  
         else
 179  0
                 orgPersonHelper.setState("Active");
 180  
                 
 181  
        
 182  0
         if (isModified(orgPersonHelper.getData())) {
 183  0
             if (isUpdated(orgPersonHelper.getData())||isDeleted(orgPersonHelper.getData())) {
 184  0
                 MetaInfo metaInfo = new MetaInfo();
 185  0
                 orgPersonRelationInfo.setMetaInfo(metaInfo);
 186  0
                 orgPersonRelationInfo.setId(orgPersonHelper.getId());
 187  
             }
 188  
         }
 189  0
         if(orgPersonRelationInfo.getMetaInfo()!=null){
 190  0
             orgPersonRelationInfo.getMetaInfo().setVersionInd(getVersionIndicator(orgPersonHelper.getData()));
 191  
         }
 192  0
         return orgPersonRelationInfo;
 193  
     }
 194  
     
 195  
     private Data buildOrgPersonRelationMap( List<OrgPersonRelationInfo> relations){
 196  0
         Data orgRelations = new Data();
 197  
         try {
 198  0
         int count =0;
 199  
 
 200  0
         DataModelDefinition def = new DataModelDefinition(metadata);
 201  0
         orgPersonModel.setDefinition(def);
 202  
         //Set this for readonly permission
 203  0
         QueryPath metaPath = QueryPath.concat(null, PERSON_PATH);
 204  0
         Metadata orgPersonMeta =orgPersonModel.getMetadata(metaPath);
 205  0
         for(OrgPersonRelationInfo relation:relations){
 206  0
             Data relationMap = new Data();
 207  0
             OrgPersonHelper orgPersonHelper = OrgPersonHelper.wrap(relationMap);
 208  0
             orgPersonHelper.setId(relation.getId());
 209  0
             orgPersonHelper.setOrgId(relation.getOrgId());
 210  0
             if(!orgPersonMeta.isCanEdit()){
 211  
                 
 212  0
                     orgPersonHelper.setTypeKey(orgService.getOrgPersonRelationType(relation.getType()).getName());
 213  
                
 214  
             }
 215  
             else{
 216  0
                 orgPersonHelper.setTypeKey(relation.getType());
 217  
             }
 218  
             
 219  0
             orgPersonHelper.setPersonId(relation.getPersonId());
 220  0
             orgPersonHelper.setEffectiveDate(relation.getEffectiveDate());
 221  0
             orgPersonHelper.setExpirationDate(relation.getExpirationDate());
 222  0
             addVersionIndicator(orgPersonHelper.getData(),OrgPersonRelationInfo.class.getName(),relation.getId(),relation.getMetaInfo().getVersionInd());
 223  0
             orgRelations.set(count,orgPersonHelper.getData());
 224  0
             count = count +1;
 225  0
         }
 226  
         }
 227  0
         catch(Exception e){
 228  0
                 LOG.error(e);
 229  0
         }
 230  0
         return orgRelations;
 231  
     }
 232  
     @Override
 233  
     public Metadata getMetadata(String idType, String id, String type, String state) throws AssemblyException {
 234  
         // TODO Neerav Agrawal - THIS METHOD NEEDS JAVADOCS
 235  0
         return null;
 236  
     }
 237  
 
 238  
         @Override
 239  
         public Metadata getDefaultMetadata() throws AssemblyException {
 240  
                 // TODO Auto-generated method stub
 241  0
                 return null;
 242  
         }
 243  
 
 244  
 }