use of com.maxmind.geoip2.record.Location in project OpenAM by OpenRock.
the class Adaptive method checkGeoLocation.
protected int checkGeoLocation() {
int retVal = 0;
String countryCode;
if (debug.messageEnabled()) {
debug.message("{}.checkGeoLocation: GeoLocation database location = {}", ADAPTIVE, geoLocationDatabase);
}
DatabaseReader db = getLookupService(geoLocationDatabase);
if (db == null) {
debug.error("{}.checkGeoLocation: GeoLocation database lookup returns null", ADAPTIVE);
return geoLocationScore;
}
if (geoLocationValues == null) {
debug.error("{}.checkGeoLocation: The property '{}' is null", ADAPTIVE, GEO_LOCATION_VALUES);
return geoLocationScore;
}
try {
countryCode = getCountryCode(db, clientIP);
} catch (IOException e) {
if (debug.warningEnabled()) {
debug.warning("{}.checkGeoLocation: #getCountryCode :: An IO error happened", ADAPTIVE, e);
}
return geoLocationScore;
} catch (GeoIp2Exception e) {
if (debug.warningEnabled()) {
debug.warning("{}.checkGeoLocation: #getCountryCode :: An error happened when looking up the IP", ADAPTIVE, e);
}
return geoLocationScore;
}
if (debug.messageEnabled()) {
debug.message("{}.checkGeoLocation: {} returns {}", ADAPTIVE, clientIP, countryCode);
}
StringTokenizer st = new StringTokenizer(geoLocationValues, "|");
while (st.hasMoreTokens()) {
if (countryCode.equalsIgnoreCase(st.nextToken())) {
if (debug.messageEnabled()) {
debug.message("{}.checkGeoLocation: Found Country Code : {}", ADAPTIVE, countryCode);
}
retVal = geoLocationScore;
break;
}
}
if (!geoLocationInvert) {
retVal = geoLocationScore - retVal;
}
return retVal;
}
use of com.maxmind.geoip2.record.Location in project GNS by MobilityFirst.
the class ActiveNonBlockingQuerier method getLocations.
@Override
public ScriptObjectMirror getLocations(ScriptObjectMirror ipList) throws ActiveException {
// convert ipList to a JSONArray
JSONArray arr = null;
try {
arr = new JSONArray("[" + ipList.callMember("toString") + "]");
} catch (JSONException e) {
e.printStackTrace();
throw new ActiveException(e.getMessage());
}
//System.out.println(">>>>>>>>>>>> The query is "+arr.toString());
// resolve ip one by one
JSONObject obj = new JSONObject();
for (int i = 0; i < arr.length(); i++) {
try {
String ip = arr.getString(i);
CityResponse loc = GeoIPUtils.getLocation_City(ip, dbReader);
if (loc != null) {
JSONObject value = new JSONObject();
value.put("latitude", loc.getLocation().getLatitude());
value.put("longitude", loc.getLocation().getLongitude());
// continent of the location
value.put("continent", loc.getContinent().getCode());
obj.put(ip, value);
}
} catch (JSONException e) {
continue;
}
}
//System.out.println("The result is "+obj.toString());
return string2JS(obj.toString());
}
use of com.maxmind.geoip2.record.Location in project quickutil by quickutil.
the class GeoUtil method geoCodeyByBaidu.
/**
* 根据经纬度查询地理信息-百度批量
*
* @param points-纬度经度数组,下标偶数位为纬度,奇数位为经度,必须成对,最多20条经纬度
* @return
*/
public static List<GeoDef> geoCodeyByBaidu(List<GeoPoint> points) {
try {
if (points.size() > 20)
return null;
StringBuilder builder = new StringBuilder();
for (int i = 0; i < points.size(); i++) {
double[] delta = WGSToGCJPointer(points.get(i).latitude, points.get(i).longitude);
delta = GCJToBDPointer(delta[0], delta[1]);
builder.append(delta[0] + "," + delta[1] + "|");
}
String queryUrl = String.format("http://api.map.baidu.com/geocoder/v2/?ak=%s&location=%s&output=json&batch=true", baiduKeyIn, URLEncoder.encode(builder.substring(0, builder.length() - 1), "UTF-8"));
JsonObject object = JsonUtil.toJsonMap(FileUtil.stream2string(HttpUtil.httpGet(queryUrl).getEntity().getContent()));
JsonArray array = object.getAsJsonArray("areas");
List<GeoDef> geodefList = new ArrayList<GeoDef>();
for (int i = 0; i < points.size(); i++) {
object = array.get(i).getAsJsonObject();
String country = object.get("country").getAsString();
if (country.equals("中国"))
country = "China";
if (country.equals("England"))
country = "United Kingdom";
String countryCode = countryCodeByCountryName(country);
String countryChinese = countryChineseByCountryCode(countryCode);
String state = object.get("province").getAsString();
String stateCode = "";
if (country.equals("China"))
stateCode = stateCodeByStateChinese(countryCode, state);
else
stateCode = stateCodeByStateName(countryCode, state);
state = stateNameByStateCode(countryCode, stateCode);
String stateChinese = stateChineseByStateCode(countryCode, stateCode);
String city = object.get("city").getAsString();
String description = object.get("district").getAsString();
countryCode = (countryCode == null) ? UNKNOWN : countryCode;
country = (country == null) ? UNKNOWN : country;
countryChinese = (countryChinese == null) ? UNKNOWN : countryChinese;
stateCode = (stateCode == null) ? UNKNOWN : stateCode;
state = (state == null) ? UNKNOWN : state;
stateChinese = (stateChinese == null) ? UNKNOWN : stateChinese;
city = (city == null) ? UNKNOWN : city;
geodefList.add(new GeoDef(points.get(i).latitude, points.get(i).longitude, countryCode, country, countryChinese, stateCode, state, stateChinese, city, description));
}
return geodefList;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
use of com.maxmind.geoip2.record.Location in project quickutil by quickutil.
the class GeoUtil method geoCodeyByAmap.
/**
* 根据经纬度查询地理信息-高德中国
*
* @param latitude-纬度
* @param longitude-经度
* @return
*/
public static GeoDef geoCodeyByAmap(double latitude, double longitude) {
try {
double[] delta = WGSToGCJPointer(latitude, longitude);
String queryUrl = String.format("http://restapi.amap.com/v3/geocode/regeo?output=json&location=%s,%s&key=%s", delta[1], delta[0], amapKeyIn);
JsonObject object = JsonUtil.toJsonMap(FileUtil.stream2string(HttpUtil.httpGet(queryUrl).getEntity().getContent()));
String country = object.getAsJsonObject("regeocode").getAsJsonObject("addressComponent").get("country").getAsString();
if (country.equals("中国"))
country = "China";
if (country.equals("England"))
country = "United Kingdom";
String city = "";
if (!object.getAsJsonObject("regeocode").getAsJsonObject("addressComponent").get("city").isJsonArray())
city = object.getAsJsonObject("regeocode").getAsJsonObject("addressComponent").get("city").getAsString();
String description = object.getAsJsonObject("regeocode").get("formatted_address").getAsString();
String countryCode = countryCodeByCountryName(country);
String countryChinese = countryChineseByCountryCode(countryCode);
String state = object.get("province").getAsString();
String stateCode = "";
if (country.equals("China"))
stateCode = stateCodeByStateChinese(countryCode, state);
else
stateCode = stateCodeByStateName(countryCode, state);
state = stateNameByStateCode(countryCode, stateCode);
String stateChinese = stateChineseByStateCode(countryCode, stateCode);
countryCode = (countryCode == null) ? UNKNOWN : countryCode;
country = (country == null) ? UNKNOWN : country;
countryChinese = (countryChinese == null) ? UNKNOWN : countryChinese;
stateCode = (stateCode == null) ? UNKNOWN : stateCode;
state = (state == null) ? UNKNOWN : state;
stateChinese = (stateChinese == null) ? UNKNOWN : stateChinese;
city = (city == null) ? UNKNOWN : city;
return new GeoDef(latitude, longitude, countryCode, country, countryChinese, stateCode, state, stateChinese, city, description);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
use of com.maxmind.geoip2.record.Location in project nifi by apache.
the class IPLookupService method createRecord.
private Record createRecord(final CityResponse city) {
if (city == null) {
return null;
}
final Map<String, Object> values = new HashMap<>();
values.put(CitySchema.CITY.getFieldName(), city.getCity().getName());
final Location location = city.getLocation();
values.put(CitySchema.ACCURACY.getFieldName(), location.getAccuracyRadius());
values.put(CitySchema.METRO_CODE.getFieldName(), location.getMetroCode());
values.put(CitySchema.TIMEZONE.getFieldName(), location.getTimeZone());
values.put(CitySchema.LATITUDE.getFieldName(), location.getLatitude());
values.put(CitySchema.LONGITUDE.getFieldName(), location.getLongitude());
values.put(CitySchema.CONTINENT.getFieldName(), city.getContinent().getName());
values.put(CitySchema.POSTALCODE.getFieldName(), city.getPostal().getCode());
values.put(CitySchema.COUNTRY.getFieldName(), createRecord(city.getCountry()));
final Object[] subdivisions = new Object[city.getSubdivisions().size()];
int i = 0;
for (final Subdivision subdivision : city.getSubdivisions()) {
subdivisions[i++] = createRecord(subdivision);
}
values.put(CitySchema.SUBDIVISIONS.getFieldName(), subdivisions);
return new MapRecord(CitySchema.GEO_SCHEMA, values);
}
Aggregations