package gov.nysenate.openleg.service.agenda.search;
import gov.nysenate.openleg.dao.base.LimitOffset;
import gov.nysenate.openleg.model.agenda.CommitteeAgendaId;
import gov.nysenate.openleg.model.search.SearchException;
import gov.nysenate.openleg.model.search.SearchResults;
import gov.nysenate.openleg.service.agenda.event.AgendaUpdateEvent;
import gov.nysenate.openleg.service.agenda.event.BulkAgendaUpdateEvent;
public interface AgendaSearchService
{
/**
* Performs a search across all committee agendas.
* @see #searchCommitteeAgendas(String, int, String, gov.nysenate.openleg.dao.base.LimitOffset)
*/
public SearchResults<CommitteeAgendaId> searchCommitteeAgendas(String query, String sort, LimitOffset limOff) throws SearchException;
/**
* Retrieve all committee agendas for a given year, with sorting.
* @see #searchCommitteeAgendas(String, int, String, gov.nysenate.openleg.dao.base.LimitOffset)
*/
public SearchResults<CommitteeAgendaId> searchCommitteeAgendas(int year, String sort, LimitOffset limOff) throws SearchException;
/**
* Search for committee agendas during a given year.
*
* @param query String - Lucene Query string
* @param year int - Filter retrieved committee agendas by year
* @param sort String - Lucene sort string
* @param limOff LimitOffset - Limit the result set.
* @return SearchResults<CommitteeAgendaId>
* @throws SearchException
*/
public SearchResults<CommitteeAgendaId> searchCommitteeAgendas(String query, int year, String sort, LimitOffset limOff)
throws SearchException;
/**
* Handle an agenda update event by indexing the supplied agenda in the update.
*
* @param agendaUpdateEvent AgendaUpdateEvent
*/
public void handleAgendaUpdateEvent(AgendaUpdateEvent agendaUpdateEvent);
/**
* Handle a batch agenda update event by indexing the supplied agendas in the update.
*
* @param bulkAgendaUpdateEvent BulkAgendaUpdateEvent
*/
public void handleBulkAgendaUpdateEvent(BulkAgendaUpdateEvent bulkAgendaUpdateEvent);
}