/** * @(#) 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 Dpto. Informática. * @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. *
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. *
Este atributo se inicializa cuando se arranca el servidor de aplicaciones. *
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 Paginacion para su uso. * @param rs Objeto ResultSet 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 ResultSet. * @param rs Objeto ResultSet 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); } }