package org.araqne.logdb.logapi;
import java.util.List;
import java.util.Map;
import org.araqne.log.api.LogParser;
import org.araqne.log.api.V1LogParser;
import org.araqne.logdb.Row;
import org.araqne.logdb.query.expr.Expression;
public class SelectorParser extends V1LogParser {
private List<Expression> exprs;
private Map<String, LogParser> parsers;
public SelectorParser(List<Expression> exprs, Map<String, LogParser> parsers) {
this.parsers = parsers;
this.exprs = exprs;
}
@Override
public Map<String, Object> parse(Map<String, Object> params) {
Row row = new Row(params);
String parserName = null;
for (Expression expr : exprs) {
Object o = expr.eval(row);
if (o != null) {
parserName = o.toString();
break;
}
}
if (parserName == null)
return params;
// v2 parser is not supported (will be deprecated)
LogParser parser = parsers.get(parserName);
return parser.parse(params);
}
}