Exemplo n.º 1
0
  @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;
    }
  }
Exemplo n.º 2
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;
    }
  }