package edu.asu.spring.quadriga.service.workspace.impl; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import edu.asu.spring.quadriga.dao.workbench.IProjectWorkspaceDAO; import edu.asu.spring.quadriga.dao.workspace.IWorkspaceDAO; import edu.asu.spring.quadriga.domain.network.INetwork; import edu.asu.spring.quadriga.domain.workspace.IWorkSpace; import edu.asu.spring.quadriga.domain.workspace.IWorkspaceNetwork; import edu.asu.spring.quadriga.dto.WorkspaceDTO; import edu.asu.spring.quadriga.exceptions.QuadrigaAccessException; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.mapper.workspace.IWorkspaceDeepMapper; import edu.asu.spring.quadriga.service.workspace.IWorkspaceManager; import edu.asu.spring.quadriga.web.network.INetworkStatus; /** * Class to display the active, archived and * deactivated workspace associated with project. * * @implements IListWSManager * @author Kiran Kumar Batna, Julia Damerow */ @Service public class WorkspaceManager extends BaseWSManager implements IWorkspaceManager { private static final Logger logger = LoggerFactory.getLogger(WorkspaceManager.class); @Autowired private IProjectWorkspaceDAO projectWorkspaceDao; @Autowired private IWorkspaceDeepMapper workspaceDeepMapper; @Autowired private IWorkspaceDAO wsDao; /** * This method display the workspace details for the workspace submitted. * * @param workspaceId * @return IWorkSpace - workspace object * @throws QuadrigaStorageException * @author Kiran Kumar Batna * @throws QuadrigaAccessException */ @Override @Transactional public IWorkSpace getWorkspaceDetails(String workspaceId, String username) throws QuadrigaStorageException, QuadrigaAccessException { WorkspaceDTO wsDto = wsDao.getDTO(workspaceId); return workspaceDeepMapper.mapWorkspaceDTO(wsDto); } /** * This method display the workspace details for the workspace submitted. * * @param workspaceId * @return IWorkSpace - workspace object * @throws QuadrigaStorageException * @author Kiran Kumar Batna * @throws QuadrigaAccessException */ @Override @Transactional public IWorkSpace getWorkspaceDetails(String workspaceId) throws QuadrigaStorageException, QuadrigaAccessException { WorkspaceDTO wsDto = wsDao.getDTO(workspaceId); return workspaceDeepMapper.mapWorkspaceDTO(wsDto); } /** * This method get the workspace name for the workspace id. * * @param workspaceId * @return workspacename - String object * @throws QuadrigaStorageException * @author Lohith Dwaraka * @throws QuadrigaAccessException */ @Override @Transactional public String getWorkspaceName(String workspaceId) throws QuadrigaStorageException { WorkspaceDTO wsDto = wsDao.getDTO(workspaceId); return workspaceDeepMapper.mapWorkspaceDTO(wsDto).getWorkspaceName(); } @Override @Transactional public List<IWorkspaceNetwork> getWorkspaceNetworkList(String workspaceId) throws QuadrigaStorageException { WorkspaceDTO wsDto = wsDao.getDTO(workspaceId); IWorkSpace workspace = workspaceDeepMapper.mapWorkspaceDTO(wsDto); List<IWorkspaceNetwork> workspaceNetworkList = null; if (workspace != null) { workspaceNetworkList = workspace.getWorkspaceNetworks(); } return workspaceNetworkList; } @Override @Transactional public List<IWorkspaceNetwork> getWorkspaceRejectedNetworkList(String workspaceId) throws QuadrigaStorageException { WorkspaceDTO wsDto = wsDao.getDTO(workspaceId); IWorkSpace workspace = workspaceDeepMapper.mapWorkspaceDTO(wsDto); if (workspace == null) { return null; } List<IWorkspaceNetwork> workspaceNetworkList = workspace.getWorkspaceNetworks(); if (workspaceNetworkList == null) { return null; } List<IWorkspaceNetwork> removeList = new ArrayList<IWorkspaceNetwork>(); for (IWorkspaceNetwork workspaceNetwork : workspaceNetworkList) { INetwork network = workspaceNetwork.getNetwork(); if (network == null || !network.getStatus().equals(INetworkStatus.REJECTED)) { removeList.add(workspaceNetwork); } } for (IWorkspaceNetwork workspaceNetwork : removeList) { workspaceNetworkList.remove(workspaceNetwork); } return workspaceNetworkList; } /** * * {@inheritDoc} * */ @Override @Transactional public List<IWorkspaceNetwork> getWorkspaceApprovedNetworkList(String workspaceId) throws QuadrigaStorageException { WorkspaceDTO wsDto = wsDao.getDTO(workspaceId); IWorkSpace workspace = workspaceDeepMapper.mapWorkspaceDTO(wsDto); List<IWorkspaceNetwork> workspaceNetworkList = null; if (workspace != null) { workspaceNetworkList = workspace.getWorkspaceNetworks(); } List<Integer> removeList = null; if (workspaceNetworkList != null) { for (int i = 0; i < workspaceNetworkList.size(); i++) { IWorkspaceNetwork workspaceNetwork = workspaceNetworkList.get(i); INetwork network = workspaceNetwork.getNetwork(); if (network != null) { if (network.getStatus().equals(INetworkStatus.APPROVED)) { // do nothing } else { if (removeList == null) { removeList = new ArrayList<Integer>(); } removeList.add(i); } } else { if (removeList == null) { removeList = new ArrayList<Integer>(); } removeList.add(i); } } if(removeList!=null){ for (Integer i : removeList) { workspaceNetworkList.remove(i); } } } return workspaceNetworkList; } @Override public String getProjectIdFromWorkspaceId(String workspaceId) throws QuadrigaStorageException { return projectWorkspaceDao.getCorrespondingProjectID(workspaceId); } @Transactional public boolean getDeactiveStatus(String workspaceId) throws QuadrigaStorageException { WorkspaceDTO wsDto = workspaceDao.getDTO(workspaceId.trim()); if (wsDto != null) return wsDto.getIsdeactivated(); return false; } @Override @Transactional public boolean isWorkspaceArchived(String workspaceId) throws QuadrigaStorageException { WorkspaceDTO wsDTO = workspaceDao.getDTO(workspaceId.trim()); return wsDTO != null && wsDTO.getIsarchived(); } }