package org.skywalking.apm.collector.worker.storage;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.skywalking.apm.collector.worker.config.EsConfig;
import java.util.HashSet;
import java.util.ServiceLoader;
import java.util.Set;
/**
* @author pengys5
*/
public enum IndexCreator {
INSTANCE;
private Logger logger = LogManager.getFormatterLogger(IndexCreator.class);
public void create() {
if (!EsConfig.IndexInitMode.MANUAL.equals(EsConfig.Es.Index.Initialize.MODE)) {
Set<AbstractIndex> indexSet = loadIndex();
for (AbstractIndex index : indexSet) {
boolean isExists = index.isExists();
if (isExists) {
if (EsConfig.IndexInitMode.FORCED.equals(EsConfig.Es.Index.Initialize.MODE)) {
index.deleteIndex();
index.createIndex();
}
} else {
index.createIndex();
}
}
}
}
private Set<AbstractIndex> loadIndex() {
Set<AbstractIndex> indexSet = new HashSet<>();
ServiceLoader<AbstractIndex> indexServiceLoader = ServiceLoader.load(AbstractIndex.class);
for (AbstractIndex index : indexServiceLoader) {
logger.info("index NAME: %s", index.index());
indexSet.add(index);
}
return indexSet;
}
}