View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
19   *
20   */
21  
22  package org.opencastproject.elasticsearch.index.rebuild;
23  
24  import org.opencastproject.elasticsearch.index.rebuild.IndexRebuildService.DataType;
25  
26  import java.util.Arrays;
27  
28  /**
29   * This service handles data that's added to an ElasticSearch index.
30   */
31  public interface IndexProducer {
32  
33    /**
34     * Re-add the data of this service to the index.
35     *
36     * @param dataType
37     *          Limit the data added to the index. Use ALL to re-index all data.
38     */
39    void repopulate(DataType dataType) throws IndexRebuildException;
40  
41    /**
42     * Get the service that implements IndexProducer.
43     *
44     * @return service
45     *           The service that implements IndexProducer.
46     */
47    IndexRebuildService.Service getService();
48  
49    /**
50     * Get supported data types for reindexing. Default: All.
51     *
52     * Should be overridden if a service offers partial index rebuilds.
53     *
54     * @return Array of supported data types
55     */
56    default DataType[] getSupportedDataTypes() {
57      return new DataType[]{ DataType.ALL };
58    }
59  
60    /**
61     * Check if the data type is supported by this service.
62     *
63     * @param dataType The data type to check.
64     *
65     * @return Whether the data type is supported or not.
66     */
67    default boolean dataTypeSupported(DataType dataType) {
68      return Arrays.stream(getSupportedDataTypes()).anyMatch(s -> s == dataType);
69    }
70  }