package edu.asu.spring.quadriga.service.user.mapper.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.IUserDAO; import edu.asu.spring.quadriga.domain.IQuadrigaRole; import edu.asu.spring.quadriga.domain.IUser; import edu.asu.spring.quadriga.domain.factories.IUserFactory; import edu.asu.spring.quadriga.dto.QuadrigaUserDTO; import edu.asu.spring.quadriga.dto.QuadrigaUserRequestsDTO; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.service.IQuadrigaRoleManager; import edu.asu.spring.quadriga.service.user.mapper.IUserDeepMapper; import edu.asu.spring.quadriga.web.login.RoleNames; @Service public class UserDeepMapper implements IUserDeepMapper { @Autowired private IUserDAO dbConnect; @Autowired private IUserFactory userFactory; @Autowired private IQuadrigaRoleManager roleManager; /** * {@inheritDoc} */ @Override @Transactional public IUser getUser(String userName) throws QuadrigaStorageException { IUser user = null; QuadrigaUserDTO userDTO = dbConnect.getUserDTO(userName); List<IQuadrigaRole> userRole = null; IQuadrigaRole quadrigaRole = null; List<IQuadrigaRole> rolesList = new ArrayList<IQuadrigaRole>(); if (userDTO != null) { user = mapUser(userDTO); } if (user != null) { userRole = user.getQuadrigaRoles(); for (int i = 0; i < userRole.size(); i++) { quadrigaRole = roleManager.getQuadrigaRoleByDbId(IQuadrigaRoleManager.MAIN_ROLES, userRole.get(i) .getDBid()); // If user account is deactivated remove other roles if (quadrigaRole.getId().equals( RoleNames.ROLE_QUADRIGA_DEACTIVATED)) { rolesList.clear(); rolesList.add(quadrigaRole); break; } rolesList.add(quadrigaRole); } user.setQuadrigaRoles(rolesList); } else { user = userFactory.createUserObject(); quadrigaRole = roleManager .getQuadrigaRoleByDbId(IQuadrigaRoleManager.MAIN_ROLES, RoleNames.DB_ROLE_QUADRIGA_NOACCOUNT); rolesList.add(quadrigaRole); user.setQuadrigaRoles(rolesList); } return user; } /** * {@inheritDoc} */ @Override @Transactional public List<IUser> getAllActiveUsers() throws QuadrigaStorageException { List<IUser> listUsers = null; // Find the ROLEDBID for Deactivated account String sDeactiveRoleDBId = roleManager .getQuadrigaRoleDBId(IQuadrigaRoleManager.MAIN_ROLES, RoleNames.ROLE_QUADRIGA_DEACTIVATED); List<QuadrigaUserDTO> usersDTOList = dbConnect .getUserDTOListNotInRole(sDeactiveRoleDBId); listUsers = getUserListFromQuadrigaUsersDTOList(usersDTOList); return listUsers; } /** * {@inheritDoc} */ @Override @Transactional public List<IUser> getAllInActiveUsers() throws QuadrigaStorageException { List<IUser> listUsers = null; // Find the ROLEDBID for Deactivated account String sDeactiveRoleDBId = roleManager .getQuadrigaRoleDBId(IQuadrigaRoleManager.MAIN_ROLES, RoleNames.ROLE_QUADRIGA_DEACTIVATED); List<QuadrigaUserDTO> usersDTOList = dbConnect .getUserDTOList(sDeactiveRoleDBId); listUsers = getUserListFromQuadrigaUsersDTOList(usersDTOList); return listUsers; } /** * {@inheritDoc} */ @Override @Transactional public List<IUser> getUsersByRoleId(String roleId) throws QuadrigaStorageException { List<QuadrigaUserDTO> usersDTOList = dbConnect.getUserDTOList(roleId); List<IUser> listUsers = getUserListFromQuadrigaUsersDTOList(usersDTOList); return listUsers; } /** * {@inheritDoc} */ @Override @Transactional public List<IUser> getUserRequests() throws QuadrigaStorageException { List<IUser> listUsers = null; List<QuadrigaUserRequestsDTO> userRequestDTOList = dbConnect .getUserRequestDTOList(); listUsers = getUserRequestListFromQuadrigaUserRequestDTOList(userRequestDTOList); return listUsers; } public List<IUser> getUserListFromQuadrigaUsersDTOList( List<QuadrigaUserDTO> usersDTOList) { List<IUser> userList = null; if (usersDTOList != null) { userList = new ArrayList<IUser>(); for (QuadrigaUserDTO userDTO : usersDTOList) { userList.add(mapUser(userDTO)); } } return userList; } private IUser mapUser(QuadrigaUserDTO userDTO) { IUser user = userFactory.createUserObject(); user.setUserName(userDTO.getUsername()); user.setName(userDTO.getFullname()); user.setEmail(userDTO.getEmail()); user.setPassword(userDTO.getPasswd()); user.setQuadrigaRoles(listQuadrigaUserRoles(userDTO .getQuadrigarole())); return user; } public List<IUser> getUserRequestListFromQuadrigaUserRequestDTOList( List<QuadrigaUserRequestsDTO> userRequestsDTO) { List<IUser> userList = null; if (userRequestsDTO != null) { userList = new ArrayList<IUser>(); for (QuadrigaUserRequestsDTO userRequestDTO : userRequestsDTO) { IUser user = userFactory.createUserObject(); user.setUserName(userRequestDTO.getUsername()); user.setName(userRequestDTO.getFullname()); user.setEmail(userRequestDTO.getEmail()); userList.add(user); } } return userList; } public List<IQuadrigaRole> listQuadrigaUserRoles(String roles) { String[] role; List<IQuadrigaRole> rolesList = new ArrayList<IQuadrigaRole>(); IQuadrigaRole userRole = null; if (roles != null && roles.length() > 0) { role = roles.split("\\s*,\\s*"); for (int i = 0; i < role.length; i++) { userRole = roleManager.getQuadrigaRoleByDbId(IQuadrigaRoleManager.MAIN_ROLES, role[i]); rolesList.add(userRole); } } return rolesList; } }