1 package org.exoplatform.commons.search.index;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import org.exoplatform.services.log.ExoLogger;
7 import org.exoplatform.services.log.Log;
8
9
10
11
12
13
14
15 public abstract class IndexingOperationProcessor {
16
17 private static final Log LOG = ExoLogger.getExoLogger(IndexingOperationProcessor.class);
18
19 private static final ThreadLocal<String> CURRENT_TENANT_NAME = new ThreadLocal<>();
20
21 private Map<String, IndexingServiceConnector> connectors = new HashMap<String, IndexingServiceConnector>();
22
23 public static String getCurrentTenantName() {
24 return CURRENT_TENANT_NAME.get();
25 }
26
27 public static void setCurrentTenantName(String tenantName) {
28 CURRENT_TENANT_NAME.set(tenantName);
29 }
30
31
32
33
34
35
36 public void addConnector (IndexingServiceConnector indexingServiceConnector) {
37 addConnector(indexingServiceConnector, false);
38 }
39
40
41
42
43
44
45
46 public void addConnector (IndexingServiceConnector indexingServiceConnector, Boolean override) {
47 if (connectors.containsKey(indexingServiceConnector.getType()) && override.equals(false)) {
48 LOG.error("Impossible to add connector {}. A connector with the same name has already been registered.",
49 indexingServiceConnector.getType());
50 } else {
51 connectors.put(indexingServiceConnector.getType(), indexingServiceConnector);
52 LOG.info("An Indexing Connector has been added: {}", indexingServiceConnector.getType());
53 }
54 }
55
56
57
58
59
60
61 public Map<String, IndexingServiceConnector> getConnectors() {
62 return connectors;
63 }
64
65
66
67
68
69 public abstract void process();
70
71
72
73
74 public abstract void interrupt();
75 }