Initial commit
[mustard2:mustard2.git] / src / org / mustard2 / provider / GeoNames.java
1 /*
2  * MUSTARD: Android's Client for StatusNet
3  * 
4  * Copyright (C) 2009-2010 macno.org, Michele Azzolari
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14  * for more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program; if not, write to the Free Software Foundation, Inc.,
18  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19  * 
20  */
21
22 package org.mustard2.provider;
23
24 import org.json.JSONObject;
25 import org.mustard2.android.MustardApp;
26 import org.mustard2.android.MustardException;
27 import org.mustard2.geonames.GeoName;
28 import org.mustard2.geonames.GeoNamesJSONUtil;
29 import org.mustard2.util.HttpManager;
30
31 import android.util.Log;
32
33 public class GeoNames {
34
35         private static final String TAG="GeoNames";
36         
37         private static final String API_GEONAME_URL = "http://ws.geonames.org";
38         private static final String API_GEONAME_FIND_NEARBY = "/findNearbyJSON";
39         
40         public static GeoName getGeoName(String lon,String lat) throws MustardException {
41                 GeoName gn = null;
42                 
43                 String lURL = API_GEONAME_URL + API_GEONAME_FIND_NEARBY ;
44                 HttpManager hm = new HttpManager();
45
46                 lURL+="?lng="+lon+"&lat="+lat+"&fclass=P&fcode=PPLA&fcode=PPL&fcode=PPLC&style=full";
47                 JSONObject o = null;
48 //              Log.v(TAG,lURL);
49                 try {
50                         o = hm.getJsonObject(lURL);
51 //                      Log.v(TAG, o.toString(1));
52                         gn = GeoNamesJSONUtil.getGeoName(o);
53                         if(gn != null) {
54                                 gn.setLat(lat);
55                                 gn.setLng(lon);
56                                 if (MustardApp.DEBUG)Log.d(TAG,o.toString());
57                         } else {
58                                 throw new MustardException("GeoName returned null");
59                         }
60                 } catch (Exception e){
61 //                      e.printStackTrace();
62                         if (MustardApp.DEBUG)Log.e(TAG,e.toString());
63                         throw new MustardException(e.getMessage() == null ? e.toString() : e.getMessage());
64                 }
65                 
66                 return gn;
67         }
68         
69 }