// Invoked by execute() method of this object
    @Override
    protected List<HashMap<String, String>> doInBackground(String... jsonData) {

      List<HashMap<String, String>> places = null;
      PlaceJSONParser placeJsonParser = new PlaceJSONParser();

      try {
        jObject = new JSONObject(jsonData[0]);

        /** Getting the parsed data as a List construct */
        places = placeJsonParser.parse(jObject);

      } catch (Exception e) {
        Log.d("Exception", e.toString());
      }
      return places;
    }
Ejemplo n.º 2
0
  @Override
  public Cursor query(
      Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
    Cursor c = null;

    PlaceJSONParser parser = new PlaceJSONParser();
    PlaceDetailsJSONParser detailsParser = new PlaceDetailsJSONParser();

    String jsonString = "";
    String jsonPlaceDetails = "";

    List<HashMap<String, String>> list = null;
    List<HashMap<String, String>> detailsList = null;

    MatrixCursor mCursor = null;

    switch (mUriMatcher.match(uri)) {
      case SEARCH:
        // Defining a cursor object with columns description, lat and lng
        mCursor = new MatrixCursor(new String[] {"description", "lat", "lng"});

        // Create a parser object to parse places in JSON format
        parser = new PlaceJSONParser();

        // Create a parser object to parse place details in JSON format
        detailsParser = new PlaceDetailsJSONParser();

        // Get Places from Google Places API
        jsonString = getPlaces(selectionArgs);
        try {
          // Parse the places ( JSON => List )
          list = parser.parse(new JSONObject(jsonString));

          // Finding latitude and longitude for each places using Google Places Details API
          for (int i = 0; i < list.size(); i++) {
            HashMap<String, String> hMap = (HashMap<String, String>) list.get(i);

            detailsParser = new PlaceDetailsJSONParser();

            // Get Place details
            jsonPlaceDetails = getPlaceDetails(hMap.get("reference"));

            // Parse the details ( JSON => List )
            detailsList = detailsParser.parse(new JSONObject(jsonPlaceDetails));

            // Creating cursor object with places
            for (int j = 0; j < detailsList.size(); j++) {
              HashMap<String, String> hMapDetails = detailsList.get(j);

              // Adding place details to cursor
              mCursor.addRow(
                  new String[] {
                    hMap.get("description"), hMapDetails.get("lat"), hMapDetails.get("lng")
                  });
            }
          }
        } catch (JSONException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        c = mCursor;
        break;

      case SUGGESTIONS:

        // Defining a cursor object with columns id, SUGGEST_COLUMN_TEXT_1,
        // SUGGEST_COLUMN_INTENT_EXTRA_DATA
        mCursor =
            new MatrixCursor(
                new String[] {
                  "_id",
                  SearchManager.SUGGEST_COLUMN_TEXT_1,
                  SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA
                });

        // Creating a parser object to parse places in JSON format
        parser = new PlaceJSONParser();

        // Get Places from Google Places API
        jsonString = getPlaces(selectionArgs);

        try {
          // Parse the places ( JSON => List )
          list = parser.parse(new JSONObject(jsonString));

          // Creating cursor object with places
          for (int i = 0; i < list.size(); i++) {
            HashMap<String, String> hMap = (HashMap<String, String>) list.get(i);

            // Adding place details to cursor
            mCursor.addRow(
                new String[] {Integer.toString(i), hMap.get("description"), hMap.get("reference")});
          }
        } catch (JSONException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        c = mCursor;
        break;

      case DETAILS:
        // Defining a cursor object with columns description, lat and lng
        mCursor = new MatrixCursor(new String[] {"description", "lat", "lng"});

        detailsParser = new PlaceDetailsJSONParser();
        jsonPlaceDetails = getPlaceDetails(selectionArgs[0]);
        try {
          detailsList = detailsParser.parse(new JSONObject(jsonPlaceDetails));
        } catch (JSONException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }

        for (int j = 0; j < detailsList.size(); j++) {
          HashMap<String, String> hMapDetails = detailsList.get(j);
          mCursor.addRow(
              new String[] {
                hMapDetails.get("formatted_address"), hMapDetails.get("lat"), hMapDetails.get("lng")
              });
        }
        c = mCursor;
        break;
    }
    return c;
  }
  @Override
  public Cursor query(
      Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
    Cursor c = null;

    PlaceJSONParser parser;
    PlaceDetailsJSONParser detailsParser;

    String jsonString = "";
    String jsonPlaceDetails = "";

    List<HashMap<String, String>> list = null;
    List<HashMap<String, String>> detailsList = null;

    MatrixCursor mCursor = null;

    switch (mUriMatcher.match(uri)) {
      case SEARCH:
        mCursor = new MatrixCursor(new String[] {"description", "lat", "lng"});
        parser = new PlaceJSONParser();
        detailsParser = new PlaceDetailsJSONParser();
        jsonString = getPlaces(selectionArgs);

        try {
          list = parser.parse(new JSONObject(jsonString));
          for (int i = 0; i < list.size(); i++) {
            HashMap<String, String> hMap = (HashMap<String, String>) list.get(i);
            jsonPlaceDetails = getPlaceDetails(hMap.get("reference"));
            detailsList = detailsParser.parse(new JSONObject(jsonPlaceDetails));
            for (int j = 0; j < detailsList.size(); j++) {
              HashMap<String, String> hMapDetails = detailsList.get(j);
              mCursor.addRow(
                  new String[] {
                    hMap.get("description"), hMapDetails.get("lat"), hMapDetails.get("lng")
                  });
            }
          }
        } catch (JSONException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        c = mCursor;
        break;

      case SUGGESTIONS:
        mCursor =
            new MatrixCursor(
                new String[] {
                  "_id",
                  SearchManager.SUGGEST_COLUMN_TEXT_1,
                  SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA
                });
        parser = new PlaceJSONParser();
        jsonString = getPlaces(selectionArgs);

        try {
          list = parser.parse(new JSONObject(jsonString));
          for (int i = 0; i < list.size(); i++) {
            HashMap<String, String> hMap = (HashMap<String, String>) list.get(i);
            mCursor.addRow(
                new String[] {Integer.toString(i), hMap.get("description"), hMap.get("reference")});
          }
        } catch (JSONException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        c = mCursor;
        break;

      case DETAILS:
        mCursor = new MatrixCursor(new String[] {"description", "lat", "lng"});

        detailsParser = new PlaceDetailsJSONParser();
        jsonPlaceDetails = getPlaceDetails(selectionArgs[0]);
        try {
          detailsList = detailsParser.parse(new JSONObject(jsonPlaceDetails));
        } catch (JSONException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }

        for (int j = 0; j < detailsList.size(); j++) {
          HashMap<String, String> hMapDetails = detailsList.get(j);
          mCursor.addRow(
              new String[] {
                hMapDetails.get("formatted_address"), hMapDetails.get("lat"), hMapDetails.get("lng")
              });
        }
        c = mCursor;
        break;
    }
    return c;
  }