package edu.asu.spring.quadriga.mapper.workbench.impl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import edu.asu.spring.quadriga.domain.impl.passthroughproject.PassThroughProject; import edu.asu.spring.quadriga.domain.passthroughproject.IPassThroughProject; import edu.asu.spring.quadriga.domain.workbench.IProject; import edu.asu.spring.quadriga.dto.PassThroughProjectDTO; import edu.asu.spring.quadriga.dto.ProjectDTO; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.mapper.workbench.IPassThroughProjectMapper; /** * The purpose of this class is to map the PassThroughProjectDTO class objects * to the PassThroughProject domain objects used in Quadriga * */ @Service("passThroughProjectDTOMapper") public class PassThroughProjectMapper extends ProjectDTOMapper implements IPassThroughProjectMapper { /* * (non-Javadoc) * * @see * edu.asu.spring.quadriga.mapper.IPassThroughProjectMapper#getProjectDTO * (edu.asu.spring.quadriga.domain.workbench.IProject) */ @Override @Transactional public ProjectDTO getProjectDTO(IProject project) { PassThroughProjectDTO projectDTO = new PassThroughProjectDTO(); super.fillProjectDTO(project, projectDTO); // external project details projectDTO.setExternalProjectid(((IPassThroughProject) project).getExternalProjectid()); projectDTO.setExternalUserId(((IPassThroughProject) project).getExternalUserId()); projectDTO.setExternalUserName(((IPassThroughProject) project).getExternalUserName()); projectDTO.setClient(((IPassThroughProject) project).getClient()); return projectDTO; } /** * Wrapper method for getProjectDTO to minimize casting. * * @param project * The project to be mapped to a DTO * @return the corresponding DTO */ @Override public PassThroughProjectDTO getPassThroughProjectDTO(IPassThroughProject project) { return (PassThroughProjectDTO) getProjectDTO(project); } /* * (non-Javadoc) * * @see * edu.asu.spring.quadriga.mapper.IPassThroughProjectMapper#getProject(edu * .asu.spring.quadriga.dto.ProjectDTO) */ @Override @Transactional public IProject getProject(ProjectDTO projectDTO) throws QuadrigaStorageException { if (projectDTO == null) { return null; } IPassThroughProject project = (IPassThroughProject) super.getProject(projectDTO); // external project details project.setExternalProjectid(((PassThroughProjectDTO) projectDTO).getExternalProjectid()); project.setExternalUserId(((PassThroughProjectDTO) projectDTO).getExternalUserId()); project.setExternalUserName(((PassThroughProjectDTO) projectDTO).getExternalUserName()); project.setClient(((PassThroughProjectDTO) projectDTO).getClient()); return project; } @Override protected IProject createProjectObject() { return new PassThroughProject(); } }