package org.multibit.mbm.db.dao; import com.google.common.base.Optional; import org.multibit.mbm.core.model.Delivery; import org.multibit.mbm.core.model.Supplier; import java.util.List; public interface DeliveryDao { /** * Attempt to locate the Delivery * * @param id The ID * * @return A matching Delivery */ Optional<Delivery> getById(Long id); /** * Get the Delivery for the Supplier, initialising the {@link org.multibit.mbm.core.model.DeliveryItem}s * * @param supplier The owning Supplier * * @return A persistent delivery (never null) */ Optional<Delivery> getInitialisedDeliveryBySupplier(Supplier supplier); /** * Provide a paged list of all Deliverys * * @param pageSize the total record in one page * @param pageNumber the page number starts from 0 */ List<Delivery> getAllByPage(final int pageSize, final int pageNumber); /** * Persist the given Delivery * * @param delivery A Delivery (either new or updated) * * @return The persisted Delivery */ Delivery saveOrUpdate(Delivery delivery); /** * <p>Force an immediate in-transaction flush</p> * <p>Normally, this is only used in test code but must be on the interface to ensure * that injection works as expected</p> */ void flush(); }