package org.araqne.logdb.query.expr; import java.net.Inet4Address; import java.net.InetAddress; import java.util.List; import org.araqne.api.InetAddresses; import org.araqne.logdb.QueryContext; import org.araqne.logdb.Row; public class Ip2Int extends FunctionExpression { private Expression valueExpr; public Ip2Int(QueryContext ctx, List<Expression> exprs) { super("ip2int", exprs, 1); this.valueExpr = exprs.get(0); } @Override public Object eval(Row map) { Object v = valueExpr.eval(map); if (v == null) return null; InetAddress addr = null; if (v instanceof Inet4Address) addr = (InetAddress) v; else try { addr = InetAddresses.forString(v.toString()); if (addr == null) return null; } catch (IllegalArgumentException t) { return null; } return ToInt.convert(addr.getAddress()); } }