package edu.asu.spring.quadriga.web.workbench.backing;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import edu.asu.spring.quadriga.domain.IQuadrigaRole;
import edu.asu.spring.quadriga.domain.IUser;
import edu.asu.spring.quadriga.domain.conceptcollection.IConceptCollectionCollaborator;
import edu.asu.spring.quadriga.domain.dictionary.IDictionaryCollaborator;
import edu.asu.spring.quadriga.domain.workbench.IProjectCollaborator;
import edu.asu.spring.quadriga.domain.workspace.IWorkspaceCollaborator;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
import edu.asu.spring.quadriga.service.conceptcollection.IConceptCollectionManager;
import edu.asu.spring.quadriga.service.dictionary.IDictionaryManager;
import edu.asu.spring.quadriga.service.workbench.IProjectCollaboratorManager;
import edu.asu.spring.quadriga.service.workspace.IWorkspaceCollaboratorManager;
/**
* this class returns the collaborator of ModifyCollaborator domain by calling
* existing DBConnectonManager methods of conecptcollection,project and
* dictionary which by default return collaborator of ICollaborator domain.
*
* @author rohit pendbhaje
*
*/
@Service
public class ModifyCollaboratorFormManager {
@Autowired
private IProjectCollaboratorManager projCollabManager;
@Autowired
private IDictionaryManager dictManager;
@Autowired
private IConceptCollectionManager collectionManager;
@Autowired
private IWorkspaceCollaboratorManager wsCollabManager;
/**
* takes project id to return collaborators of ModifyCollaborator domain
*
* @param projectId
* @return List<ModifyCollaborator> list of modifycollaborator domain
* @throws QuadrigaStorageException
*/
public List<ModifyCollaborator> getProjectCollaborators(String projectId) throws QuadrigaStorageException {
List<ModifyCollaborator> modifyCollaborators = new ArrayList<ModifyCollaborator>();
List<IProjectCollaborator> collaborators = projCollabManager.getProjectCollaborators(projectId);
IUser user;
if (collaborators != null)
for (IProjectCollaborator projectCollaborator : collaborators) {
ModifyCollaborator modifyCollab = new ModifyCollaborator();
user = projectCollaborator.getCollaborator().getUserObj();
modifyCollab.setUserName(user.getUserName());
modifyCollab.setName(user.getName());
modifyCollab.setCollaboratorRoles(projectCollaborator.getCollaborator().getCollaboratorRoles());
modifyCollaborators.add(modifyCollab);
}
return modifyCollaborators;
}
/**
* takes dictionary id to return collaborators of ModifyCollaborator domain
*
* @param dictionaryId
* @return List<ModifyCollaborator> list of modifycollaborator domain
* @throws QuadrigaStorageException
*/
public List<ModifyCollaborator> getDictionaryCollaborators(String dictionaryId) throws QuadrigaStorageException {
List<ModifyCollaborator> modifyCollaborators = new ArrayList<ModifyCollaborator>();
IUser user;
// TODO: showCollaboratingUsers() needs to be modified to call mapper
List<IDictionaryCollaborator> collaborators = dictManager.showCollaboratingUsers(dictionaryId);
if (collaborators != null) {
for (IDictionaryCollaborator dictCollaborator : collaborators) {
ModifyCollaborator modifyCollab = new ModifyCollaborator();
user = dictCollaborator.getCollaborator().getUserObj();
modifyCollab.setUserName(user.getUserName());
modifyCollab.setName(user.getName());
modifyCollab.setCollaboratorRoles(dictCollaborator.getCollaborator().getCollaboratorRoles());
modifyCollaborators.add(modifyCollab);
}
}
return modifyCollaborators;
}
/**
* takes collection id to return collaborators of ModifyCollaborator domain
*
* @param collectionid
* @return List<ModifyCollaborator> list of modifycollaborator domain
* @throws QuadrigaStorageException
*/
public List<ModifyCollaborator> getConceptCollectionCollaborators(String collectionId)
throws QuadrigaStorageException {
List<ModifyCollaborator> modifyCollaborators = new ArrayList<ModifyCollaborator>();
IUser user;
// TODO: showCollaboratingUsers() needs to be modified to call mapper
List<IConceptCollectionCollaborator> collaborators = collectionManager.showCollaboratingUsers(collectionId);
for (IConceptCollectionCollaborator ccCollaborator : collaborators) {
ModifyCollaborator modifyCollab = new ModifyCollaborator();
user = ccCollaborator.getCollaborator().getUserObj();
modifyCollab.setUserName(user.getUserName());
modifyCollab.setName(user.getName());
modifyCollab.setCollaboratorRoles(ccCollaborator.getCollaborator().getCollaboratorRoles());
modifyCollaborators.add(modifyCollab);
}
return modifyCollaborators;
}
public List<ModifyCollaborator> modifyWorkspaceCollaboratorManager(String workspaceId)
throws QuadrigaStorageException {
List<ModifyCollaborator> modifyCollaborators = new ArrayList<ModifyCollaborator>();
IUser user;
List<IWorkspaceCollaborator> collaborators = wsCollabManager.getWorkspaceCollaborators(workspaceId);
if (collaborators != null) {
for (IWorkspaceCollaborator wsCollaborator : collaborators) {
ModifyCollaborator modifyCollab = new ModifyCollaborator();
user = wsCollaborator.getCollaborator().getUserObj();
modifyCollab.setUserName(user.getUserName());
modifyCollab.setName(user.getName());
modifyCollab.setCollaboratorRoles(wsCollaborator.getCollaborator().getCollaboratorRoles());
List<String> roleIds = new ArrayList<String>();
for (IQuadrigaRole role : modifyCollab.getCollaboratorRoles()) {
roleIds.add(role.getId());
}
modifyCollab.setRoleIds(roleIds);
modifyCollaborators.add(modifyCollab);
}
}
return modifyCollaborators;
}
}