package org.araqne.logdb.cep.logger;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Provides;
import org.apache.felix.ipojo.annotations.Requires;
import org.araqne.log.api.AbstractLoggerFactory;
import org.araqne.log.api.Logger;
import org.araqne.log.api.LoggerConfigOption;
import org.araqne.log.api.LoggerSpecification;
import org.araqne.log.api.MutableStringConfigType;
import org.araqne.logdb.cep.EventContextService;
@Component(name = "cep-event-logger-registry")
@Provides
public class CepEventLoggerFactory extends AbstractLoggerFactory {
@Requires
private EventContextService eventContextService;
@Override
public String getName() {
return "cepevent";
}
@Override
public List<Locale> getLocales() {
return Arrays.asList(Locale.ENGLISH, Locale.KOREAN, Locale.CHINESE, Locale.JAPANESE);
}
@Override
public String getDisplayName(Locale locale) {
if (locale != null && locale.equals(Locale.KOREAN))
return "CEP 이벤트";
if (locale != null && locale.equals(Locale.CHINESE))
return "CEP事件采集器";
if (locale != null && locale.equals(Locale.JAPANESE))
return "CEPイベント";
return "CEP Event";
}
@Override
public String getDescription(Locale locale) {
if (locale != null && locale.equals(Locale.KOREAN))
return "CEP 컨텍스트 이벤트를 수집합니다.";
if (locale != null && locale.equals(Locale.CHINESE))
return "采集CEP事件。";
if (locale != null && locale.equals(Locale.JAPANESE))
return "CEPコンテキストイベントを収取します。";
return "Collect CEP context events";
}
@Override
public Collection<LoggerConfigOption> getConfigOptions() {
LoggerConfigOption topics = new MutableStringConfigType("topics", t("Event Topics", "이벤트 주제 목록", "事件topic列表",
"イベントトピックリスト"),
t("Comma separated event topics", "쉼표로 구분된 이벤트 주제 목록", "输入事件topic列表(逗号分隔)。", "コンマ区切りのイベントトピックリスト"), true);
return Arrays.asList(topics);
}
private Map<Locale, String> t(String en, String ko, String cn, String jp) {
Map<Locale, String> m = new HashMap<Locale, String>();
m.put(Locale.ENGLISH, en);
m.put(Locale.KOREAN, ko);
m.put(Locale.CHINESE, cn);
m.put(Locale.JAPANESE, jp);
return m;
}
@Override
protected Logger createLogger(LoggerSpecification spec) {
return new CepEventLogger(spec, this, eventContextService);
}
}