package org.openehealth.ipf.commons.utils.couch; import java.util.ArrayList; import java.util.List; public class QueryResult<T extends ResultRow> { private final JsonObject result; private final ResultRowBuilder<T> resultRowBuilder; public QueryResult(JsonObject result, ResultRowBuilder<T> resultRowBuilder) { this.result = result; this.resultRowBuilder = resultRowBuilder; } public int getTotalRows() { return getParam("total_rows", Integer.class); } public int getOffset() { return getParam("offset", Integer.class); } public List<T> getRows() { List<JsonObject> objList = result.getArray("rows").toList(); List<T> rowList = new ArrayList<T>(objList.size()); for (JsonObject obj : objList) { rowList.add(resultRowBuilder.build(obj)); } return rowList; } public <T> T getParam(String key, Class<T> type) { if (!result.hasKey(key)) { throw new IllegalArgumentException("Undefined parameter: $key"); } return result.toJava(key, type); } public String toString() { return result.toString(); } }