/*
* This file is part of Prepay Credit for Android
*
* Copyright © 2013 Damien O'Reilly
*
* Prepay Credit for Android is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Prepay Credit for Android is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Prepay Credit for Android. If not, see <http://www.gnu.org/licenses/>.
*
* Report bugs or new features at: https://github.com/DamienOReilly/PrepayCredit
* Contact the author at: damienreilly@gmail.com
*/
package damo.three.ie.util;
import damo.three.ie.prepayusage.ItemFactory;
import damo.three.ie.prepayusage.UsageItem;
import org.acra.ACRA;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
public class JSONUtils {
/**
* Converts JSON array as string into JSON array object. Silently handling any parse exceptions.
*/
public static JSONArray jsonStringArraytoJsonArray(String jsonStringArray) {
JSONArray usageItems = null;
try {
usageItems = new JSONArray(jsonStringArray);
} catch (JSONException e) {
e.printStackTrace();
}
return usageItems;
}
/**
* Convert our usages in JSON string representation to objects.
*
* @param jsonStringArray Usages in JSON string format
* @return {@link List<damo.three.ie.prepayusage.UsageItem>}
*/
public static List<UsageItem> jsonToUsageItems(String jsonStringArray) {
List<UsageItem> usageItems = null;
try {
usageItems = jsonToUsageItems(new JSONArray(jsonStringArray));
} catch (JSONException e) {
e.printStackTrace();
}
return usageItems;
}
/**
* Convert our usages in JSON representation to objects.
*
* @param jsonArray Usages in JSON format
* @return {@link List<damo.three.ie.prepayusage.UsageItem>}
*/
public static List<UsageItem> jsonToUsageItems(JSONArray jsonArray) {
List<UsageItem> usageItems = new ArrayList<UsageItem>();
if (jsonArray != null) {
boolean problemOccurred = false;
Exception ex = null;
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject item;
try {
item = jsonArray.getJSONObject(i);
usageItems.add(ItemFactory.createItem(item));
} catch (JSONException e) {
problemOccurred = true;
ex = e;
} catch (ParseException e) {
problemOccurred = true;
ex = e;
} catch (PrepayException e) {
problemOccurred = true;
ex = e;
} catch (IllegalArgumentException e) {
// Used to catch out-of-bundle usages pre-upgrade that are incompatible with this version.
}
}
if (problemOccurred) {
// Unknown usage items. Log report for possible bug.
ACRA.getErrorReporter().putCustomData("JSON_ITEMS", jsonArray.toString());
ACRA.getErrorReporter().handleSilentException(ex);
}
}
return usageItems;
}
}