in src/main/java/com/googlesource/gerrit/plugins/verifystatus/VerifyStatusQueryShell.java [424:502]
private void showResultSetJson(
final ResultSet rs, boolean alreadyOnRow, long start, Function... show) throws SQLException {
JsonArray collector = new JsonArray();
final ResultSetMetaData meta = rs.getMetaData();
final Function[] columnMap;
if (show != null && 0 < show.length) {
columnMap = show;
} else {
final int colCnt = meta.getColumnCount();
columnMap = new Function[colCnt];
for (int colId = 0; colId < colCnt; colId++) {
final int p = colId + 1;
final String name = meta.getColumnLabel(p);
columnMap[colId] = new Identity(p, name);
}
}
int rowCnt = 0;
while (alreadyOnRow || rs.next()) {
final JsonObject row = new JsonObject();
final JsonObject cols = new JsonObject();
for (Function function : columnMap) {
String v = function.apply(rs);
if (v == null) {
continue;
}
cols.addProperty(function.name.toLowerCase(), v);
}
row.addProperty("type", "row");
row.add("columns", cols);
switch (outputFormat) {
case JSON:
println(row.toString());
break;
case JSON_SINGLE:
collector.add(row);
break;
case PRETTY:
default:
final JsonObject obj = new JsonObject();
obj.addProperty("type", "error");
obj.addProperty("message", "Unsupported Json variant");
println(obj.toString());
return;
}
alreadyOnRow = false;
rowCnt++;
}
JsonObject tail = null;
if (start != 0) {
tail = new JsonObject();
tail.addProperty("type", "query-stats");
tail.addProperty("rowCount", rowCnt);
final long ms = TimeUtil.nowMs() - start;
tail.addProperty("runTimeMilliseconds", ms);
}
switch (outputFormat) {
case JSON:
if (tail != null) {
println(tail.toString());
}
break;
case JSON_SINGLE:
if (tail != null) {
collector.add(tail);
}
println(collector.toString());
break;
case PRETTY:
default:
final JsonObject obj = new JsonObject();
obj.addProperty("type", "error");
obj.addProperty("message", "Unsupported Json variant");
println(obj.toString());
}
}