diff --git a/app/src/main/java/com/apptrust/wingtaxi/fragments/AddAddressFragment.java b/app/src/main/java/com/apptrust/wingtaxi/fragments/AddAddressFragment.java index bdd5de8..474628b 100644 --- a/app/src/main/java/com/apptrust/wingtaxi/fragments/AddAddressFragment.java +++ b/app/src/main/java/com/apptrust/wingtaxi/fragments/AddAddressFragment.java @@ -275,9 +275,33 @@ protected String doInBackground(String... params) { resultList = new ArrayList(predsJsonArray.length()); for (int i = 0; i < predsJsonArray.length(); i++) { - System.out.println(predsJsonArray.getJSONObject(i).getString("description")); - System.out.println("============================================================"); - resultList.add(predsJsonArray.getJSONObject(i).getString("description")); + String desc = predsJsonArray.getJSONObject(i).getString("description"); + + // здесь может быть номер дома. СРАНЫЙ ГУГЛ + String possibleNumber = predsJsonArray.getJSONObject(i).getJSONArray("terms") + .getJSONObject(1).getString("value"); + + String[] parts = predsJsonArray.getJSONObject(i).getJSONArray("terms") + .getJSONObject(0).getString("value").split(" "); + + String lastOne = parts[parts.length - 1]; + + if (lastOne.length() < 7 && Character.isDigit(lastOne.indexOf(0))) + resultList.add(desc); + else { + JSONArray types = predsJsonArray.getJSONObject(i).getJSONArray("types"); + boolean isExists = false; + + for (int k = 0; k < types.length(); k++) + if (types.getString(k).equals("establishment")) { + isExists = true; + break; + } + + if (isExists) resultList.add(desc); + else if (possibleNumber.length() < 7 && Character.isDigit(possibleNumber.charAt(0))) + resultList.add(desc); + } } } catch (JSONException e) { Log.e(LOG_TAG, "Cannot process JSON results", e); @@ -333,10 +357,47 @@ protected void onPostExecute(String jsonString) { try { result = (JSONObject) elements.get(i); + + // разбиваем первый терм на слова + String[] parts = result.getJSONArray("terms") + .getJSONObject(0).getString("value").split(" "); + + // здесь может быть номер дома. СРАНЫЙ ГУГЛ + String possibleNumber = result.getJSONArray("terms") + .getJSONObject(1).getString("value"); + + // получаем последний + String lastOne = parts[parts.length - 1]; + + // если последняя часть больше 6 и начинается не с цифры... + if (lastOne.length() > 6 && !Character.isDigit(lastOne.indexOf(0))) { + // тогда ищем типы этой штуки + JSONArray types = result.getJSONArray("types"); + boolean isExists = false; + + // проверяем, есть ли в типах тип "заведение" + for (int k = 0; k < types.length(); k++) + if (types.getString(k).equals("establishment")) { + isExists = true; + break; + } + + // если такого типа нет... + if (!isExists) + // если возможный номер в говне, идём нахер + if (possibleNumber.length() > 6 || !Character.isDigit(possibleNumber.charAt(0))) + continue; + } + //addressString = result.getString("description"); - addressString += result.getJSONArray("terms").getJSONObject(0).getString("value") + ", "; + /*addressString += result.getJSONArray("terms").getJSONObject(0).getString("value") + ", "; addressString += result.getJSONArray("terms").getJSONObject(1).getString("value") + ", "; - addressString += result.getJSONArray("terms").getJSONObject(2).getString("value"); + addressString += result.getJSONArray("terms").getJSONObject(2).getString("value");*/ + for (int k = 0; k < result.getJSONArray("terms").length(); k++) { + addressString += result.getJSONArray("terms").getJSONObject(k).getString("value"); + if (k != (result.getJSONArray("terms").length() - 1)) + addressString += ", "; + } placeID = result.getString("place_id"); } catch (JSONException e) { diff --git a/app/src/main/java/com/apptrust/wingtaxi/fragments/AddAdresDialogFragment.java b/app/src/main/java/com/apptrust/wingtaxi/fragments/AddAdresDialogFragment.java index 8e9c048..6958432 100644 --- a/app/src/main/java/com/apptrust/wingtaxi/fragments/AddAdresDialogFragment.java +++ b/app/src/main/java/com/apptrust/wingtaxi/fragments/AddAdresDialogFragment.java @@ -263,9 +263,33 @@ protected String doInBackground(String... params) { resultList = new ArrayList(predsJsonArray.length()); for (int i = 0; i < predsJsonArray.length(); i++) { - System.out.println(predsJsonArray.getJSONObject(i).getString("description")); - System.out.println("============================================================"); - resultList.add(predsJsonArray.getJSONObject(i).getString("description")); + String desc = predsJsonArray.getJSONObject(i).getString("description"); + + // здесь может быть номер дома. СРАНЫЙ ГУГЛ + String possibleNumber = predsJsonArray.getJSONObject(i).getJSONArray("terms") + .getJSONObject(1).getString("value"); + + String[] parts = predsJsonArray.getJSONObject(i).getJSONArray("terms") + .getJSONObject(0).getString("value").split(" "); + + String lastOne = parts[parts.length - 1]; + + if (lastOne.length() < 7 && Character.isDigit(lastOne.indexOf(0))) + resultList.add(desc); + else { + JSONArray types = predsJsonArray.getJSONObject(i).getJSONArray("types"); + boolean isExists = false; + + for (int k = 0; k < types.length(); k++) + if (types.getString(k).equals("establishment")) { + isExists = true; + break; + } + + if (isExists) resultList.add(desc); + else if (possibleNumber.length() < 7 && Character.isDigit(possibleNumber.charAt(0))) + resultList.add(desc); + } } } catch (JSONException e) { Log.e(LOG_TAG, "Cannot process JSON results", e); @@ -321,10 +345,47 @@ protected void onPostExecute(String jsonString) { try { result = (JSONObject) elements.get(i); + + // разбиваем первый терм на слова + String[] parts = result.getJSONArray("terms") + .getJSONObject(0).getString("value").split(" "); + + // здесь может быть номер дома. СРАНЫЙ ГУГЛ + String possibleNumber = result.getJSONArray("terms") + .getJSONObject(1).getString("value"); + + // получаем последний + String lastOne = parts[parts.length - 1]; + + // если последняя часть больше 6 и начинается не с цифры... + if (lastOne.length() > 6 && !Character.isDigit(lastOne.indexOf(0))) { + // тогда ищем типы этой штуки + JSONArray types = result.getJSONArray("types"); + boolean isExists = false; + + // проверяем, есть ли в типах тип "заведение" + for (int k = 0; k < types.length(); k++) + if (types.getString(k).equals("establishment")) { + isExists = true; + break; + } + + // если такого типа нет... + if (!isExists) + // если возможный номер в говне, идём нахер + if (possibleNumber.length() > 6 || !Character.isDigit(possibleNumber.charAt(0))) + continue; + } + //addressString = result.getString("description"); - addressString += result.getJSONArray("terms").getJSONObject(0).getString("value") + ", "; + /*addressString += result.getJSONArray("terms").getJSONObject(0).getString("value") + ", "; addressString += result.getJSONArray("terms").getJSONObject(1).getString("value") + ", "; - addressString += result.getJSONArray("terms").getJSONObject(2).getString("value"); + addressString += result.getJSONArray("terms").getJSONObject(2).getString("value");*/ + for (int k = 0; k < result.getJSONArray("terms").length(); k++) { + addressString += result.getJSONArray("terms").getJSONObject(k).getString("value"); + if (k != (result.getJSONArray("terms").length() - 1)) + addressString += ", "; + } placeID = result.getString("place_id"); } catch (JSONException e) {