package org.araqne.logdb.geoip;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Invalidate;
import org.apache.felix.ipojo.annotations.Requires;
import org.apache.felix.ipojo.annotations.Validate;
import org.araqne.geoip.GeoMacService;
import org.araqne.geoip.NicVendor;
import org.araqne.logdb.LookupHandler;
import org.araqne.logdb.LookupHandlerRegistry;
@Component(name = "logdb-geomac")
public class GeoMacLookupHandler implements LookupHandler {
@Requires
private GeoMacService macLookup;
@Requires
private LookupHandlerRegistry lookup;
@Validate
public void start() {
lookup.addLookupHandler("geomac", this);
}
@Invalidate
public void stop() {
if (lookup != null)
lookup.removeLookupHandler("geomac");
}
@Override
public Object lookup(String srcField, String dstField, Object value) {
if (value == null)
return null;
String mac = value.toString().toLowerCase();
NicVendor vendor = macLookup.findByMac(mac);
if (vendor == null)
return null;
if (dstField.equals("country"))
return vendor.getCountry();
else if (dstField.equals("name"))
return vendor.getName();
return null;
}
}