package gov.nysenate.openleg.service.hearing.search; import gov.nysenate.openleg.dao.base.LimitOffset; import gov.nysenate.openleg.model.hearing.PublicHearing; import gov.nysenate.openleg.model.hearing.PublicHearingId; import gov.nysenate.openleg.model.search.SearchException; import gov.nysenate.openleg.model.search.SearchResults; import gov.nysenate.openleg.service.hearing.event.PublicHearingUpdateEvent; import gov.nysenate.openleg.service.hearing.event.BulkPublicHearingUpdateEvent; public interface PublicHearingSearchService { /** * Performs a search of all public hearing id's */ public SearchResults<PublicHearingId> searchPublicHearings(String sort, LimitOffset limOff) throws SearchException; /** * Performs a search of public hearing id's by year. */ public SearchResults<PublicHearingId> searchPublicHearings(int year, String sort, LimitOffset limOff) throws SearchException; /** * Performs a search across all public hearings. */ public SearchResults<PublicHearingId> searchPublicHearings(String query, String sort, LimitOffset limOff) throws SearchException; /** * Performs a search across all public hearings in a given year. * @param query Search query. * @param year Filter by year. * @param sort Sort by field(s). * @param limOff Restrict the result set. * @return * @throws SearchException */ public SearchResults<PublicHearingId> searchPublicHearings(String query, int year, String sort, LimitOffset limOff) throws SearchException; /** * Hanldes a public hearing update event by indexing the supplied public hearing. * @param publicHearingUpdateEvent */ public void handlePublicHearingUpdate(PublicHearingUpdateEvent publicHearingUpdateEvent); /** * Handles a batch public hearing update by indexing the supplied public hearings. * @param bulkPublicHearingUpdateEvent */ public void handleBulkPublicHearingUpdate(BulkPublicHearingUpdateEvent bulkPublicHearingUpdateEvent); }