From 4c7b9fdee152adbdf94925b6a49bb988d7dcab72 Mon Sep 17 00:00:00 2001 From: VladislavSavvateev Date: Wed, 8 Nov 2017 20:56:32 +0800 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B0=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B0=D0=B4=D1=80=D0=B5=D1=81=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=B1=D0=B5=D0=B7=20=D1=8F=D0=B2=D0=BD=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D1=83=D0=BA=D0=B0=D0=B7=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=BC=D0=B5=D1=80=D0=B0=20=D0=B4=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=20(=D0=B7=D0=B0=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=BF=D1=80=D0=B5=D0=B4=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D1=8F=D1=82=D0=B8=D0=B9,=20=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9=20=D0=B8=20=D0=BF=D1=80=D0=BE=D1=87=D0=B5=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=BF=D0=BE=D0=B4=D0=BE=D0=B1=D0=BD=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragments/AddAddressFragment.java | 71 +++++++++++++++++-- .../fragments/AddAdresDialogFragment.java | 71 +++++++++++++++++-- 2 files changed, 132 insertions(+), 10 deletions(-) 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) {