package edu.asu.spring.quadriga.service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import edu.asu.spring.quadriga.domain.IQuadrigaRole;
import edu.asu.spring.quadriga.service.IQuadrigaRoleManager;
/**
* QuadrigaRoleManager is used to read the user roles from context file and
* create list of QuadrigaRole objects.
*
* @author Ram Kumar Kumaresan
*
*/
@Service
public class QuadrigaRoleManager implements IQuadrigaRoleManager {
/** List of QuadrigaRole objects which will store various user roles. */
@Autowired
@Qualifier("mainRoles")
private List<IQuadrigaRole> quadrigaRoles;
@Autowired
@Qualifier("projectCollaborator")
private List<IQuadrigaRole> projectCollabRoles;
@Autowired
@Qualifier("ccCollaborator")
private List<IQuadrigaRole> ccCollabRoles;
@Autowired
@Qualifier("dictCollaborator")
private List<IQuadrigaRole> dictCollabRoles;
@Autowired
@Qualifier("workspaceCollaborator")
private List<IQuadrigaRole> wsCollabRoles;
private Map<String, List<IQuadrigaRole>> rolesMap;
@PostConstruct
public void init() {
rolesMap = new HashMap<String, List<IQuadrigaRole>>();
rolesMap.put(MAIN_ROLES, quadrigaRoles);
rolesMap.put(PROJECT_ROLES, projectCollabRoles);
rolesMap.put(CONCEPT_COLLECTION_ROLES, ccCollabRoles);
rolesMap.put(DICT_ROLES, dictCollabRoles);
rolesMap.put(WORKSPACE_ROLES, wsCollabRoles);
}
/**
* {@inheritDoc}
*/
@Override
public IQuadrigaRole getQuadrigaRoleByDbId(String type, String sQuadrigaRoleDBId) {
List<IQuadrigaRole> roles = rolesMap.get(type);
if (roles == null)
return null;
for (IQuadrigaRole role : roles) {
if (role.getDBid().equals(sQuadrigaRoleDBId))
return role;
}
return null;
}
@Override
public IQuadrigaRole getQuadrigaRoleById(String type, String id) {
List<IQuadrigaRole> roles = rolesMap.get(type);
if (roles == null)
return null;
for (IQuadrigaRole role : roles) {
if (role.getId().equals(id))
return role;
}
return null;
}
/**
* {@inheritDoc}
*/
@Override
public String getQuadrigaRoleDBId(String type, String sQuadrigaRoleId) {
List<IQuadrigaRole> roles = rolesMap.get(type);
if (roles == null)
return null;
for (IQuadrigaRole role : roles) {
if (role.getId().equals(sQuadrigaRoleId))
return role.getDBid();
}
return null;
}
/**
* @description: maps roleDBid of the collaborator roles from database to
* xml
*
* @param collaboratorRoleId
* incoming collaborator DBid from the database
*
* @author rohit pendbhaje
*
*/
@Override
public void fillQuadrigaRole(String type, IQuadrigaRole collaboratorRole) {
List<IQuadrigaRole> roles = rolesMap.get(type);
if (roles == null)
return;
for (IQuadrigaRole role : roles) {
if (role.getDBid().equals(collaboratorRole.getDBid())) {
collaboratorRole.setId(role.getId());
collaboratorRole.setDBid(role.getDBid());
collaboratorRole.setName(role.getName());
collaboratorRole.setDescription(role.getDescription());
collaboratorRole.setDisplayName(role.getDisplayName());
}
}
}
/**
* {@inheritDoc}
*/
@Override
public List<IQuadrigaRole> getQuadrigaRoles(String type) {
List<IQuadrigaRole> listForType = rolesMap.get(type);
List<IQuadrigaRole> returnList = new ArrayList<IQuadrigaRole>(listForType);
return returnList;
}
@Override
public List<IQuadrigaRole> getSelectableQuarigaRoles(String type) {
List<IQuadrigaRole> selectableRoles = new ArrayList<IQuadrigaRole>();
for (IQuadrigaRole role : rolesMap.get(type)) {
if (role.isSelectable())
selectableRoles.add(role);
}
return selectableRoles;
}
}