/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.inbio.ara.facade.security.impl; import java.util.List; import javax.ejb.EJB; import org.inbio.ara.facade.security.SecurityFacadeRemote; import javax.ejb.Stateless; import org.inbio.ara.dto.security.NomenclaturalGroupDTO; import org.inbio.ara.dto.security.NomenclaturalGroupDTOFactory; import org.inbio.ara.dto.security.SystemUserDTO; import org.inbio.ara.dto.security.SystemUserDTOFactory; import org.inbio.ara.eao.security.NomenclaturalGroupEAOLocal; import org.inbio.ara.eao.security.SystemUserEAOLocal; import org.inbio.ara.eao.security.UserNomenclaturalGroupEAOLocal; import org.inbio.ara.eao.security.UserTaxonEAOLocal; import org.inbio.ara.eao.taxonomy.TaxonEAOLocal; import org.inbio.ara.persistence.security.SystemUser; import org.inbio.ara.persistence.taxonomy.NomenclaturalGroup; import org.inbio.ara.persistence.taxonomy.UserNomenclaturalGroup; import org.inbio.ara.persistence.taxonomy.UserNomenclaturalGroupPK; import org.inbio.ara.persistence.taxonomy.UserTaxon; import org.inbio.ara.persistence.taxonomy.UserTaxonPK; /** * * @author esmata */ @Stateless public class SecurityFacadeImpl implements SecurityFacadeRemote { //Injections @EJB private SystemUserEAOLocal systemUserEAOImpl; @EJB private NomenclaturalGroupEAOLocal nomenclaturalEAOImpl; @EJB private TaxonEAOLocal taxonEAOImpl; @EJB private UserTaxonEAOLocal userTaxonEAOImpl; @EJB private UserNomenclaturalGroupEAOLocal userNomenclaturalGroupEAOImpl; //DTO's factories private SystemUserDTOFactory systemUserDTOFactory = new SystemUserDTOFactory(); private NomenclaturalGroupDTOFactory nomenclaturalDTOFactory = new NomenclaturalGroupDTOFactory(); /** * Encontrar un usuario de sistema especifico * @param name * @param pass * @return */ public SystemUserDTO getSystemUserByNameAndPass(String name,String pass){ SystemUser aux = systemUserEAOImpl.getSystemUserByNameAndPass(name, pass); return systemUserDTOFactory.createDTO(aux); } /** * Metodo para obtener la lista de grupos con la que puede trabajar un * determinado usuario */ public List<NomenclaturalGroupDTO> getNomenclaturalGroupList(Long userId){ return this.nomenclaturalDTOFactory.createDTOList(this.nomenclaturalEAOImpl.getNomenclaturalGroupList(userId)); } /** * Metodo para obtener la lista completa de grupos nomenclaturales ordenados por nombre */ public List<NomenclaturalGroupDTO> getAllNomenclaturalGroup(){ String[] orderByFields = {"name"}; return this.nomenclaturalDTOFactory.createDTOList (this.nomenclaturalEAOImpl.findAllAndOrderBy(NomenclaturalGroup.class,orderByFields)); } /** * Metodo para persistir un nuevo usuario * @param uDTO * @return */ public SystemUserDTO saveNewSystemUser(SystemUserDTO uDTO){ //Entidad a persistir SystemUser entity = systemUserDTOFactory.createEntity(uDTO); //Persistir entidad systemUserEAOImpl.create(entity); //Refrescar el DTO con los datos de la entidad persistida uDTO = systemUserDTOFactory.createDTO(entity); return uDTO; } /** * Metodo que se encarga de actualizar la entidad a partir del dto */ public void updateSystemUser(SystemUserDTO dto){ SystemUser entity = systemUserDTOFactory.createEntity(dto); systemUserEAOImpl.update(entity); } /** * Metodo para eliminar una entidad */ public void deleteSystemUser(SystemUserDTO dto){ SystemUser entity = systemUserEAOImpl.findById(SystemUser.class, dto.getUserId()); systemUserEAOImpl.delete(entity); } /** * Metodo para eliminar las entidades user_taxon asociadas a un usuario */ public void deleteUserTaxonsByUser(Long userId){ //Obtener la lista de user_taxon List<UserTaxon> list = userTaxonEAOImpl.getUserTaxonList(userId); //Borrar cada entrada for(UserTaxon t : list){ userTaxonEAOImpl.delete(t); } } /** * Metodo para eliminar las entidades user_nomenclatural_group asociadas a un usuario */ public void deleteNomenclaturalGroupsByUser(Long userId){ //Obtener la lista de user_nomenclatura_group List<UserNomenclaturalGroup> list = userNomenclaturalGroupEAOImpl.getNomenclaturalGroupList(userId); //Borrar cada entrada for(UserNomenclaturalGroup ng : list){ userNomenclaturalGroupEAOImpl.delete(ng); } } /** * Metodo para averiguar si un usuario es administrador o no lo es. */ public boolean isAdmin(Long userId){ Long userGroup = this.systemUserEAOImpl.getUserGroupIDbyUserId(userId); if(userGroup != null && userGroup == 1L) //1 is Administrador group id in db. This solution is temporary (Hope so!) return true; else return false; } /** * Persistir un nuevo userTaxon */ public void saveUserTaxon(Long taxonId,Long userId,Long secuence){ UserTaxonPK pk = new UserTaxonPK(taxonId, userId, secuence); UserTaxon userTaxon = new UserTaxon(pk); this.userTaxonEAOImpl.create(userTaxon); } /** * Persistir un nuevo UserNomenclaturalGroup */ public void saveUserNomenclaturalGroup(Long groupId,Long userId,Long secuence){ UserNomenclaturalGroupPK pk = new UserNomenclaturalGroupPK(groupId, userId, secuence); UserNomenclaturalGroup group = new UserNomenclaturalGroup(pk); this.userNomenclaturalGroupEAOImpl.create(group); } /** * Retorna la cantidad total de usuarios registrados */ public Long countUsers() { return systemUserEAOImpl.countUserEnabled(); } /** * Retorna un listado paginado de los usuarios */ public List<SystemUserDTO> getAllUsersPaginated(int first, int totalResults) { List<SystemUser> gList = systemUserEAOImpl.getAllUserEnabledPaginated(first, totalResults); if (gList == null) { return null; } else { return systemUserDTOFactory.createDTOList(gList); } } public Long getCollecionIdByNomenclaturalGroupId(Long nomenclatural) { NomenclaturalGroup ng = nomenclaturalEAOImpl.findById(NomenclaturalGroup.class, nomenclatural); return ng.getCollectionId(); } }