package org.atomhopper.dbal;
import org.atomhopper.adapter.jpa.PersistedCategory;
import org.atomhopper.adapter.jpa.PersistedEntry;
import org.atomhopper.adapter.jpa.PersistedFeed;
import org.atomhopper.hibernate.query.CategoryCriteriaGenerator;
import java.util.Collection;
import java.util.List;
import java.util.Set;
public interface FeedRepository {
Set<PersistedCategory> getCategoriesForFeed(final String feedName);
Collection<PersistedFeed> getAllFeeds();
PersistedFeed getFeed(String resourceName);
void saveFeed(PersistedFeed feed);
List<PersistedEntry> getFeedHead(String feedName, CategoryCriteriaGenerator categoryCriteria, int pageSize);
List<PersistedEntry> getFeedPage(String feedName, PersistedEntry markerEntry, PageDirection direction,
CategoryCriteriaGenerator categoryCriteria, int pageSize);
PersistedEntry getEntry(String entryId, String feedName);
List<PersistedEntry> getLastPage(String feedName, int pageSize, CategoryCriteriaGenerator criteriaGenerator);
void saveEntry(PersistedEntry entry);
Set<PersistedCategory> updateCategories(Set<PersistedCategory> categories);
PersistedEntry getNextMarker(PersistedEntry persistedEntry, String feedName, CategoryCriteriaGenerator criteriaGenerator);
}