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 }