Пример #1
0
  @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;
    }
  }