001 /*
002 * Copyright 2008 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 1.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl1.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.student.r1.common.assembly;
017
018 import org.kuali.student.r1.common.assembly.BaseDTOAssemblyNode.NodeOperation;
019 import org.kuali.student.r2.common.assembler.AssemblyException;
020 import org.kuali.student.r2.common.dto.ContextInfo;
021 import org.kuali.student.r2.common.exceptions.*;
022
023
024 /**
025 * An assembler that provides assembly and disassembly of business DTO from/to
026 * their base DTO.
027 *
028 * During disassembly of business DTO, it is required that all implementations
029 * generate the id (if newly created base DTO) from UUID and use that in mapping
030 * relations.
031 *
032 * Generic Mapping:
033 * E -> Business DTO e.g. CourseInfo
034 * T -> Base DTO e.g. CluInfo
035 *
036 * It is a good practice to propagate state from the parent objects through to the children
037 *
038 * @author Kuali Student Team
039 *
040 */
041 @Deprecated
042 public interface BOAssembler<E, T> {
043
044 /**
045 *
046 * This method assembles the business DTO from its base DTO.
047 *
048 * @param baseDTO
049 * Base DTO that corresponds to the business DTO
050 * @param businessDTO
051 * Reference to Business DTO
052 * @param shallowBuild
053 * boolean flag to indicate if the assembly should be shallow or deep
054 * @return Assembled business DTO
055 * @throws AssemblyException
056 */
057 public E assemble(T baseDTO, E businessDTO, boolean shallowBuild, ContextInfo contextInfo) throws AssemblyException, PermissionDeniedException;
058
059 /**
060 *
061 * This method returns a collection of base DTOs and the operations that
062 * need to be performed on them in a given order
063 *
064 *
065 * @param businessDTO
066 * Business DTO to be disassembled
067 * @param isCreate
068 * Is the disassembly done for create
069 *
070 * @return A sorted map of BaseDTOAssemblyNodes to be processed in the given
071 * order. The key (Integer) is the sequence in which the nodes have
072 * to be processed
073 * @throws AssemblyException
074 * @throws PermissionDeniedException
075 */
076 public BaseDTOAssemblyNode<E, T> disassemble(
077 E businessDTO, NodeOperation operation, ContextInfo contextInfo) throws AssemblyException, PermissionDeniedException, InvalidParameterException, MissingParameterException, DoesNotExistException, OperationFailedException;
078 }