/** {@inheritDoc} */ @Override protected MenuResult<TaskEntry> invoke(ManageTasks app) throws ClientException { TaskEntry taskEntry = null; try { taskEntry = app.getTaskClient().getTaskEntry(taskId); List<LocalizableMessage> logs = taskEntry.getLogMessages(); app.getOutputStream().println(); // Create a table for the last log entry TableBuilder table = new TableBuilder(); table.appendHeading(INFO_TASKINFO_FIELD_LOG.get()); if (logs != null && !logs.isEmpty()) { for (LocalizableMessage log : logs) { table.startRow(); table.appendCell(log); } } else { table.startRow(); table.appendCell(INFO_TASKINFO_NONE.get()); } StringWriter sw = new StringWriter(); TextTablePrinter tablePrinter = new TextTablePrinter(sw); tablePrinter.setTotalWidth(80); tablePrinter.setIndentWidth(INDENT); tablePrinter.setColumnWidth(0, 0); table.print(tablePrinter); app.getOutputStream().println(LocalizableMessage.raw(sw.getBuffer().toString())); app.getOutputStream().println(); } catch (Exception e) { app.println(ERR_TASKINFO_ACCESSING_LOGS.get(taskId, e.getMessage())); } return MenuResult.success(taskEntry); }
/** * 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(); } }
/** * Writes an attribute and associated values to the table. * * @param table of task details * @param fieldLabel of attribute * @param values of the attribute * @param noneLabel label for the value column when there are no values */ private void writeMultiValueCells( TableBuilder table, LocalizableMessage fieldLabel, List<?> values, LocalizableMessage noneLabel) { table.startRow(); table.appendCell(fieldLabel); if (values.isEmpty()) { table.appendCell(noneLabel); } else { table.appendCell(values.get(0)); } if (values.size() > 1) { for (int i = 1; i < values.size(); i++) { table.startRow(); table.appendCell(); table.appendCell(values.get(i)); } } }
/** {@inheritDoc} */ @Override public MenuResult<TaskEntry> invoke(ManageTasks app) throws ClientException { LocalizableMessage m; TaskEntry taskEntry; try { taskEntry = app.getTaskClient().getTaskEntry(taskId); TableBuilder table = new TableBuilder(); table.appendHeading(INFO_TASKINFO_DETAILS.get()); table.startRow(); table.appendCell(INFO_TASKINFO_FIELD_ID.get()); table.appendCell(taskEntry.getId()); table.startRow(); table.appendCell(INFO_TASKINFO_FIELD_TYPE.get()); table.appendCell(taskEntry.getType()); table.startRow(); table.appendCell(INFO_TASKINFO_FIELD_STATUS.get()); table.appendCell(taskEntry.getState()); table.startRow(); table.appendCell(INFO_TASKINFO_FIELD_SCHEDULED_START.get()); if (TaskState.isRecurring(taskEntry.getTaskState())) { m = taskEntry.getScheduleTab(); table.appendCell(m); } else { m = taskEntry.getScheduledStartTime(); if (m == null || m.equals(LocalizableMessage.EMPTY)) { table.appendCell(INFO_TASKINFO_IMMEDIATE_EXECUTION.get()); } else { table.appendCell(m); } table.startRow(); table.appendCell(INFO_TASKINFO_FIELD_ACTUAL_START.get()); table.appendCell(taskEntry.getActualStartTime()); table.startRow(); table.appendCell(INFO_TASKINFO_FIELD_COMPLETION_TIME.get()); table.appendCell(taskEntry.getCompletionTime()); } writeMultiValueCells( table, INFO_TASKINFO_FIELD_DEPENDENCY.get(), taskEntry.getDependencyIds()); table.startRow(); table.appendCell(INFO_TASKINFO_FIELD_FAILED_DEPENDENCY_ACTION.get()); m = taskEntry.getFailedDependencyAction(); table.appendCell(m != null ? m : INFO_TASKINFO_NONE.get()); writeMultiValueCells( table, INFO_TASKINFO_FIELD_NOTIFY_ON_COMPLETION.get(), taskEntry.getCompletionNotificationEmailAddresses(), INFO_TASKINFO_NONE_SPECIFIED.get()); writeMultiValueCells( table, INFO_TASKINFO_FIELD_NOTIFY_ON_ERROR.get(), taskEntry.getErrorNotificationEmailAddresses(), INFO_TASKINFO_NONE_SPECIFIED.get()); StringWriter sw = new StringWriter(); TextTablePrinter tablePrinter = new TextTablePrinter(sw); tablePrinter.setTotalWidth(80); tablePrinter.setIndentWidth(INDENT); tablePrinter.setColumnWidth(1, 0); table.print(tablePrinter); app.getOutputStream().println(); app.getOutputStream().println(LocalizableMessage.raw(sw.getBuffer().toString())); // Create a table for the task options table = new TableBuilder(); table.appendHeading(INFO_TASKINFO_OPTIONS.get(taskEntry.getType())); Map<LocalizableMessage, List<String>> taskSpecificAttrs = taskEntry.getTaskSpecificAttributeValuePairs(); for (LocalizableMessage attrName : taskSpecificAttrs.keySet()) { table.startRow(); table.appendCell(attrName); List<String> values = taskSpecificAttrs.get(attrName); if (!values.isEmpty()) { table.appendCell(values.get(0)); } if (values.size() > 1) { for (int i = 1; i < values.size(); i++) { table.startRow(); table.appendCell(); table.appendCell(values.get(i)); } } } sw = new StringWriter(); tablePrinter = new TextTablePrinter(sw); tablePrinter.setTotalWidth(80); tablePrinter.setIndentWidth(INDENT); tablePrinter.setColumnWidth(1, 0); table.print(tablePrinter); app.getOutputStream().println(LocalizableMessage.raw(sw.getBuffer().toString())); // Print the last log message if any List<LocalizableMessage> logs = taskEntry.getLogMessages(); if (logs != null && !logs.isEmpty()) { // Create a table for the last log entry table = new TableBuilder(); table.appendHeading(INFO_TASKINFO_FIELD_LAST_LOG.get()); table.startRow(); table.appendCell(logs.get(logs.size() - 1)); sw = new StringWriter(); tablePrinter = new TextTablePrinter(sw); tablePrinter.setTotalWidth(80); tablePrinter.setIndentWidth(INDENT); tablePrinter.setColumnWidth(0, 0); table.print(tablePrinter); app.getOutputStream().println(LocalizableMessage.raw(sw.getBuffer().toString())); } app.getOutputStream().println(); } catch (Exception e) { app.println(ERR_TASKINFO_RETRIEVING_TASK_ENTRY.get(taskId, e.getMessage())); return MenuResult.again(); } return MenuResult.success(taskEntry); }