181 lines
4.4 KiB
Java
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);
|
|
}
|
|
}
|