private Promise<FormRecordSet> getRecords(final ResourceId formId, final String url) { return getRaw(url, response -> { switch (response.getStatusCode()) { case Response.SC_OK: return FormRecordSet.fromJson(Json.parse(response.getText())); case Response.SC_NOT_FOUND: case Response.SC_FORBIDDEN: return new FormRecordSet(formId.asString()); default: throw new ApiException(response.getStatusCode()); } }); }
@Nullable @Override public List<TypedFormRecord> apply(@Nullable Void aVoid) { List<TypedFormRecord> instances = Lists.newArrayList(); for (FormRecord record : records.get().getRecords()) { instances.add(TypedFormRecord.toTypedFormRecord(subFormClass.get(), record)); } return instances; } });
public static FormRecordSet fromJson(JsonValue jsonObject) { FormRecordSet model = new FormRecordSet(); model.formId = JsonParsing.toNullableString(jsonObject.get("formId")); model.records = FormRecord.fromJsonArray(jsonObject.get("records")); return model; }
@Override public Promise<FormRecordSet> getRecords(String formId, String parentId) { FormStorageProvider catalog = newCatalog(); Optional<FormStorage> collection = catalog.getForm(ResourceId.valueOf(formId)); JsonValue recordArray = Json.createArray(); if(collection.isPresent()) { if(collection.get() instanceof HrdFormStorage) { HrdFormStorage hrdForm = (HrdFormStorage) collection.get(); Iterable<FormRecord> records = hrdForm.getSubRecords(ResourceId.valueOf(parentId)); for (FormRecord record : records) { recordArray.add(record.toJson()); } } } JsonValue object = createObject(); object.put("formId", formId); object.put("records", recordArray); return Promise.resolved(FormRecordSet.fromJson(object)); }
@Override public Promise<FormRecordSet> getRecords(String formId, String parentId) { if(!connected) { return offlineResult(); } Optional<FormStorage> form = storageProvider.getForm(ResourceId.valueOf(formId)); if(!form.isPresent()) { return Promise.rejected(new RuntimeException("No such form")); } FormStorage formStorage = form.get(); return Promise.resolved(new FormRecordSet(form.get().getFormClass().getId(), formStorage.getSubRecords(ResourceId.valueOf(parentId)))); }
@Override public Promise<List<FormRecord>> execute(ActivityInfoClientAsync client) { return client.getRecords(formId, parentId).then(set -> set.getRecords()); }