package org.araqne.logdb;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
public abstract class AbstractQueryCommandParser implements QueryCommandParser {
private QueryParserService queryParserService;
protected QueryCommandHelp help;
protected final boolean REQUIRED = true;
protected final boolean OPTIONAL = false;
public AbstractQueryCommandParser() {
help = new QueryCommandHelp();
help.setCommandName(getCommandName());
}
public QueryParserService getQueryParserService() {
return queryParserService;
}
public void setQueryParserService(QueryParserService queryParserService) {
this.queryParserService = queryParserService;
}
public FunctionRegistry getFunctionRegistry() {
if (queryParserService == null)
return null;
return queryParserService.getFunctionRegistry();
}
public Map<String, QueryErrorMessage> getErrorMessages() {
return new HashMap<String, QueryErrorMessage>();
}
@Override
public QueryCommandHelp getCommandHelp() {
return help;
}
protected void setDescriptions(String en, String ko) {
help.getDescriptions().put(Locale.KOREAN, ko);
help.getDescriptions().put(Locale.ENGLISH, en);
}
protected void setDescription(Locale locale, String desc) {
help.getDescriptions().put(locale, desc);
}
protected void setOptions(String key, boolean required, String en, String ko) {
QueryCommandOption opt = help.getOptions().get(key);
if (opt == null) {
opt = new QueryCommandOption(key, !required);
}
opt.setDescription(Locale.KOREAN, ko);
opt.setDescription(Locale.ENGLISH, en);
help.getOptions().put(key, opt);
}
protected void setOption(String key, boolean required, Locale locale, String optionDesc) {
QueryCommandOption opt = help.getOptions().get(key);
if (opt == null)
opt = new QueryCommandOption(key, !required);
opt.setDescription(locale, optionDesc);
help.getOptions().put(key, opt);
}
protected void setUsages(String en, String ko) {
help.getUsages().put(Locale.KOREAN, ko);
help.getUsages().put(Locale.ENGLISH, en);
}
protected void setUsage(Locale locale, String usage) {
help.getUsages().put(locale, usage);
}
public static Map<String, String> params(String... params) {
Map<String, String> map = new HashMap<String, String>();
String key = null;
for (String param : params) {
if (key == null)
key = param;
else {
map.put(key, param);
key = null;
}
}
return map;
}
}