package mil.nga.giat.asam.model;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import mil.nga.giat.asam.util.AsamLog;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class AsamJsonParser {
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/yyyy", Locale.US);
public List<AsamBean> parseJson(String json) throws Exception {
List<AsamBean> asams = new ArrayList<AsamBean>();
JSONArray array = new JSONArray(json);
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
AsamBean asam = new AsamBean();
asam.setReferenceNumber(extractString("Reference", object));
asam.setAggressor(extractString("Aggressor", object));
asam.setVictim(extractString("Victim", object));
asam.setDescription(extractString("Description", object));
asam.setGeographicalSubregion(extractString("Subregion", object));
asam.setLatitude(extractDouble("lat", object));
asam.setLongitude(extractDouble("lng", object));
asam.setOccurrenceDate(extractDate("Date", object));
asams.add(asam);
}
return asams;
}
private String extractString(String key, JSONObject object) {
String value = null;
if (object.has(key) && !object.isNull(key)) {
try {
value = object.getString(key).trim().replaceAll("\\+s", " ");
}
catch (JSONException caught) {
AsamLog.e(AsamJsonParser.class.getName() + ":Error extracting " + key, caught);
}
}
return value;
}
private Double extractDouble(String key, JSONObject object) {
Double value = null;
if (object.has(key) && !object.isNull(key)) {
try {
value = object.getDouble(key);
}
catch (JSONException caught) {
AsamLog.e(AsamJsonParser.class.getName() + ":Error extracting " + key, caught);
}
}
return value;
}
private Date extractDate(String key, JSONObject object) {
Date value = null;
if (object.has(key) && !object.isNull(key)) {
try {
value = DATE_FORMAT.parse(object.getString(key));
}
catch (Exception caught) {
AsamLog.e(AsamJsonParser.class.getName() + ":Error extracting " + key, caught);
}
}
return value;
}
}