in Android/app/src/main/java/com/harvard/studyappmodule/SurveyCompleteActivity.java [220:571]
private JSONObject generateresult(ActivityObj activityObj, String stringExtra) {
try {
JSONObject dataobj = new JSONObject();
dataobj.put("startTime", activityObj.getMetadata().getStartDate());
dataobj.put("endTime", activityObj.getMetadata().getEndDate());
dataobj.put("resultType", activityObj.getType());
dataobj.put("submittedTime", AppController.getDateFormatForApi().format(Calendar.getInstance().getTime()));
JSONArray resultarray = new JSONArray();
JsonParser jsonParser = new JsonParser();
RealmResults<StepRecordCustom> stepRecord =
realm.where(StepRecordCustom.class).equalTo("taskId", stringExtra).findAll();
boolean formskipped = true;
for (int i = 0; i < activityObj.getSteps().size(); i++) {
for (int j = 0; j < stepRecord.size(); j++) {
if (stepRecord
.get(j)
.getStepId()
.equalsIgnoreCase(activityObj.getSteps().get(i).getKey())) {
if (!activityObj.getSteps().get(i).getType().equalsIgnoreCase("task")) {
JSONObject resultarrobj = new JSONObject();
resultarrobj.put("resultType", activityObj.getSteps().get(i).getResultType());
resultarrobj.put("key", activityObj.getSteps().get(i).getKey());
resultarrobj.put(
"startTime",
AppController.getDateFormatForApi().format(stepRecord.get(j).getStarted()));
resultarrobj.put(
"endTime",
AppController.getDateFormatForApi().format(stepRecord.get(j).getCompleted()));
if (!activityObj.getSteps().get(i).getResultType().equalsIgnoreCase("grouped")) {
if (stepRecord.get(j).getResult().equalsIgnoreCase("{}")) {
resultarrobj.put("skipped", true);
resultarrobj.put("value", "");
} else {
if (stepRecord.get(j).getResult().equalsIgnoreCase("{\"answer\":[]}")) {
resultarrobj.put("skipped", true);
} else {
resultarrobj.put("skipped", false);
}
resultarrobj.put(
"value",
findPrimitiveData(
jsonParser.parse(stepRecord.get(j).getResult()), activityObj, i));
}
} else {
Map<String, Object> map =
(Map<String, Object>)
parseData(jsonParser.parse(stepRecord.get(j).getResult()));
JSONArray jsonArrayMain = new JSONArray();
int k = 0;
boolean update;
boolean createResult = true;
while (createResult) {
JSONArray jsonArray = new JSONArray();
update = false;
for (Map.Entry<String, Object> entry : map.entrySet()) {
Map<String, Object> mapEntry = (Map<String, Object>) entry.getValue();
JSONObject jsonObject = new JSONObject();
String identifier = (String) mapEntry.get("identifier");
if (k == 0) {
if (!identifier.contains("_addMoreEnabled")) {
for (int c = 0; c < activityObj.getSteps().size(); c++) {
if (activityObj.getSteps().get(c).getSteps().size() > 0) {
for (int c1 = 0;
c1 < activityObj.getSteps().get(c).getSteps().size();
c1++) {
if (activityObj
.getSteps()
.get(c)
.getSteps()
.get(c1)
.getKey()
.equalsIgnoreCase((String) mapEntry.get("identifier"))) {
jsonObject.put(
"resultType",
activityObj
.getSteps()
.get(c)
.getSteps()
.get(c1)
.getResultType());
}
}
}
}
jsonObject.put("key", mapEntry.get("identifier"));
jsonObject.put("startTime", mapEntry.get("startDate"));
jsonObject.put("endTime", mapEntry.get("endDate"));
Map<String, Object> mapEntryResult =
(Map<String, Object>) mapEntry.get("results");
Object o = mapEntryResult.get("answer");
if (o instanceof Object[]) {
Object[] objects = (Object[]) o;
if (objects.length > 0) {
if (objects[0] instanceof Integer) {
JSONArray jsonArray1 = new JSONArray();
for (int l = 0; l < objects.length; l++) {
for (int c = 0; c < activityObj.getSteps().size(); c++) {
if (activityObj.getSteps().get(c).getSteps().size() > 0) {
for (int c1 = 0;
c1 < activityObj.getSteps().get(c).getSteps().size();
c1++) {
if (activityObj
.getSteps()
.get(c)
.getSteps()
.get(c1)
.getKey()
.equalsIgnoreCase((String) mapEntry.get("identifier"))) {
jsonArray1.put(
activityObj
.getSteps()
.get(c)
.getSteps()
.get(c1)
.getFormat()
.getTextChoices()
.get((int) objects[l])
.getValue());
}
}
}
}
}
jsonObject.put("value", jsonArray1);
} else if (objects[0] instanceof String) {
JSONArray jsonArray1 = new JSONArray();
for (int l = 0; l < objects.length; l++) {
jsonArray1.put((String) objects[l]);
}
jsonObject.put("value", jsonArray1);
}
} else {
jsonObject.put("value", new JSONArray());
}
} else {
jsonObject.put("value", mapEntryResult.get("answer"));
}
try {
if (jsonObject.get("value") == null) {
resultarrobj.put("skipped", true);
jsonObject.put("skipped", true);
} else if (jsonObject.get("value").toString().equalsIgnoreCase("")) {
resultarrobj.put("skipped", true);
jsonObject.put("skipped", true);
} else if (jsonObject.get("value").toString().equalsIgnoreCase("[]")) {
resultarrobj.put("skipped", true);
jsonObject.put("skipped", true);
} else {
resultarrobj.put("skipped", false);
jsonObject.put("skipped", false);
formskipped = false;
}
} catch (JSONException e) {
Logger.log(e);
resultarrobj.put("skipped", true);
jsonObject.put("skipped", true);
}
jsonArray.put(jsonObject);
update = true;
}
} else if (identifier.contains(k + "_addMoreEnabled")) {
for (int c = 0; c < activityObj.getSteps().size(); c++) {
if (activityObj.getSteps().get(c).getSteps().size() > 0) {
for (int c1 = 0;
c1 < activityObj.getSteps().get(c).getSteps().size();
c1++) {
if (activityObj
.getSteps()
.get(c)
.getSteps()
.get(c1)
.getKey()
.equalsIgnoreCase((String) mapEntry.get("identifier"))) {
jsonObject.put(
"resultType",
activityObj.getSteps().get(c).getSteps().get(c1).getResultType());
}
}
}
}
jsonObject.put(
"key",
mapEntry
.get("identifier")
.toString()
.substring(
0, mapEntry.get("identifier").toString().lastIndexOf("-")));
jsonObject.put("startTime", mapEntry.get("startDate"));
jsonObject.put("endTime", mapEntry.get("endDate"));
jsonObject.put("skipped", false);
Map<String, Object> mapEntryResult =
(Map<String, Object>) mapEntry.get("results");
Object o = mapEntryResult.get("answer");
if (o instanceof Object[]) {
Object[] objects = (Object[]) o;
if (objects.length > 0) {
if (objects[0] instanceof Integer) {
JSONArray jsonArray1 = new JSONArray();
for (int l = 0; l < objects.length; l++) {
for (int c = 0; c < activityObj.getSteps().size(); c++) {
if (activityObj.getSteps().get(c).getSteps().size() > 0) {
for (int c1 = 0;
c1 < activityObj.getSteps().get(c).getSteps().size();
c1++) {
if (activityObj
.getSteps()
.get(c)
.getSteps()
.get(c1)
.getKey()
.equalsIgnoreCase((String) mapEntry.get("identifier"))) {
jsonArray1.put(
activityObj
.getSteps()
.get(c)
.getSteps()
.get(c1)
.getFormat()
.getTextChoices()
.get((int) objects[l])
.getValue());
}
}
}
}
}
jsonObject.put("value", jsonArray1);
} else if (objects[0] instanceof String) {
JSONArray jsonArray1 = new JSONArray();
for (int l = 0; l < objects.length; l++) {
jsonArray1.put((String) objects[l]);
}
jsonObject.put("value", jsonArray1);
}
} else {
jsonObject.put("value", new JSONArray());
}
} else {
jsonObject.put("value", mapEntryResult.get("answer"));
}
try {
if (jsonObject.get("value") == null) {
resultarrobj.put("skipped", true);
jsonObject.put("skipped", true);
} else if (jsonObject.get("value").toString().equalsIgnoreCase("")) {
resultarrobj.put("skipped", true);
jsonObject.put("skipped", true);
} else if (jsonObject.get("value").toString().equalsIgnoreCase("[]")) {
resultarrobj.put("skipped", true);
jsonObject.put("skipped", true);
} else {
resultarrobj.put("skipped", false);
jsonObject.put("skipped", false);
formskipped = false;
}
} catch (JSONException e) {
Logger.log(e);
resultarrobj.put("skipped", true);
jsonObject.put("skipped", true);
}
jsonArray.put(jsonObject);
update = true;
}
}
k = k + jsonArray.length();
if (update) {
jsonArrayMain.put(jsonArray);
} else {
createResult = false;
}
}
if (formskipped) {
resultarrobj.put("skipped", true);
resultarrobj.put("value", new JSONArray());
} else {
resultarrobj.put("skipped", false);
resultarrobj.put("value", jsonArrayMain);
}
}
resultarray.put(resultarrobj);
dataobj.put("results", resultarray);
} else {
JSONObject durationobj = new JSONObject();
durationobj.put("resultType", "numeric");
durationobj.put("key", "duration");
durationobj.put("startTime", null);
durationobj.put("endTime", null);
if (stepRecord.get(j).getResult().equalsIgnoreCase("{}")) {
durationobj.put("skipped", true);
} else {
durationobj.put("skipped", false);
}
JSONObject activejsonObject = new JSONObject(stepRecord.get(j).getResult());
JSONObject answerjsonobj = activejsonObject.getJSONObject("answer");
durationobj.put("value", answerjsonobj.getString("duration"));
JSONObject valueobj = new JSONObject();
valueobj.put("resultType", "numeric");
valueobj.put("key", "count");
valueobj.put("startTime", null);
valueobj.put("endTime", null);
if (stepRecord.get(j).getResult().equalsIgnoreCase("{}")) {
valueobj.put("skipped", true);
} else {
valueobj.put("skipped", false);
}
valueobj.put("value", answerjsonobj.getInt("value"));
resultarray.put(durationobj);
resultarray.put(valueobj);
JSONObject jsonObject = new JSONObject();
jsonObject.put("value", resultarray);
jsonObject.put(
"startTime",
AppController.getDateFormatForApi().format(stepRecord.get(j).getStarted()));
jsonObject.put(
"endTime",
AppController.getDateFormatForApi().format(stepRecord.get(j).getCompleted()));
jsonObject.put("resultType", "grouped");
jsonObject.put("key", activityObj.getSteps().get(i).getKey());
if (stepRecord.get(j).getResult().equalsIgnoreCase("{}")) {
jsonObject.put("skipped", true);
} else {
jsonObject.put("skipped", false);
}
JSONArray jsonArray = new JSONArray();
jsonArray.put(jsonObject);
dataobj.put("results", jsonArray);
}
}
}
}
return dataobj;
} catch (JSONException e) {
Logger.log(e);
}
return new JSONObject();
}