View Javadoc

1   /*
2    * Copyright 2008 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 1.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl1.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
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.CourseJointInfo;
24  import org.kuali.student.lum.lu.dto.CluCluRelationInfo;
25  import org.kuali.student.lum.lu.dto.CluInfo;
26  import org.kuali.student.lum.lu.service.LuService;
27  
28  /**
29   * Assembles/Disassembles CourseJointInfo DTO from/to CluCluRelationInfo 
30   * 
31   * @author Kuali Student Team
32   *
33   */
34  public class CourseJointAssembler implements BOAssembler<CourseJointInfo, CluCluRelationInfo> {
35  		
36  	LuService luService;		
37  	
38  	/**
39  	 * @return the luService
40  	 */
41  	public LuService getLuService() {
42  		return luService;
43  	}
44  
45  	/**
46  	 * @param luService the luService to set
47  	 */
48  	public void setLuService(LuService luService) {
49  		this.luService = luService;
50  	}
51  
52  	@Override
53  	public CourseJointInfo assemble(CluCluRelationInfo cluRel, CourseJointInfo jointInfo, boolean shallowBuild) throws AssemblyException {
54  		if(null == cluRel) {
55  			return null;
56  		}
57  		
58  		CourseJointInfo joint = (jointInfo != null) ? jointInfo : new CourseJointInfo();
59  
60  		CluInfo clu;
61  		try {
62  			clu = luService.getClu(cluRel.getRelatedCluId());
63  
64  			joint.setCourseId(clu.getId());
65  			joint.setType(clu.getType());//FIXME is this ever used?
66  			joint.setSubjectArea(clu.getOfficialIdentifier().getDivision());
67  			joint.setCourseTitle(clu.getOfficialIdentifier().getLongName());
68  			joint.setCourseNumberSuffix(clu.getOfficialIdentifier().getSuffixCode());
69  			joint.setRelationId(cluRel.getId());
70  
71  		} catch (Exception e) {
72  			throw new AssemblyException("Error getting related clus", e);
73  		} 
74  		
75  		return joint;
76  	}
77  
78  	@Override
79  	public BaseDTOAssemblyNode<CourseJointInfo, CluCluRelationInfo> disassemble(
80  			CourseJointInfo joint, NodeOperation operation) throws AssemblyException {
81  		
82  		if(null == joint){
83  			//FIXME Unsure now if this is an exception or just return null or empty assemblyNode 
84  			throw new AssemblyException("Activity can not be null");
85  		}
86  				
87  		BaseDTOAssemblyNode<CourseJointInfo, CluCluRelationInfo> result = new BaseDTOAssemblyNode<CourseJointInfo, CluCluRelationInfo>(this);
88  		result.setBusinessDTORef(joint);
89  		result.setOperation(operation);
90  		
91  		CluCluRelationInfo cluRel = new CluCluRelationInfo();
92  		cluRel.setId(UUIDHelper.genStringUUID(joint.getRelationId()));
93  		cluRel.setRelatedCluId(joint.getCourseId());
94  		cluRel.setType(CourseAssemblerConstants.JOINT_RELATION_TYPE);
95  		result.setNodeData(cluRel);
96  		// The caller is required to set the CluId on the cluCluRelation
97  		
98  		return result;
99  	}
100 }