
package de.ivu.elect.jee.presentation.search;

import javax.inject.Inject;

public abstract class AbstractPaginationSearchView<T, SP extends AbstractSearchParameters> extends AbstractSearchView<T, SP> implements Pagination {

  public static final long serialVersionUID = 1L;

  @Inject
  private transient PaginationDefaultView paginationDefaultView;

  protected AbstractPaginationSearchView() {
    super();
  }

  @Override
  public int getSearchResultSize() {
    return getSearchResult().size();
  }

  @Override
  public int getDefaultPageSize() {
    return getPageSizeConfigured();
  }

  protected int getPageSizeConfigured() {
    return paginationDefaultView.getPageSizeConfigured(getSearchResultSize());
  }

  protected int getPageSizeMax() {
    return paginationDefaultView.getPageSizeDefaultsMax();
  }

  protected int getPageSizeShowAll() {
    return paginationDefaultView.getPageSizeDefaultsShowAll();
  }

  @Override
  public double getPageSizeLazyFactor() {
    return paginationDefaultView.getPageSizeLazyFactor();
  }

  @Override
  public String getAnzahlTrefferLabel() {
    return paginationDefaultView.getAnzahlTrefferLabel(getSearchResultSize());
  }

  @Override
  public int getRows() {
    return paginationDefaultView.getRows(getSearchResultSize(), getDefaultPageSize());
  }

  @Override
  public String getRowsPerPageTemplate() {
    return paginationDefaultView.getRowsPerPageTemplate(getSearchResultSize(), getDefaultPageSize());
  }

  @Override
  public boolean isLazy() {
    return isPaginator();
  }

  @Override
  public boolean isShowPaginator() {
    return paginationDefaultView.isShowPaginator(getSearchResultSize());
  }

  @Override
  public boolean isPaginator() {
    return isPaginator(getSearchResultSize());
  }

  @Override
  public boolean isPaginator(int searchResultSize) {
    return paginationDefaultView.isPaginator(searchResultSize, getDefaultPageSize());
  }

  @Override
  public String getPaginatorTemplate() {
    return paginationDefaultView.getPaginatorTemplate(getSearchResultSize(), getDefaultPageSize());
  }

  @Override
  public String getPaginatorPosition() {
    return paginationDefaultView.getPaginatorPosition(getSearchResultSize(), getDefaultPageSize());
  }
}
