@Override public void vinculaUsuariosGrupo(String oidGrupo, List<String> listOidUsuarios) throws TimeLapseException { TimeLapseException errores = new TimeLapseException(); // Compurebo que existen los grupos y usuarios TldGrupo grupo = grupoDao.find(oidGrupo); List<TldUsuario> listaUsuariosAAsociar = new ArrayList<TldUsuario>(); if (grupo == null) { String cadIdGrupo = bibliotecaI18n.traduce("mensajes.Identificador_Grupo"); Mensaje mensaje = factoriaMens.getMensaje(ConstantesException.grupoInexistente, cadIdGrupo + oidGrupo); errores.addMensaje(mensaje); } else { // Recorro los identificadores de usuarios a vincular for (String oidUsuarioIterado : listOidUsuarios) { TldUsuario usuarioIterado = usuarioDao.findById(oidUsuarioIterado); if (usuarioIterado == null) { String cadIdUsuario = bibliotecaI18n.traduce("mensajes.Identificador_Usuario"); Mensaje mensaje = factoriaMens.getMensaje( ConstantesException.usuarioInexistente, cadIdUsuario + oidUsuarioIterado); errores.addMensaje(mensaje); } else { listaUsuariosAAsociar.add(usuarioIterado); } } // Si no se han producido errores todavía if (errores.isEmpty()) { // Luego compruebo que no existan alguna de las relaciones que voy a crear List<TlrUsuarioGrupo> relacionesYaExistentes = usuarioGrupoDao.findAll(grupo, listaUsuariosAAsociar); /* * Si ya existen relaciones existentes elevo la excepción pertinente, ya que no se pueden crera * más de una relación entre el mismo grupo y usuario */ if (!relacionesYaExistentes.isEmpty()) { String cadIdGrupo = bibliotecaI18n.traduce("mensajes.Identificador_Grupo"); Mensaje mensaje = factoriaMens.getMensaje( ConstantesException.relacionUsuarioGrupoYaExistente, cadIdGrupo + relacionesYaExistentes.get(0).getTldGrupo().getNombre()); errores.addMensaje(mensaje); } else { // Hago persistentes las relaciones usuarioGrupoDao.vinculaUsuarioGrupo(grupo, listaUsuariosAAsociar); } } } // Si se produce un error, elebo la excepción if (!errores.isEmpty()) { throw errores; } }
@Override public void desvinculaUsuarioGrupo(String oidGrupo, List<String> listOidUsuarios) throws TimeLapseException { TimeLapseException errores = new TimeLapseException(); // Compruebo que exitan tanto el grupo como los usuarios TldGrupo grupo = grupoDao.find(oidGrupo); List<TldUsuario> listaUsuariosADesasociar = new ArrayList<TldUsuario>(); if (grupo == null) { String cadIdGrupo = bibliotecaI18n.traduce("mensajes.Identificador_Grupo"); Mensaje mensaje = factoriaMens.getMensaje(ConstantesException.grupoInexistente, cadIdGrupo + oidGrupo); errores.addMensaje(mensaje); } else { // Recorro los identificadores de usuarios a vincular for (String oidUsuarioIterado : listOidUsuarios) { TldUsuario usuarioIterado = usuarioDao.findById(oidUsuarioIterado); if (usuarioIterado == null) { String cadIdUsuario = bibliotecaI18n.traduce("mensajes.Identificador_Usuario"); Mensaje mensaje = factoriaMens.getMensaje( ConstantesException.usuarioInexistente, cadIdUsuario + oidUsuarioIterado); errores.addMensaje(mensaje); } else { listaUsuariosADesasociar.add(usuarioIterado); } } // Si no se han producido errores todavía if (errores.isEmpty()) { // Desvinculo las tareas asociadas a esa persona ya que va a dejar de estar en el grupo tareaDao.desvinculaTareasUsuariosDelGrupoADesvinculado(grupo, listaUsuariosADesasociar); // Llamo a la función que se encarga de desvincular las tareas vinculadas con el grupo al // que pertenece tareaDao.desvinculaTareasGrupoDesvinculado(grupo, listaUsuariosADesasociar); // Llamo al método que se encarga de eliminarlos de forma transaccional usuarioGrupoDao.desvinculaUsuarioGrupo(grupo, listaUsuariosADesasociar); } } // Si se ha producido alguna excepción, informo de ello elebando la misma if (!errores.isEmpty()) { throw errores; } }