package edu.asu.spring.quadriga.service.workspace.impl; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import edu.asu.spring.quadriga.dao.IUserDAO; import edu.asu.spring.quadriga.dao.workbench.IProjectDAO; import edu.asu.spring.quadriga.dao.workspace.IExternalWorkspaceDAO; import edu.asu.spring.quadriga.dao.workspace.IWorkspaceDAO; import edu.asu.spring.quadriga.domain.IUser; import edu.asu.spring.quadriga.domain.impl.workspace.WorkSpace; import edu.asu.spring.quadriga.domain.workspace.IWorkSpace; import edu.asu.spring.quadriga.dto.ExternalWorkspaceDTO; import edu.asu.spring.quadriga.dto.ProjectDTO; import edu.asu.spring.quadriga.dto.ProjectWorkspaceDTO; import edu.asu.spring.quadriga.dto.QuadrigaUserDTO; import edu.asu.spring.quadriga.exceptions.QuadrigaAccessException; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.mapper.workbench.IProjectBaseMapper; import edu.asu.spring.quadriga.mapper.workspace.IWorkspaceDeepMapper; import edu.asu.spring.quadriga.passthroughproject.constants.Constants; import edu.asu.spring.quadriga.service.workspace.IExternalWorkspaceManager; /** * * This class has all the service layer functions to modify and get external * workspace information. * * */ @Service public class ExternalWorkspaceManager implements IExternalWorkspaceManager { @Autowired private IExternalWorkspaceDAO externalWorkspaceDAO; @Autowired private IProjectDAO projectDao; @Autowired @Qualifier("ProjectBaseMapper") private IProjectBaseMapper projectMapper; @Autowired private IUserDAO userDAO; @Autowired private IWorkspaceDAO workspaceDao; @Autowired private IWorkspaceDeepMapper workspaceMapper; /** * {@inheritDoc} */ @Override public IWorkSpace getExternalWorkspace(String externalWorkspaceId, String projectId) throws QuadrigaStorageException, QuadrigaAccessException { List<ExternalWorkspaceDTO> externalWorkspaceDTOs = externalWorkspaceDAO.getExternalWorkspace(externalWorkspaceId); for (ExternalWorkspaceDTO wsDto : externalWorkspaceDTOs) { IWorkSpace workspace = new WorkSpace(); workspaceMapper.fillWorkspace(wsDto, workspace); if (workspace.getProjectWorkspace().getProject().getProjectId().equals(projectId)) return workspace; } return null; } /** * {@inheritDoc} */ @Override public String createExternalWorkspace(String externalWorkspaceId, String externalWorkspaceName, String projectId, IUser user) { ProjectDTO projectDto = projectDao.getProjectDTO(projectId); ExternalWorkspaceDTO workspaceDTO = new ExternalWorkspaceDTO(); workspaceDTO.setWorkspacename(externalWorkspaceName); workspaceDTO.setDescription(Constants.DEFAULT_WORKSPACE_DESCRIPTION); QuadrigaUserDTO owner = userDAO.getDTO(user.getUserName()); workspaceDTO.setWorkspaceowner(owner); workspaceDTO.setIsarchived(false); workspaceDTO.setIsdeactivated(false); workspaceDTO.setUpdatedby(user.getName()); workspaceDTO.setUpdateddate(new Date()); workspaceDTO.setCreatedby(user.getName()); workspaceDTO.setCreateddate(new Date()); String workspaceId = workspaceDao.generateUniqueID(); workspaceDTO.setWorkspaceid(workspaceId); workspaceDTO.setExternalWorkspaceid(externalWorkspaceId); ProjectWorkspaceDTO projectWorkspaceDTO = projectMapper.getProjectWorkspace(projectDto, workspaceDTO); workspaceDTO.setProjectWorkspaceDTO(projectWorkspaceDTO); externalWorkspaceDAO.saveNewDTO(workspaceDTO); projectDao.updateDTO(projectDto); return workspaceId; } }