package edu.asu.spring.quadriga.service.workspace.impl;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import edu.asu.spring.quadriga.dao.IBaseDAO;
import edu.asu.spring.quadriga.dao.ICollaboratorDAO;
import edu.asu.spring.quadriga.dao.workspace.IWorkspaceCollaboratorDAO;
import edu.asu.spring.quadriga.dao.workspace.IWorkspaceDAO;
import edu.asu.spring.quadriga.dao.workspace.impl.WorkspaceDAO;
import edu.asu.spring.quadriga.domain.IQuadrigaRole;
import edu.asu.spring.quadriga.domain.workspace.IWorkSpace;
import edu.asu.spring.quadriga.domain.workspace.IWorkspaceCollaborator;
import edu.asu.spring.quadriga.dto.WorkspaceCollaboratorDTO;
import edu.asu.spring.quadriga.dto.WorkspaceCollaboratorDTOPK;
import edu.asu.spring.quadriga.dto.WorkspaceDTO;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
import edu.asu.spring.quadriga.mapper.workspace.IWorkspaceDeepMapper;
import edu.asu.spring.quadriga.service.IQuadrigaRoleManager;
import edu.asu.spring.quadriga.service.impl.CollaboratorManager;
import edu.asu.spring.quadriga.service.workspace.IWorkspaceCollaboratorManager;
@Service
public class WorkspaceCollaboratorManager extends CollaboratorManager<WorkspaceCollaboratorDTO, WorkspaceCollaboratorDTOPK, WorkspaceDTO, WorkspaceDAO> implements IWorkspaceCollaboratorManager
{
@Autowired
private IWorkspaceDAO workspaceDao;
@Autowired
private IWorkspaceCollaboratorDAO wsCollabDao;
@Autowired
private IQuadrigaRoleManager roleManager;
@Autowired
private IWorkspaceDeepMapper workspaceDeepMapper;
@Override
public WorkspaceCollaboratorDTO createNewCollaboratorDTO() {
return new WorkspaceCollaboratorDTO();
}
@Override
public WorkspaceCollaboratorDTOPK createNewCollaboratorDTOPK(String id,
String collabUser, String role) {
return new WorkspaceCollaboratorDTOPK(id, collabUser, role);
}
@Override
public IBaseDAO<WorkspaceDTO> getDao() {
return workspaceDao;
}
@Override
public ICollaboratorDAO<WorkspaceCollaboratorDTO> getCollaboratorDao() {
return wsCollabDao;
}
/**
* This method returns the collaborators list for a workspace
* @param workspaceId
* @return List<ICollaborator>
* @throws QuadrigaStorageException
* @author kiranbatna
*/
@Override
@Transactional
public List<IWorkspaceCollaborator> getWorkspaceCollaborators(String workspaceId) throws QuadrigaStorageException
{
List<IWorkspaceCollaborator> workspaceCollaboratorList = null;
IQuadrigaRole role;
List<IQuadrigaRole> roleList;
WorkspaceDTO workspaceDTO = workspaceDao.getDTO(workspaceId);
IWorkSpace workspace = workspaceDeepMapper.mapWorkspaceDTO(workspaceDTO);
//retrieve the collaborators associated with project
if(workspace != null){
workspaceCollaboratorList = workspace.getWorkspaceCollaborators();
}
//map the collaborators to UI XML values
if(workspaceCollaboratorList != null){
for (IWorkspaceCollaborator workspaceCollaborator : workspaceCollaboratorList)
{
roleList = new ArrayList<IQuadrigaRole>();
if(workspaceCollaborator.getCollaborator()!=null && workspaceCollaborator.getCollaborator().getCollaboratorRoles() != null){
for (IQuadrigaRole collaboratorRole : workspaceCollaborator.getCollaborator().getCollaboratorRoles()) {
role = roleManager.getQuadrigaRoleByDbId(IQuadrigaRoleManager.WORKSPACE_ROLES, collaboratorRole.getDBid());
roleList.add(role);
}
}
workspaceCollaborator.getCollaborator().setCollaboratorRoles(roleList);
}
}
return workspaceCollaboratorList;
}
}