package edu.asu.spring.quadriga.service.workspace.impl; import java.util.Date; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import edu.asu.spring.quadriga.dao.workbench.IProjectDAO; import edu.asu.spring.quadriga.dao.workspace.IWorkspaceDAO; import edu.asu.spring.quadriga.dao.workspace.IWorkspaceEditorDAO; import edu.asu.spring.quadriga.domain.IUser; import edu.asu.spring.quadriga.domain.workspace.IWorkSpace; import edu.asu.spring.quadriga.dto.ProjectDTO; import edu.asu.spring.quadriga.dto.ProjectWorkspaceDTO; import edu.asu.spring.quadriga.dto.WorkspaceDTO; import edu.asu.spring.quadriga.dto.WorkspaceEditorDTO; import edu.asu.spring.quadriga.email.IEmailNotificationManager; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.mapper.WorkspaceCollaboratorDTOMapper; import edu.asu.spring.quadriga.mapper.WorkspaceDTOMapper; import edu.asu.spring.quadriga.mapper.workbench.IProjectBaseMapper; import edu.asu.spring.quadriga.service.IUserManager; import edu.asu.spring.quadriga.service.workspace.IModifyWSManager; /** * Class implements {@link IModifyWSManager} to add/update/delete workspace * associated with project. * * @implements IListWSManager * @author Kiran Kumar Batna */ @Service @Transactional(rollbackFor = { Exception.class }) public class ModifyWSManager implements IModifyWSManager { @Autowired private IEmailNotificationManager emailManager; @Autowired private IWorkspaceDAO workspaceDao; @Autowired private IProjectDAO projectDao; @Autowired private IWorkspaceEditorDAO workspaceEditorDao; @Autowired private WorkspaceDTOMapper workspaceDTOMapper; @Autowired private WorkspaceCollaboratorDTOMapper collaboratorMapper; @Autowired private IUserManager userManager; @Autowired @Qualifier("ProjectBaseMapper") private IProjectBaseMapper projectMapper; /** * This inserts a workspace for a project into database. * * @param workspace * @param projectId * @return String errmsg - blank on success and error message on failure * @throws QuadrigaStorageException * @author Julia Damerow, kiranbatna */ @Override public void addWorkspaceToProject(IWorkSpace workspace, String projectId, String username) throws QuadrigaStorageException { IUser user = userManager.getUser(username); workspace.setOwner(user); ProjectDTO projectDto = projectDao.getProjectDTO(projectId); WorkspaceDTO workspaceDTO = workspaceDTOMapper.getWorkspaceDTO(workspace); workspaceDTO.setWorkspaceid(workspaceDao.generateUniqueID()); ProjectWorkspaceDTO projectWorkspaceDTO = projectMapper.getProjectWorkspace(projectDto, workspaceDTO); workspaceDTO.setProjectWorkspaceDTO(projectWorkspaceDTO); workspaceDao.saveNewDTO(workspaceDTO); projectDao.updateDTO(projectDto); } /** * This method deletes the requested workspace. * * @param workspaceIdList * - comma separated list of workspace ids to delete * @return boolean - return true if delete was successful, otherwise false * @author Julia Damerow, kiranbatna */ @Override public boolean deleteWorkspace(String wsId) { return workspaceDao.deleteWorkspace(wsId); } /** * This method updates the workspace * * @param workspace * @return String - errmsg blank on success and error message on failure * @throws QuadrigaStorageException * @author Julia Damerow, kiranbatna */ @Override @Transactional public void updateWorkspace(IWorkSpace workspace) throws QuadrigaStorageException { WorkspaceDTO workspaceDTO = workspaceDao.getDTO(workspace.getWorkspaceId()); workspaceDTO.setWorkspacename(workspace.getWorkspaceName()); workspaceDTO.setDescription(workspace.getDescription()); workspaceDTO.setUpdateddate(new Date()); workspaceDTO.setUpdatedby(workspace.getOwner().getName()); workspaceDao.updateDTO(workspaceDTO); } /** * Method to assign the editor role to a user. * * @param workspaceId * @param userName * @return * @throws QuadrigaStorageException */ @Override @Transactional public void assignEditorRole(String workspaceId, String userName) throws QuadrigaStorageException { WorkspaceDTO workspaceDto = workspaceDao.getDTO(workspaceId); WorkspaceEditorDTO workspaceEditorDTO = workspaceDTOMapper.getWorkspaceEditor(workspaceDto, userName); workspaceEditorDao.saveNewDTO(workspaceEditorDTO); } /** * Manager for Assigning editor roles to owner for workspace level * * @param workspaceId * @param userName * username of the user that should be deleted as editor * @return true if editor role was removed, otherwise false * @throws QuadrigaStorageException */ @Override @Transactional public boolean deleteEditorRole(String workspaceId, String userName) { WorkspaceEditorDTO workspaceEditorDTO = workspaceEditorDao.getWorkspaceEditorDTO(workspaceId, userName); if (workspaceEditorDTO != null) { workspaceEditorDao.deleteWorkspaceEditorDTO(workspaceEditorDTO); return true; } else { return false; } } }