1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package org.kuali.student.lum.course.service.assembler;
17  
18  import org.kuali.student.common.assembly.BOAssembler;
19  import org.kuali.student.common.assembly.BaseDTOAssemblyNode;
20  import org.kuali.student.common.assembly.BaseDTOAssemblyNode.NodeOperation;
21  import org.kuali.student.common.assembly.data.AssemblyException;
22  import org.kuali.student.common.util.UUIDHelper;
23  import org.kuali.student.lum.course.dto.ActivityInfo;
24  import org.kuali.student.lum.lu.dto.CluInfo;
25  import org.kuali.student.lum.lu.service.LuService;
26  
27  
28  
29  
30  
31  
32  
33  public class ActivityAssembler implements BOAssembler<ActivityInfo, CluInfo> {
34  
35      private LuService luService;
36      
37  	@Override
38  	public ActivityInfo assemble(CluInfo clu, ActivityInfo activity, boolean shallowBuild) {
39  		if(clu == null){
40  			return null;
41  		}
42  		
43  		ActivityInfo activityInfo = (null != activity) ? activity : new ActivityInfo();
44  	    
45  		activityInfo.setId(clu.getId());
46  		activityInfo.setActivityType(clu.getType());
47  		activityInfo.setState(clu.getState());
48  		activityInfo.setDefaultEnrollmentEstimate(clu.getDefaultEnrollmentEstimate());
49  		activityInfo.setDuration(clu.getStdDuration());
50  		activityInfo.setContactHours(clu.getIntensity());
51  		activityInfo.setMetaInfo(clu.getMetaInfo());
52          activityInfo.setAttributes(clu.getAttributes());
53  		return activityInfo;
54  	}
55  
56  	@Override
57  	public BaseDTOAssemblyNode<ActivityInfo,CluInfo> disassemble(
58  			ActivityInfo activity, NodeOperation operation) throws AssemblyException {
59  		if (activity==null) {
60  			
61  			throw new AssemblyException("Activity can not be null");
62  		}
63  		if (NodeOperation.CREATE != operation && null == activity.getId()) {
64  			throw new AssemblyException("Activity's id can not be null");
65  		}
66  		
67  		BaseDTOAssemblyNode<ActivityInfo,CluInfo> result = new BaseDTOAssemblyNode<ActivityInfo,CluInfo>(this);
68  		
69  		CluInfo clu;
70          try {
71              clu = (NodeOperation.UPDATE == operation) ? luService.getClu(activity.getId()) : new CluInfo();
72          } catch (Exception e) {
73              throw new AssemblyException("Error retrieving activity learning unit during update", e);
74          }
75  	
76  		
77  		clu.setId(UUIDHelper.genStringUUID(activity.getId()));
78  		clu.setType(activity.getActivityType());
79  		clu.setState(activity.getState());
80  		clu.setDefaultEnrollmentEstimate(activity.getDefaultEnrollmentEstimate());
81  		clu.setStdDuration(activity.getDuration());
82  		clu.setIntensity(activity.getContactHours());
83  		clu.setMetaInfo(activity.getMetaInfo());
84  		clu.setAttributes(activity.getAttributes());
85  				
86  		
87  		result.setNodeData(clu);
88  
89  		
90  		result.setBusinessDTORef(activity);
91  		
92  		result.setOperation(operation);
93  
94  		return result;
95  	}
96  
97      public void setLuService(LuService luService) {
98          this.luService = luService;
99      }
100 
101     public LuService getLuService() {
102         return luService;
103     }
104 }