/** * Creates the summary table. * * @throws IOException if there is a problem with screen I/O * @throws LDAPException if there is a problem getting information out to the directory * @throws DecodeException if there is a problem with the encoding */ private void printSummaryTable() throws LDAPException, IOException, DecodeException { List<TaskEntry> entries = taskClient.getTaskEntries(); if (!entries.isEmpty()) { TableBuilder table = new TableBuilder(); Map<String, TaskEntry> mapIdToEntry = new TreeMap<>(); for (TaskEntry entry : entries) { String taskId = entry.getId(); if (taskId != null) { mapIdToEntry.put(taskId, entry); } } table.appendHeading(INFO_TASKINFO_FIELD_ID.get()); table.appendHeading(INFO_TASKINFO_FIELD_TYPE.get()); table.appendHeading(INFO_TASKINFO_FIELD_STATUS.get()); for (String taskId : mapIdToEntry.keySet()) { TaskEntry entryWrapper = mapIdToEntry.get(taskId); table.startRow(); table.appendCell(taskId); table.appendCell(entryWrapper.getType()); table.appendCell(entryWrapper.getState()); } StringWriter sw = new StringWriter(); TextTablePrinter tablePrinter = new TextTablePrinter(sw); tablePrinter.setIndentWidth(INDENT); tablePrinter.setTotalWidth(80); table.print(tablePrinter); getOutputStream().println(LocalizableMessage.raw(sw.getBuffer())); } else { getOutputStream().println(INFO_TASKINFO_NO_TASKS.get()); getOutputStream().println(); } }
/** * Creates the summary table. * * @return list of strings of IDs of all the tasks in the table in order of the indexes printed in * the table * @throws IOException if there is a problem with screen I/O * @throws LDAPException if there is a problem getting information out to the directory * @throws DecodeException if there is a problem with the encoding */ private Menu<Void> getSummaryMenu() throws LDAPException, IOException, DecodeException { List<String> taskIds = new ArrayList<>(); List<Integer> cancelableIndices = new ArrayList<>(); List<TaskEntry> entries = taskClient.getTaskEntries(); MenuBuilder<Void> menuBuilder = new MenuBuilder<>(this); if (!entries.isEmpty()) { Map<String, TaskEntry> mapIdToEntry = new TreeMap<>(); for (TaskEntry entry : entries) { String taskId = entry.getId(); if (taskId != null) { mapIdToEntry.put(taskId, entry); } } menuBuilder.setColumnHeadings( INFO_TASKINFO_FIELD_ID.get(), INFO_TASKINFO_FIELD_TYPE.get(), INFO_TASKINFO_FIELD_STATUS.get()); menuBuilder.setColumnWidths(null, null, 0); int index = 0; for (final String taskId : mapIdToEntry.keySet()) { taskIds.add(taskId); final TaskEntry taskEntry = mapIdToEntry.get(taskId); menuBuilder.addNumberedOption( LocalizableMessage.raw(taskEntry.getId()), new TaskDrilldownMenu(taskId), taskEntry.getType(), taskEntry.getState()); index++; if (taskEntry.isCancelable()) { cancelableIndices.add(index); } } } else { getOutputStream().println(INFO_TASKINFO_NO_TASKS.get()); getOutputStream().println(); } menuBuilder.addCharOption( INFO_TASKINFO_CMD_REFRESH_CHAR.get(), INFO_TASKINFO_CMD_REFRESH.get(), new PrintSummaryTop()); if (!cancelableIndices.isEmpty()) { menuBuilder.addCharOption( INFO_TASKINFO_CMD_CANCEL_CHAR.get(), INFO_TASKINFO_CMD_CANCEL.get(), new CancelTaskTop(taskIds, cancelableIndices)); } menuBuilder.addQuitOption(); return menuBuilder.toMenu(); }