Files
tarisan_gitea/Fuentes/com/tarisan/control/Paginacion.java
T
2025-06-09 13:37:06 +02:00

181 lines
4.4 KiB
Java

/**
* @(#) Paginacion.java
*/
package com.tarisan.control;
import com.tarisan.excepcion.ExcepcionTarisan;
import com.tarisan.log.*;
import java.sql.*;
/**
* Clase de apoyo utilizada para realizar la paginación de los datos.
* @author <a href="mailto:sistemas@imqnavarra.com">Dpto. Informática</a>.
* @version 1.0, 29/09/2003
*/
public class Paginacion
{
/**
* Número de página que se le presenta al usuario.
*/
private int intNumPagina=0;
/**
* Número de páginas totales de las que está compuesta la consulta realizada por el usuario.
* <br>Este valor se calcula utulizando el número de filas por página.
*/
private int intNumPaginasTotales=0;
/**
* Número de registros totales de los que está compuesta la consulta realizada por el usuario.
*/
private int intNumRegistrosTotales=0;
/**
* Número de filas por página que se le van a mostrar al usuario.
* <br>Este atributo se inicializa cuando se arranca el servidor de aplicaciones.
* <br>El valor de este atributo se coge del fichero properties.
*/
private static int intFilasPorPagina;
/**
* Establece en un atributo de la clase el número de filas por página.
* @param filasPorPagina Entero que indica el número de filas por pagina.
*/
public static void setFilasPorPagina(int filasPorPagina)
{
intFilasPorPagina = filasPorPagina;
}
/**
* Obtiene el número de filas por página utilizados en la paginación.
* @return Valor numérico que indica el número de filas por página.
*/
public static int getFilasPorPagina()
{
return intFilasPorPagina;
}
/**
* Obtiene el número de página que se le presenta al usuario.
* @return Valor numérico que indica el número de página actual.
*/
public int getNumeroPagina()
{
return intNumPagina;
}
/**
* Establece en un atributo de la clase el número de la página actual que se le presenta al usuario.
* @param numeroPagina Entero que indica el número de pagina.
*/
public void setNumeroPagina(int numeroPagina)
{
intNumPagina=numeroPagina;
}
/**
* Obtiene el número de páginas totales.
* @return Valor numérico que indica el número de páginas totales.
*/
public int getNumeroPaginasTotales()
{
return intNumPaginasTotales;
}
/**
* Obtiene el número de registros totales.
* @return Valor numérico que indica el número de registros totales.
*/
public int getNumeroRegistrosTotales()
{
return intNumRegistrosTotales;
}
/**
* Inicializa el objeto <code>Paginacion</code> para su uso.
* @param rs Objeto <code>ResultSet</code> que contiene los datos de la consulta realizada por el usuario.
*/
public void inicializarPaginacion(ResultSet rs) throws ExcepcionTarisan
{
try
{
rs.last();
intNumRegistrosTotales = rs.getRow();
rs.beforeFirst();
intNumPaginasTotales = intNumRegistrosTotales / intFilasPorPagina;
if (intNumRegistrosTotales % intFilasPorPagina != 0)
intNumPaginasTotales++;
}
catch(Exception e)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error al inicializar la paginacion: " + e);
throw new ExcepcionTarisan(e.getMessage());
}
}
/**
* Realiza la paginación de los datos obtenidos. Consiste en posicionarse en el
* registro correspondiente a la página que el usuario desea consultar sobre el objeto <code>ResultSet</code>.
* @param rs Objeto <code>ResultSet</code> que contiene los datos de la consulta realizada por el usuario.
* @param pagina Entero que nos indica la página que el usuario desea visualizar.
*/
public void realizarPaginacion(ResultSet rs, int pagina) throws ExcepcionTarisan
{
int posicion;
try
{
if (pagina!=0 && intNumRegistrosTotales!=0)
{
posicion = ((pagina - 1) * intFilasPorPagina);
if (posicion == 0)
rs.beforeFirst();
else
rs.absolute(posicion);
intNumPagina = pagina;
}
else
intNumPagina = 0;
}
catch(Exception e)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error al realizar la paginacion: " + e);
throw new ExcepcionTarisan(e.getMessage());
}
}
/**
* Indica si la página cargada se trata de la última página.
* @return Valor booleano que indica si es la última página.
*/
public boolean esUltimaPagina()
{
return (intNumPagina == intNumPaginasTotales);
}
/**
* Indica si la página cargada se trata de la primera página.
* @return Valor booleano que indica si es la primera página.
*/
public boolean esPrimeraPagina()
{
return (intNumPagina == 1);
}
}