001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.fcrepo.search.api; 019 020import org.fcrepo.kernel.api.Transaction; 021import org.fcrepo.kernel.api.identifiers.FedoraId; 022import org.fcrepo.kernel.api.models.ResourceHeaders; 023 024/** 025 * An interface defining search index management operations 026 * 027 * @author dbernstein 028 */ 029public interface SearchIndex { 030 031 /** 032 * Adds or updates the index with the resource header information. 033 * @param transaction The externally generated transaction. 034 * @param resourceHeaders The resource headers associated with the resource 035 */ 036 void addUpdateIndex(Transaction transaction, ResourceHeaders resourceHeaders); 037 038 /** 039 * Removes indexed fields associated with the specified Fedora ID 040 * 041 * @param transaction The transaction 042 * @param fedoraId The Fedora ID 043 */ 044 void removeFromIndex(Transaction transaction, FedoraId fedoraId); 045 046 /** 047 * Performs a search based on the parameters and returns the result. 048 * 049 * @param parameters The parameters defining the search 050 * @return The result of the search 051 */ 052 SearchResult doSearch(SearchParameters parameters) throws InvalidQueryException; 053 054 /** 055 * Remove all persistent state associated with the index. 056 */ 057 void reset(); 058 059 /** 060 * Commit the changes made in the transaction. 061 * 062 * @param tx The transaction . 063 */ 064 void commitTransaction(final Transaction tx); 065 066 /** 067 * Rollback the changes in the transaction. 068 * 069 * @param tx The transaction. 070 */ 071 void rollbackTransaction(final Transaction tx); 072 073}