in commands/src/main/java/org/jclouds/karaf/commands/table/BasicShellTable.java [56:102]
public void display(PrintStream out, boolean showHeaders, boolean showData) {
List<String[]> table = new ArrayList<String[]>();
Iterable iterableData = null;
//If display data is an iterable use as is, else wrap data inside a collection.
if (Iterable.class.isAssignableFrom(displayData.getClass())) {
iterableData = (Iterable) displayData;
} else {
iterableData = Lists.newArrayList(displayData);
}
//Populate table
for (Object obj : iterableData) {
String[] values = new String[displayExpression.size()];
for (int i=0; i < displayExpression.size(); i++) {
values[i] = evaluate(obj, displayExpression.get(i));
}
table.add(values);
}
List<Integer> sizes = calculateSizes(headers, table);
if (!Strings.isNullOrEmpty(sortBy) && headers.contains(sortBy))
Collections.sort(table, new Comparator<String[]>() {
@Override
public int compare(String[] left, String[] right) {
int column = headers.indexOf(sortBy);
String leftValue = left[column];
String rightValue = right[column];
return comparator.compare(leftValue,rightValue);
}
});
String dataFormat = getStringFormat(sizes, alignments);
//Check if we need to display headers
if (showHeaders) {
out.println(String.format(dataFormat, headers.toArray(new String[headers.size()])));
}
//Check if we need and can display data.
if (showData && table != null) {
for (String[] row : table) {
//Populate display data
out.println(String.format(dataFormat, row));
}
}
}