pl.slawas.paging
Class PagedResultSupport<Obj>

java.lang.Object
  extended by pl.slawas.paging.PagedResultSupport<Obj>
Type Parameters:
Obj - klasa obiektu na liscie rezultatów
All Implemented Interfaces:
java.io.Serializable, _IPagedResult<Obj>, _IPagingInfo

public abstract class PagedResultSupport<Obj>
extends java.lang.Object
implements java.io.Serializable, _IPagedResult<Obj>

PagedResultSupport - abstrakcja stronicowanego wyniku zapytania

Version:
$Revision: 1.6.2.1 $
Author:
Slawomir Cichy <slawas@slawas.pl>
See Also:
Serialized Form

Field Summary
protected  PagingParams pagingParams
           
protected  _IPagedQuery<Obj> query
           
protected  ResultSupport<Obj> result
           
 
Constructor Summary
PagedResultSupport(PagingParams pagingParams, ResultSupport<Obj> result, _IPagedQuery<Obj> query, boolean checkPagingParamRestrictions)
           
 
Method Summary
 java.util.Enumeration<Page> getAllPages()
           
 Page getCurrentPageInfo()
          Pobranie informacji o aktulanej stronie
 Page getFirstPageInfo()
          Pobranie informacji o pierwszej stronie
 java.lang.Integer getFirstRowPositionOfPreviousResultRows()
           
 Page getLastPageInfo()
          Pobranie informacji o ostatniej stronie
 java.lang.Integer getLastRowPosition()
           
 ResultMessage getMessage()
          Komunikat wyniku
 Page getNextPageInfo()
          Pobranie informacji o następnej stronie
 int getNumberOfRowsOnThePage()
          Na skróty: Pobieranie liczby wierszy na obecnej strony.
 Page getPageInfo(java.lang.Integer pageNumber)
          Pobranie informacji o stronie o podanym numerze
 int getPageNr()
          Na skróty: Pobieranie numeru obecnej strony Tę samą informacje można otrzymać poprzez pobranie obiektu @Page za pomocą metody _IPagingInfo.getCurrentPageInfo() i wykorzystanie informacji w Page.getNumber().
 int getPageSize()
          Na skróty: Pobieranie rozmiaru obecnej strony.
 PagingParams getPagingParams()
           
 ResultSupport<Obj> getPreDefinitionOfResult()
          Pobieranie obiektu rezultatu "pierwotnego", który jest podstwą do zbudowania stronicowanego rezultatu.
 Page getPreviousPageInfo()
          Pobranie informacji o poprzedniej stronie
 _IPagedQuery<Obj> getQuery()
           
 java.util.Collection<Obj> getResult()
          Kolekcja wierszy na obecnej stronie
 java.util.Collection<Obj> getResult(Page page)
          Kolekcja wierszy na zadanej stronie
 int getResultSize()
          Liczba wswzystkich wierszy jakie można otrzymać w wyniku tego zapytania.
 Obj getUniqueResult()
          Zwraca pierwszy wiersz na stronie
 boolean hasMoreResultRows()
          Metode można wykożystać do badania czy został przekroczony zakres liczby wyników.
 boolean hasPreviousResultRows()
          Implementacja biblioteki pozwala na pobranie kolejnej czesci wyników zapytania w przypadku gdy _IPagingInfo.hasMoreResultRows() zwraca true .
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

query

protected _IPagedQuery<Obj> query

result

protected ResultSupport<Obj> result

pagingParams

protected final PagingParams pagingParams
Constructor Detail

PagedResultSupport

public PagedResultSupport(PagingParams pagingParams,
                          ResultSupport<Obj> result,
                          _IPagedQuery<Obj> query,
                          boolean checkPagingParamRestrictions)
Parameters:
pagingParams - parametry stronicowania
result - obiektu rezultatu "pierwotnego", który jest podstwą do zbudowania stronicowanego rezultatu
query - zapytanie, na podstwie, którego został zbudowany rezultat "pierwotny". Obiekt ten potrzebny jest aby bez konieczności odwoływania się do manager-ów zarządzajacych zapytaniami, można było pobrać kolejną stronę, czy też odświeżyć wynik.
checkPagingParamRestrictions - czy mają być przestrzegane parametry stronicowania. Niektóre systemy dają możliwość pobrania kolejnej "paczki" danych w systuacji, kiedy wynik ogólny (liczba zwracanych dokumentów/wierszy) nie spełnia warunków związnych z ograniczeniami np. ograniczenia pozwalają na pobranie maksymalnie 5 stron i całość rezultatu nie mieści sie na nich. Gdy parametr ustawimy parametr na true, to wtedy nie bedziemy mogli pobrać kolejnej strony np. 6 wyniku, trzeba zmienic kryteria stronicowania. Jeżeli jednak ustawimy na false, parametry stronicowania zostaną zignorowane i stronicowany obiekt pozwoli na utworzenie kolejnej paczki stron np. 6,7,8,9,10. O tym czy wynik ma kolejną paczkę informuje nas metoda hasMoreResultRows(), a o tym czy jesteśmy w "paczce rozszerzonej" (w kolejnej paczce) możemy rozpoznać po tym, że pierwsza strona paczki ma numer różny od Page.MIN_PAGE_NR, albo używając metody hasPreviousResultRows().
Method Detail

getResult

public java.util.Collection<Obj> getResult()
Description copied from interface: _IPagedResult
Kolekcja wierszy na obecnej stronie

Specified by:
getResult in interface _IPagedResult<Obj>
Returns:
lista wierszy na stronie

getResult

public java.util.Collection<Obj> getResult(Page page)
Description copied from interface: _IPagedResult
Kolekcja wierszy na zadanej stronie

Specified by:
getResult in interface _IPagedResult<Obj>
Parameters:
page - obiekt strony, której wyniki nas integersują
Returns:
lista wierszy na zadanej stronie

getUniqueResult

public Obj getUniqueResult()
Description copied from interface: _IPagedResult
Zwraca pierwszy wiersz na stronie

Specified by:
getUniqueResult in interface _IPagedResult<Obj>
Returns:
wiersz na stronie

getMessage

public ResultMessage getMessage()
Description copied from interface: _IPagingInfo
Komunikat wyniku

Specified by:
getMessage in interface _IPagingInfo
Returns:
komunikat wyniku ResultMessage

getResultSize

public int getResultSize()
Description copied from interface: _IPagingInfo
Liczba wswzystkich wierszy jakie można otrzymać w wyniku tego zapytania.

Specified by:
getResultSize in interface _IPagingInfo
Returns:
liczba wierszy

getCurrentPageInfo

public Page getCurrentPageInfo()
Description copied from interface: _IPagingInfo
Pobranie informacji o aktulanej stronie

Specified by:
getCurrentPageInfo in interface _IPagingInfo
Returns:
informacje o aktualnej stronie

getFirstPageInfo

public Page getFirstPageInfo()
Description copied from interface: _IPagingInfo
Pobranie informacji o pierwszej stronie

Specified by:
getFirstPageInfo in interface _IPagingInfo
Returns:
informacje o pierwszej stronie

getPreviousPageInfo

public Page getPreviousPageInfo()
                         throws PagedResultException
Description copied from interface: _IPagingInfo
Pobranie informacji o poprzedniej stronie

Specified by:
getPreviousPageInfo in interface _IPagingInfo
Returns:
informacje o poprzedniej stronie
Throws:
PagedResultException - zwraca błąd gdy obecna strona _IPagingInfo.getCurrentPageInfo() jest stroną pierwszą. Poprzednia nie istnieje.

getNextPageInfo

public Page getNextPageInfo()
                     throws PagedResultException
Description copied from interface: _IPagingInfo
Pobranie informacji o następnej stronie

Specified by:
getNextPageInfo in interface _IPagingInfo
Returns:
informacje o następnej stronie
Throws:
PagedResultException - zwraca błąd gdy obecna strona _IPagingInfo.getCurrentPageInfo() jest stroną ostatnią. Nastepna nie istnieje.

getPageInfo

public Page getPageInfo(java.lang.Integer pageNumber)
                 throws PagedResultException
Description copied from interface: _IPagingInfo
Pobranie informacji o stronie o podanym numerze

Specified by:
getPageInfo in interface _IPagingInfo
Parameters:
pageNumber - numer intetersującej nas strony
Returns:
informacje o stronie
Throws:
PagedResultException - zwraca błąd gdy strona o danym numerze nie istnieje.

getLastPageInfo

public Page getLastPageInfo()
Description copied from interface: _IPagingInfo
Pobranie informacji o ostatniej stronie

Specified by:
getLastPageInfo in interface _IPagingInfo
Returns:
informacje o ostatniej stronie

getAllPages

public java.util.Enumeration<Page> getAllPages()
Specified by:
getAllPages in interface _IPagingInfo
Returns:
the pages

hasMoreResultRows

public boolean hasMoreResultRows()
Description copied from interface: _IPagingInfo
Metode można wykożystać do badania czy został przekroczony zakres liczby wyników. Przy stronicowanym rezultacie moze dojsc do takiej sytuacji, ze nie wszystkie wiersze spełniające warunki zapytania SQL mieszczą się w danym rezultacie (ograniczenie maksymalnej liczby stron wyników). Wtedy jest ustwiana odpowiednia flaga, z informacją że wyniki się nie zmieściły i ta metoda zwraca informacje o wystąpieniu takiego zdarzenia. Mozna później wykorzystać metodę _IPagingInfo.getLastRowPosition() do pobrania kolejenj paczki rezultatu poprzez wywołanie wykonania zapytania JDBC ze odpowiednią wartością argumentu 'startPosition'.

Przykład na podstawie implementacji:

 if (pagedResult.hasMoreResultRows()) {
        T lastQuery = pagedResult.getQuery();
        lastQuery.setExecuted(false);
        lastQuery.execute(
                        em.getConnection(),
                        pagedResult.getLastRowPosition() + 1,
                        null,
                        CacheUsage.NONE);
 }
 

Specified by:
hasMoreResultRows in interface _IPagingInfo
Returns:
true oznacza, że jest więcej wierszy w bazie danych spełniających warunek wyszukiwania zapytania SQL.

getLastRowPosition

public java.lang.Integer getLastRowPosition()
Specified by:
getLastRowPosition in interface _IPagingInfo
Returns:
ostatnia pozycja wiersza w stronicowanym wyniku zapytania.

getQuery

public _IPagedQuery<Obj> getQuery()
Specified by:
getQuery in interface _IPagedResult<Obj>
Returns:
zwraca zapytanie na podstawie, którego została utworzona strona wyników.

getFirstRowPositionOfPreviousResultRows

public java.lang.Integer getFirstRowPositionOfPreviousResultRows()
Specified by:
getFirstRowPositionOfPreviousResultRows in interface _IPagingInfo
Returns:
pierwsza pozycja wiersza poprzedniej paczki wyników. Jezeli poprzenia paczka nie istnieje (zobacz _IPagingInfo.hasPreviousResultRows()), zwraca null.
See Also:
_IPagingInfo.hasPreviousResultRows(), _IPagingInfo.hasMoreResultRows()

hasPreviousResultRows

public boolean hasPreviousResultRows()
Description copied from interface: _IPagingInfo
Implementacja biblioteki pozwala na pobranie kolejnej czesci wyników zapytania w przypadku gdy _IPagingInfo.hasMoreResultRows() zwraca true . Dla takiego stronicowanego wyniku istotna jest infomacja czy posiada ona poprzednia część rezultatu.

Specified by:
hasPreviousResultRows in interface _IPagingInfo
Returns:
true oznacza, że dany wynik jest wynikiem rozszerzonym (poza granicą maksymalnej liczby stron) i posiada poprzedzający obecny wynik obiekt wyniku stronicowanego.

getPageNr

public int getPageNr()
Description copied from interface: _IPagingInfo
Na skróty: Pobieranie numeru obecnej strony

Tę samą informacje można otrzymać poprzez pobranie obiektu @Page za pomocą metody _IPagingInfo.getCurrentPageInfo() i wykorzystanie informacji w Page.getNumber().

Specified by:
getPageNr in interface _IPagingInfo
Returns:
numer aktualnej strony

getPageSize

public int getPageSize()
Description copied from interface: _IPagingInfo
Na skróty: Pobieranie rozmiaru obecnej strony.

Tę samą informacje można otrzymać poprzez pobranie obiektu @Page za pomocą metody _IPagingInfo.getCurrentPageInfo() i wykorzystanie informacji w Page.getSize().

Specified by:
getPageSize in interface _IPagingInfo
Returns:
rozmiar aktualnej strony

getNumberOfRowsOnThePage

public int getNumberOfRowsOnThePage()
Description copied from interface: _IPagingInfo
Na skróty: Pobieranie liczby wierszy na obecnej strony.

Tę samą informacje można otrzymać poprzez pobranie obiektu @Page za pomocą metody _IPagingInfo.getCurrentPageInfo() i wykorzystanie informacji w Page.getNumberOfRowsOnThePage().

Specified by:
getNumberOfRowsOnThePage in interface _IPagingInfo
Returns:
rozmiar aktualnej strony

getPagingParams

public PagingParams getPagingParams()
Specified by:
getPagingParams in interface _IPagingInfo
Returns:
the pagingParams

getPreDefinitionOfResult

public ResultSupport<Obj> getPreDefinitionOfResult()
Pobieranie obiektu rezultatu "pierwotnego", który jest podstwą do zbudowania stronicowanego rezultatu. Obiekt ten jest ustawiany w konstruktorze PagedResultSupport(PagingParams, ResultSupport, _IPagedQuery, boolean) i nie raz może być potrzebny do dalszego przetwarzania.

Returns:
obiekt rezultatu "pierwotnego"


Copyright © 2014 Sci Software. All Rights Reserved.