package jm.org.data.area;
import static android.provider.BaseColumns._ID;
import static jm.org.data.area.AreaConstants.BING_SEARCH_LIST;
import static jm.org.data.area.AreaConstants.IDS_SEARCH_DOC_AUTH;
import static jm.org.data.area.AreaConstants.IDS_SEARCH_DOC_URLS;
import static jm.org.data.area.AreaConstants.IDS_SEARCH_LIST;
import static jm.org.data.area.AreaConstants.SEARCH_FAIL;
import static jm.org.data.area.AreaConstants.WB_CATEGORY_LIST;
import static jm.org.data.area.AreaConstants.WB_COUNTRY_LIST;
import static jm.org.data.area.AreaConstants.WB_DATA_LIST;
import static jm.org.data.area.AreaConstants.WB_IND_CATEGORY;
import static jm.org.data.area.AreaConstants.WB_IND_LIST;
import static jm.org.data.area.DBConstants.AP_ID;
import static jm.org.data.area.DBConstants.BING_DATE_TIME;
import static jm.org.data.area.DBConstants.BING_QUERY;
import static jm.org.data.area.DBConstants.BING_SEARCH_RESULTS;
import static jm.org.data.area.DBConstants.BING_SEARCH_TABLE;
import static jm.org.data.area.DBConstants.B_S_ID;
import static jm.org.data.area.DBConstants.CAT_ID;
import static jm.org.data.area.DBConstants.COMBINATION;
import static jm.org.data.area.DBConstants.COUNTRY;
import static jm.org.data.area.DBConstants.C_ID;
import static jm.org.data.area.DBConstants.FROM_BING_SEARCH_RESULTS;
import static jm.org.data.area.DBConstants.FROM_CATEGORY;
import static jm.org.data.area.DBConstants.FROM_COUNTRY;
import static jm.org.data.area.DBConstants.FROM_IDS_SEARCH_RESULTS;
import static jm.org.data.area.DBConstants.FROM_INDICATOR;
import static jm.org.data.area.DBConstants.FROM_WB_DATA;
import static jm.org.data.area.DBConstants.IDS_BASE_URL;
import static jm.org.data.area.DBConstants.IDS_DOC_PATH;
import static jm.org.data.area.DBConstants.IDS_OBJECT;
import static jm.org.data.area.DBConstants.IDS_OPERAND;
import static jm.org.data.area.DBConstants.IDS_PARAMETER;
import static jm.org.data.area.DBConstants.IDS_PARAM_VALUE;
import static jm.org.data.area.DBConstants.IDS_P_ID;
import static jm.org.data.area.DBConstants.IDS_SEARCH_PARAMS;
import static jm.org.data.area.DBConstants.IDS_SEARCH_RESULTS;
import static jm.org.data.area.DBConstants.IDS_SEARCH_TABLE;
import static jm.org.data.area.DBConstants.IDS_SITE;
import static jm.org.data.area.DBConstants.IDS_S_ID;
import static jm.org.data.area.DBConstants.IDS_TIMESTAMP;
import static jm.org.data.area.DBConstants.IDS_VIEW_DATE;
import static jm.org.data.area.DBConstants.INDICATOR;
import static jm.org.data.area.DBConstants.IND_CATEGORIES;
import static jm.org.data.area.DBConstants.I_ID;
import static jm.org.data.area.DBConstants.P_ID;
import static jm.org.data.area.DBConstants.QUERY_DATE;
import static jm.org.data.area.DBConstants.QUERY_VIEW_DATE;
import static jm.org.data.area.DBConstants.SC_ID;
import static jm.org.data.area.DBConstants.SEARCH;
import static jm.org.data.area.DBConstants.SEARCH_COUNTRY;
import static jm.org.data.area.DBConstants.SEARCH_CREATED;
import static jm.org.data.area.DBConstants.SEARCH_MODIFIED;
import static jm.org.data.area.DBConstants.SEARCH_URI;
import static jm.org.data.area.DBConstants.SEARCH_VIEWED;
import static jm.org.data.area.DBConstants.S_ID;
import static jm.org.data.area.DBConstants.WB_CATEGORY;
import static jm.org.data.area.DBConstants.WB_COUNTRY_CODE;
import static jm.org.data.area.DBConstants.WB_DATA;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Hashtable;
import java.util.regex.PatternSyntaxException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.preference.PreferenceManager;
import android.util.Log;
public class JSONParse {
private static final String TAG = JSONParse.class.getSimpleName();
private AreaData areaData;
// private Context appContext;
private ContentValues apiRecord, catRecord;
public SharedPreferences prefs;
private ArrayList<String> categories;
public JSONParse(Context context) {
// appContext = context;
areaData = new AreaData(context);
apiRecord = new ContentValues();
prefs = PreferenceManager.getDefaultSharedPreferences(context);
}
public String parseWB(String jsonData) {
// ArrayList indicators = new ArrayList(1);
// String jsonText = "";
StringBuilder jsonText = new StringBuilder();
jsonText.append("Number");
try {
// jsonText.append("Number");
JSONArray jsonArray = new JSONArray(jsonData);
// jsonText.append(": 1 test");
// Log.i(ParseJSON.class.getName(),
// "Number of entries " + jsonArray.length());
jsonText.append("Number of entries "
+ String.valueOf(jsonArray.length()));
jsonText.append("\n-------------------------------------\n");
JSONObject jsonObject = jsonArray.getJSONObject(0);
jsonText.append("Total: " + jsonObject.getString("total"));
int numofObjects = Integer.parseInt(jsonObject.getString("total"));
if (numofObjects > 0) {
jsonArray = jsonArray.getJSONArray(1);
}
for (int i = 0; i < 10; i++) {
JSONObject jsonInnerObject = jsonArray.getJSONObject(i);
// jsonObject.
jsonText.append(jsonInnerObject.toString());
// jsonText.append("\n-------------------------------------\n");
// Log.i(ParseJSON.class.getName(),
// jsonObject.getString("text"));
// get the text of tweet from feed from the twitter feed
// jsonText.append(jsonObject.getString("text"));
// get the text id from
// jsonText.append(jsonObject.getString("name"));
jsonText.append("\n--------------------------------------\n\n");
JSONArray names = jsonInnerObject.names();
for (int x = 0; x < names.length(); x++) {
if (jsonInnerObject.optJSONObject(names.getString(x)) == null) {
jsonText.append("\n" + names.getString(x) + ": "
+ jsonInnerObject.getString(names.getString(x)));
} else {
jsonText.append("\n" + names.getString(x) + ": ");
jsonText.append("\n\t"
+ jsonInnerObject.optJSONObject(
names.getString(x)).toString());
}
}
jsonText.append("\n--------------------------------------\n");
jsonText.append("--------------------------------------\n\n");
}
} catch (Exception e) {
// e.printStackTrace();
Log.d("some", e.toString());
jsonText.append("\n--------------------------------------\n\n");
}
return jsonText.toString();
}
public int parseBINGData(String jsonData, String params, String uri) {
Hashtable<String, String> bing_data = new Hashtable<String, String>();
long search_id = -1;
JSONArray resultArray;
long date = timeStamp();
try {
JSONObject jsonObject = new JSONObject(jsonData);
JSONObject response = jsonObject.getJSONObject("d");
resultArray = response.getJSONArray("results");
// JSONObject results = response.getJSONObject("Web");
int numOfrecords = resultArray.length();
if (numOfrecords > 0) {
// resultArray = results.getJSONArray("Results");
// create Search record if it doesn't exist;
apiRecord = new ContentValues();
apiRecord.put(BING_QUERY, params);
apiRecord.put(QUERY_DATE, date);
apiRecord.put(QUERY_VIEW_DATE, date);
// public static final String[] FROM_BING_SEARCH_TABLE =
// {BING_SEARCH_ID, BING_QUERY, QUERY_DATE };
search_id = areaData.insert(BING_SEARCH_TABLE, apiRecord, 1);
Log.e(TAG, "Inserting BING Search record: query -" + params
+ " URI-" + uri);
if (search_id <= 0) {
Log.e(TAG, "Error inserting BING Search record: query -"
+ params + "URI-" + uri);
return SEARCH_FAIL;
}
} else {
Log.e(TAG, "Error NO data retrieved from BING API: URL-" + uri);
return SEARCH_FAIL;
}
if (numOfrecords > Integer.parseInt(prefs.getString("resultNumber", "25"))) {
numOfrecords = Integer.parseInt(prefs.getString("resultNumber", "25"));
}
// get Data returned from the IDS
// update the IDS_SEARCH_RESULT table with the documents information
for (int i = 0; i < numOfrecords; i++) {
apiRecord = new ContentValues();
bing_data = parseJSON(bing_data, resultArray.getJSONObject(i),
"");
// add the IDS Search ID first
apiRecord.put(B_S_ID, search_id);
for (int a = 0; a < BING_SEARCH_LIST.length; a++) {
apiRecord.put(FROM_BING_SEARCH_RESULTS[a + 2],
(String) bing_data.get(BING_SEARCH_LIST[a]));
// Log.d("Indicators", ""+ FROM_BING_SEARCH_RESULTS[a+2] +
// ":-> " + (String)bing_data.get(BING_SEARCH_LIST[a]));
}
apiRecord.put(BING_DATE_TIME, date);
areaData.insert(BING_SEARCH_RESULTS, apiRecord, 0);
}
} catch (Exception e) {
Log.e(TAG, e.toString());
return SEARCH_FAIL;
}
return (int) search_id;
}
public int parseIDSData(String jsonData, int indicator, int country, String params,
String uri) {
Hashtable<String, String> ids_data = new Hashtable<String, String>();
long search_id = 0, param_id = 0;
JSONArray resultArray;
try {
JSONObject jsonObject = new JSONObject(jsonData);
JSONObject metadata = jsonObject.getJSONObject("metadata");
int numReturned = Integer.parseInt(metadata
.getString("total_results"));
if (numReturned > 0) {
resultArray = jsonObject.getJSONArray("results");
String site = "eldis/", object = "document/", parameter = "keyword", querybase = "http://api.ids.ac.uk/openapi/";
long date = timeStamp();
// create Search record if it doesn't exist;
apiRecord = new ContentValues();
apiRecord.put(I_ID, indicator);
apiRecord.put(C_ID, country);
apiRecord.put(IDS_BASE_URL, querybase);
apiRecord.put(IDS_SITE, site);
apiRecord.put(IDS_OBJECT, object);
apiRecord.put(IDS_TIMESTAMP, date);
apiRecord.put(IDS_VIEW_DATE, date);
// String[] FROM_IDS_SEARCH= {IDS_SEARCH_ID, I_ID, IDS_BASE_URL,
// IDS_SITE, IDS_OBJECT};
search_id = areaData.insert(IDS_SEARCH_TABLE, apiRecord, 1);
if (search_id > 0) {
// Log.e(TAG, "Num of Parameters:" + params.length);
// for(int n = 0; n < params.length; n++){
// Log.e(TAG, "Parameter:" + params[n]);
apiRecord = new ContentValues();
apiRecord.put(IDS_S_ID, search_id);
apiRecord.put(IDS_PARAMETER, parameter);
apiRecord.put(IDS_OPERAND, "=");
apiRecord.put(IDS_PARAM_VALUE, params);
apiRecord.put(COMBINATION, 0);
// FROM_IDS_SEARCH_PARAMS = {_ID, IDS_S_ID, IDS_PARAMETER,
// IDS_OPERAND, IDS_PARAM_VALUE, COMBINATION };
param_id = areaData.insert(IDS_SEARCH_PARAMS, apiRecord, 1);
// FROM_IDS_SEARCH_PARAMS = {_ID, IDS_S_ID, IDS_PARAMETER,
// IDS_OPERAND, IDS_PARAM_VALUE, COMBINATION };
// }
} else {
Log.e(TAG, "Error inserting IDS Search record: Indicator-"
+ indicator + "URI-" + uri);
return SEARCH_FAIL;
}
} else {
Log.e(TAG, "Error NO data retrieved from IDS API: URL-" + uri);
return SEARCH_FAIL;
}
// get Data returned from the IDS
// update the IDS_SEARCH_RESULT table with the documents information
if (numReturned > Integer.parseInt(prefs.getString("resultNumber", "25"))) {
numReturned = Integer.parseInt(prefs.getString("resultNumber", "25"));
}
for (int i = 0; i < numReturned; i++) {
apiRecord = new ContentValues();
ids_data = parseJSON(ids_data, resultArray.getJSONObject(i), "");
// add the IDS Search ID first
apiRecord.put(IDS_S_ID, search_id);
apiRecord.put(IDS_P_ID, param_id);
for (int a = 0; a < IDS_SEARCH_LIST.length; a++) {
apiRecord.put(FROM_IDS_SEARCH_RESULTS[a + 3],
(String) ids_data.get(IDS_SEARCH_LIST[a]));
// Log.d("Indicators", ""+ FROM_IDS_SEARCH_RESULTS[a+2] +
// ":-> " + (String)ids_data.get(IDS_SEARCH_LIST[a]));
}
apiRecord.put(IDS_DOC_PATH, "");
areaData.insert(IDS_SEARCH_RESULTS, apiRecord, 0);
}
} catch (Exception e) {
Log.e(TAG, e.toString());
return SEARCH_FAIL;
}
return (int) search_id;
}
public int parseWBData(String jsonData, int indicator, Integer[] countries,
String uri) {
Hashtable<String, String> wb_data = new Hashtable<String, String>();
long search_id = 0, country_search_id = -1;
int search_country_id = 0;
try {
JSONArray jsonArray = new JSONArray(jsonData);
JSONObject jsonObject = jsonArray.getJSONObject(0);
int numReturned = Integer
.parseInt(jsonObject.getString("per_page"));
int numofObjects = Integer.parseInt(jsonObject.getString("total"));
if (numofObjects > 0) {
jsonArray = jsonArray.getJSONArray(1);
// create or update Search record
long date = timeStamp();
apiRecord = new ContentValues();
apiRecord.put(I_ID, indicator);
apiRecord.put(AP_ID, 1);
apiRecord.put(SEARCH_CREATED, date);
apiRecord.put(SEARCH_MODIFIED, date);
apiRecord.put(SEARCH_VIEWED, date);
apiRecord.put(SEARCH_URI, uri);
// FROM_SEARCH = {SEARCH_ID, I_ID, AP_ID, SEARCH_CREATED,
// SEARCH_MODIFIED, SEARCH_URI};
search_id = areaData.insert(SEARCH, apiRecord, 1);
Cursor query_s = areaData.rawQuery(SEARCH, null, "" + I_ID
+ " = '" + indicator + "'");
// Then get SearchCountry ID from corresponding table now that
// we have both S_ID and C_ID
query_s.moveToFirst();
Log.e(TAG,
"Search_id:"
+ query_s.getInt(query_s.getColumnIndex(_ID)));
search_id = query_s.getInt(query_s.getColumnIndex(_ID));
Log.e(TAG, "Search_id:" + search_id);
// create or update Search_Country record
if (search_id > 0) {
Log.e(TAG, "Num of Countries:" + countries.length);
for (int n = 0; n < countries.length; n++) {
Log.e(TAG, "Country:" + countries[n]);
apiRecord = new ContentValues();
apiRecord.put(S_ID, search_id);
apiRecord.put(C_ID, countries[n]);
apiRecord.put(P_ID, 1);
// FROM_SEARCH_COUNTRY = {_ID, S_ID, C_ID, P_ID};
country_search_id = areaData.insert(SEARCH_COUNTRY,
apiRecord, 1);
Log.e(TAG, "" + country_search_id);
}
} else {
Log.e(TAG, "Error inserting Search record: Indicator-"
+ indicator + ", API_ID- 1, " + "URI-" + uri);
return SEARCH_FAIL;
}
// move on to parse and update WB_DATA
} else {
// no data returned from World bank API pull
Log.e(TAG, "Error NO data retrieved from WB API: URL-" + uri);
return SEARCH_FAIL;
}
// get Data returned from the world bank
// update the WB_DATA table with the indicator values
for (int i = 0; i < numReturned; i++) {
apiRecord = new ContentValues();
wb_data = parseJSON(wb_data, jsonArray.getJSONObject(i), "");
// THIS WAS THE EASIEST WAY TO DO IT AT THE TIME
// get Country ID from Country table based on the Country code
Cursor countryData = areaData.rawQuery(
COUNTRY,
null,
"" + WB_COUNTRY_CODE + " = '"
+ (String) wb_data.get("country: id") + "'");
// Then get SearchCountry ID from corresponding table now that
// we have both S_ID and C_ID
countryData.moveToFirst();
Cursor SearchCountry = areaData.rawQuery(
SEARCH_COUNTRY,
null,
""
+ C_ID
+ " = '"
+ countryData.getInt(countryData
.getColumnIndex(_ID)) + "' AND " + S_ID
+ "= '" + search_id + "'");
SearchCountry.moveToFirst();
search_country_id = SearchCountry.getInt(SearchCountry
.getColumnIndex(_ID));
if (search_country_id < 0) {
return SEARCH_FAIL;
}
apiRecord.put(SC_ID, search_country_id);
// Log.d("Indicators", ""+ SC_ID + ":-> " +
// SearchCountry.getInt(SearchCountry.getColumnIndex(_ID)));
search_country_id = apiRecord.getAsInteger(SC_ID);
for (int a = 0; a < WB_DATA_LIST.length; a++) {
apiRecord.put(FROM_WB_DATA[a + 2],
(String) wb_data.get(WB_DATA_LIST[a]));
// Log.d("Indicators", ""+FROM_WB_DATA[a+2] + ":-> " +
// (String)wb_data.get(WB_DATA_LIST[a]));
}
countryData.close();
SearchCountry.close();
areaData.insert(WB_DATA, apiRecord, 0);
}
} catch (Exception e) {
// e.printStackTrace();
Log.e(TAG, "WB DATA" + e.toString());
return SEARCH_FAIL;
}
return search_country_id;
}
public String parseWBIndicator(String jsonData, String indicator, String years) {
Hashtable<String, String> wb_data = new Hashtable<String, String>();
try {
JSONArray jsonArray = new JSONArray(jsonData);
JSONObject jsonObject = jsonArray.getJSONObject(0);
int numReturned = Integer
.parseInt(jsonObject.getString("per_page"));
int numofObjects = Integer.parseInt(jsonObject.getString("total"));
if (numofObjects > 0) {
jsonArray = jsonArray.getJSONArray(1);
// move on to parse and update WB_DATA
} else {
// no data returned from World bank API pull
Log.e(TAG, "Error NO data retrieved from WB API: URL-" + indicator);
return "";
}
// 20 years of data will be returned, pass back the most current record of the resultset
for (int i = 0; i < numReturned; i++) {
wb_data = parseJSON(wb_data, jsonArray.getJSONObject(i), "");
if(wb_data.get("value") == null || wb_data.get("value").equals("null")){
// continue looping through the list
}else{
Log.i(TAG," (" + wb_data.get("date")+") " + wb_data.get("value"));
return " (" + wb_data.get("date")+") " + wb_data.get("value");
}
}
// if all 20 years of data are null return "no data"
return "No Data "+ years;
} catch (Exception e) {
// e.printStackTrace();
Log.e(TAG, "WB DATA" + e.toString());
return "";
}
}
public int getWBTotal(String jsonData) {
int numofObjects = 0;
try {
JSONArray jsonArray = new JSONArray(jsonData);
JSONObject jsonObject = jsonArray.getJSONObject(0);
numofObjects = Integer.parseInt(jsonObject.getString("total"));
} catch (Exception e) {
// e.printStackTrace();
Log.e(TAG, e.toString());
}
return numofObjects;
}
public String parseIndicators(String jsonData) {
Hashtable<String, String> indicator_data = new Hashtable<String, String>();
StringBuilder jsonText = new StringBuilder();
try {
JSONArray jsonArray = new JSONArray(jsonData);
JSONObject jsonObject = jsonArray.getJSONObject(0);
int numReturned = Integer
.parseInt(jsonObject.getString("per_page"));
int numofObjects = Integer.parseInt(jsonObject.getString("total"));
if (numofObjects > 0) {
jsonArray = jsonArray.getJSONArray(1);
} else {
// no data returned from World bank API pull
}
// get Data returned from the world bank
for (int i = 0; i < numReturned; i++) {
apiRecord = new ContentValues();
indicator_data = parseJSON(indicator_data,
jsonArray.getJSONObject(i), "");
for (int a = 0; a < WB_IND_LIST.length; a++) {
apiRecord.put(FROM_INDICATOR[a + 1],
(String) indicator_data.get(WB_IND_LIST[a]));
Log.d("Indicators", ""+FROM_INDICATOR[a+1] + ":-> " +
(String)indicator_data.get(WB_IND_LIST[a]));
}
//Log.d(TAG, indicator_data.toString());
Long ind_id = areaData.insert(INDICATOR, apiRecord, 0);
// Update Indicator Categories
if(!categories.isEmpty()){
for(int foo = 0; foo < categories.size(); foo++){
catRecord = new ContentValues();
if(categories.get(foo) == null){
catRecord.put(CAT_ID, 0);
}else{
catRecord.put(CAT_ID, categories.get(foo));
}
catRecord.put(I_ID, ind_id);
areaData.insert(IND_CATEGORIES, catRecord, 0);
}
}
}
} catch (Exception e) {
// e.printStackTrace();
Log.e(TAG, e.toString());
}
return jsonText.toString();
}
public String parseCategories(String jsonData) {
Hashtable<String, String> category_data = new Hashtable<String, String>();
StringBuilder jsonText = new StringBuilder();
try {
JSONArray jsonArray = new JSONArray(jsonData);
JSONObject jsonObject = jsonArray.getJSONObject(0);
int numReturned = Integer
.parseInt(jsonObject.getString("per_page"));
int numofObjects = Integer.parseInt(jsonObject.getString("total"));
if (numofObjects > 0) {
jsonArray = jsonArray.getJSONArray(1);
} else {
// no data returned from World bank API pull
}
// get Data returned from the world bank
for (int i = 0; i < numReturned; i++) {
apiRecord = new ContentValues();
category_data = parseJSON(category_data,
jsonArray.getJSONObject(i), "");
for (int a = 0; a < WB_CATEGORY_LIST.length; a++) {
apiRecord.put(FROM_CATEGORY[a + 1],
(String) category_data.get(WB_CATEGORY_LIST[a]));
Log.d("Catergories", ""+FROM_CATEGORY[a+1] + ":-> " +
(String)category_data.get(WB_CATEGORY_LIST[a]));
}
//Log.d(TAG, category_data.toString());
areaData.insert(WB_CATEGORY, apiRecord, 0);
}
} catch (Exception e) {
// e.printStackTrace();
Log.e(TAG, e.toString());
}
return jsonText.toString();
}
// implemented on the basis that parseIndicators is working
public int parseCountries(String jsonData) {
Hashtable<String, String> country_data = new Hashtable<String, String>();
try {
JSONArray jsonArray = new JSONArray(jsonData);
JSONObject jsonObject = jsonArray.getJSONObject(0);
int numReturned = Integer
.parseInt(jsonObject.getString("per_page"));
int numofObjects = Integer.parseInt(jsonObject.getString("total"));
if (numofObjects > 0) {
jsonArray = jsonArray.getJSONArray(1);
} else {
// no data returned from World bank API pull
return 0;
}
// get Data returned from the world bank
for (int i = 0; i < numReturned; i++) {
apiRecord = new ContentValues();
// test this
country_data = parseJSON(country_data,
jsonArray.getJSONObject(i), "");
for (int a = 0; a < WB_COUNTRY_LIST.length; a++) {
apiRecord.put(FROM_COUNTRY[a + 1],
(String) country_data.get(WB_COUNTRY_LIST[a]));
// Log.d("Countries", ""+FROM_COUNTRY[a+1] + ":-> " +
// (String)country_data.get(WB_COUNTRY_LIST[a]));
}
//Log.d(TAG, country_data.toString());
areaData.insert(COUNTRY, apiRecord, 0);
}
} catch (Exception e) {
// e.printStackTrace();
Log.e("Parsing", e.toString());
return -1;
}
return 0;
}
private Hashtable<String, String> parseJSON(Hashtable<String, String> data,
JSONObject jsonInnerObject, String base) {
String key, value;
int length;
if (!base.equals("")) {
base = base + ": ";
}
try {
data.put("json", jsonInnerObject.toString());
JSONArray names = jsonInnerObject.names();
for (int x = 0; x < names.length(); x++) {
if (jsonInnerObject.optJSONObject(names.getString(x)) == null && jsonInnerObject.optJSONArray(names.getString(x))==null) {
key = "" + base + "" + names.getString(x);
value = jsonInnerObject.getString(names.getString(x));
// add normal key value pairs to hashtable
data.put(key, value);
//Log.d(TAG, "" + key + " :-> " + value);
} else if(jsonInnerObject.optJSONArray(names.getString(x)) != null) {
length = jsonInnerObject.getJSONArray(names.getString(x)).length();
key = "" + base + "" + names.getString(x);
// if the array is for document authors or Urls create a csv list
if (key.equals(IDS_SEARCH_DOC_AUTH)
|| key.equals(IDS_SEARCH_DOC_URLS)) {
value = "";
JSONArray auths = jsonInnerObject.getJSONArray(key);
for (int a = 0; a < auths.length(); a++) {
if (a == 0) {
value = value + auths.getString(a);
} else {
value = value + ", " + auths.getString(a);
}
}
Log.e(TAG, "Values String " + value);
data.put(key, value);
}else if(key.equals(WB_IND_CATEGORY)){
Log.e(TAG, "Topics " + jsonInnerObject.getJSONArray(names.getString(x)).toString());
categories = new ArrayList<String>();
for (int a = 0; a < length; a++) {
categories.add(jsonInnerObject.getJSONArray(names.getString(x)).getJSONObject(a).getString("id"));
Log.e(TAG, "Adding Category ID: " +
jsonInnerObject.getJSONArray(names.getString(x)).getJSONObject(a).getString("id"));
}
Log.e(TAG, "Categories " + categories.toString());
}else{
// if not authors or URLs then get key value pairs from array
for (int a = 0; a < length; a++) {
data = parseJSON(data,
jsonInnerObject.getJSONArray(names.getString(x)).getJSONObject(a),
"" + names.getString(x));
}
}
}else{
data = parseJSON(data,
jsonInnerObject.optJSONObject(names.getString(x)),
names.getString(x));
}
}
} catch (JSONException e) {
Log.e(TAG, "Exception in parsing Indicators List " + e.toString());
} catch (PatternSyntaxException e) {
Log.e(TAG, "Exception in parsing Indicators List " + e.toString());
}
return data;
}
public long timeStamp() {
Calendar calendar = Calendar.getInstance();
//SimpleDateFormat format = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
// return format.format(calendar.getTime());
return calendar.getTime().getTime();
}
}