InvoiceExportIterator.java

package org.oxerr.stubhub.client.cxf.impl.invoice;

import org.oxerr.stubhub.client.cxf.impl.util.PageIterator;
import org.oxerr.stubhub.client.cxf.resource.InvoiceResource;
import org.oxerr.stubhub.client.invoice.InvoiceExportCriteria;
import org.oxerr.stubhub.client.model.SaleResponse;

public class InvoiceExportIterator extends PageIterator<SaleResponse> {

	private final InvoiceExportCriteria criteria;

	private final InvoiceResource invoiceResource;

	protected InvoiceExportIterator(InvoiceExportCriteria criteria, InvoiceResource invoiceResource) {
		super(criteria.getMaxPageSize() != null ? criteria.getMaxPageSize().intValue() : 100);
		this.criteria = criteria;
		this.invoiceResource = invoiceResource;
	}

	@Override
	protected Page<SaleResponse> fetchPage(Long paginationToken) {
		var r = invoiceResource.export(
			criteria.getUpdateDateSince(),
			criteria.getUpdateDateTo(),
			paginationToken,
			criteria.getCreatedDateFrom(),
			criteria.getCreatedDateTo(),
			criteria.getCreatedDatePaginationToken(),
			criteria.getMaxPageSize(),
			criteria.getIncludeWastedSales()
		);
		return new PageImpl(r.getPaginationToken(), r.getNumberOfItems(), r.getInvoices());
	}

}