All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.infinitenature.commons.pagination.impl.PageImpl Maven / Gradle / Ivy

There is a newer version: 0.0.7
Show newest version
package org.infinitenature.commons.pagination.impl;

import java.util.List;
import java.util.Optional;

import org.infinitenature.commons.pagination.Page;
import org.infinitenature.commons.pagination.PageRequest;

import net.vergien.beanautoutils.annotation.Bean;

/**
 * Represents a page of entities
 * 
 * @author dve
 * 
 * @param 
 *           type of the entities of the page
 */
@Bean
public class PageImpl extends SliceImpl implements Page
{
   private final long total;
   private final PageRequest request;

   public PageImpl(List content, PageRequest request, long total)
   {
      super(content, request);
      this.total = total;
      this.request = request;
   }

   @Override
   public int getTotalPages()
   {
      return getSize() == 0 ? 1
            : (int) Math.ceil((double) total / (double) getSize());
   }

   @Override
   public long getTotalElements()
   {
      return total;
   }

   @Override
   public int getNumber()
   {
      return request.getPage();
   }

   @Override
   public boolean isFirst()
   {
      return !hasPrevious();
   }

   @Override
   public boolean isLast()
   {
      return !hasNext();
   }

   @Override
   public boolean hasNext()
   {
      return getNumber() < getTotalPages();
   }

   @Override
   public boolean hasPrevious()
   {
      return getNumber() > 1;
   }

   @Override
   public Optional nextPageRequest()
   {
      if (hasNext())
      {
         return Optional.of(request.next());
      } else
      {
         return Optional.empty();
      }
   }

   @Override
   public Optional previousPageRequest()
   {
      if (hasPrevious())
      {
         return Optional.of(request.previous());
      } else
      {
         return Optional.empty();
      }
   }

   protected long getTotal()
   {
      return total;
   }

   @Override
   public String toString()
   {
      return PageImplBeanUtil.doToString(this);
   }

   @Override
   public int hashCode()
   {
      return PageImplBeanUtil.doToHashCode(this);
   }

   @Override
   public boolean equals(Object obj)
   {
      return PageImplBeanUtil.doEquals(this, obj);
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy