package edu.asu.spring.quadriga.mapper; import java.util.ArrayList; import java.util.Date; 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.factories.impl.UserFactory; import edu.asu.spring.quadriga.dto.QuadrigaUserDTO; import edu.asu.spring.quadriga.dto.QuadrigaUserRequestsDTO; import edu.asu.spring.quadriga.service.IQuadrigaRoleManager; /** * Class responsible for mapping the UserManagerDTO to the UserManager * java class * * @author Ram Kumar Kumaresan * */ @Service public class UserDTOMapper extends BaseMapper { @Autowired private UserFactory userFactory; @Autowired private IQuadrigaRoleManager roleManager; /** * Convert a userDTO object to a user object of java class. * If the object is null, a null object will be returned. * * @param userDTO The QuadrigaUserDTO object which needs to be converted to User object * @return A user object of the Java User domain class */ public IUser getUser(QuadrigaUserDTO userDTO) { if (userDTO == null) { return null; } 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; } /** * Create a QuadrigaUserRequestsDTO from a username. The username, createdby, createddate, updatedby, updateddate * will be set in the returned object. * * @param username The username of the user for which the request dto need to be created. * @return A QuadrigaUserRequestsDTO object created based on the input username */ public QuadrigaUserRequestsDTO getUserRequestDTO(String username) { QuadrigaUserRequestsDTO userRequestDTO = null; if(username != null) { userRequestDTO = new QuadrigaUserRequestsDTO(); userRequestDTO.setUsername(username); userRequestDTO.setFullname(username); userRequestDTO.setCreatedby(username); userRequestDTO.setCreateddate(new Date()); userRequestDTO.setUpdatedby(username); userRequestDTO.setUpdateddate(new Date()); } return userRequestDTO; } /** * Create a list of users from the list of quadriga user request objects. * Null will be returned if the input list is null. * * @param userRequestsDTO The list of user requests fetched from database * @return The list of user objects created from the input list */ public List<IUser> getUserReqests(List<QuadrigaUserRequestsDTO> userRequestsDTO) { List<IUser> listUsers = null; if(userRequestsDTO != null) { IUser user = null; listUsers = new ArrayList<IUser>(); for(QuadrigaUserRequestsDTO userRequestDTO : userRequestsDTO) { user = userFactory.createUserObject(); user.setUserName(userRequestDTO.getUsername()); user.setName(userRequestDTO.getFullname()); user.setEmail(userRequestDTO.getEmail()); listUsers.add(user); } } return listUsers; } /** * Convert a list of QuadrigaUserDTO into a list of User objects. * Null will be returned if the input list is null. * * @param usersDTO List of usersDTO that need to be converted to User objects * @return List of user objects created from the input list */ public List<IUser> getUsers(List<QuadrigaUserDTO> usersDTO) { List<IUser> listUsers = null; if(usersDTO != null) { IUser user = null; listUsers = new ArrayList<IUser>(); for(QuadrigaUserDTO userDTO : usersDTO) { user = userFactory.createUserObject(); user.setUserName(userDTO.getUsername()); user.setName(userDTO.getFullname()); user.setEmail(userDTO.getEmail()); user.setQuadrigaRoles(listQuadrigaUserRoles(userDTO.getQuadrigarole())); listUsers.add(user); } } return listUsers; } /** * @Description : Splits the comma separated roles into a list * * @param : roles - String containing the comma separated roles * (ex: role1,role3) * * @return : list of QuadrigaRoles. */ public List<IQuadrigaRole> listQuadrigaUserRoles(String roles) { List<IQuadrigaRole> rolesList = new ArrayList<IQuadrigaRole>(); IQuadrigaRole userRole = null; if(roles != null && roles.length()>0) { String[] 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; } }