*/
public MenuResult<TaskEntry> invoke(ManageTasks app)
throws CLIException
{
Message m = null;
TaskEntry taskEntry = null;
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());
if (TaskState.isRecurring(taskEntry.getTaskState())) {
table.startRow();
table.appendCell(INFO_TASKINFO_FIELD_SCHEDULED_START.get());
m = taskEntry.getScheduleTab();
table.appendCell(m);
} else {
table.startRow();
table.appendCell(INFO_TASKINFO_FIELD_SCHEDULED_START.get());
m = taskEntry.getScheduledStartTime();
if (m == null || m.equals(Message.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(Message.raw(sw.getBuffer().toString()));
// Create a table for the task options
table = new TableBuilder();
table.appendHeading(INFO_TASKINFO_OPTIONS.get(taskEntry.getType()));
Map<Message,List<String>> taskSpecificAttrs =
taskEntry.getTaskSpecificAttributeValuePairs();
for (Message attrName : taskSpecificAttrs.keySet()) {
table.startRow();
table.appendCell(attrName);
List<String> values = taskSpecificAttrs.get(attrName);
if (values.size() > 0) {
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(Message.raw(sw.getBuffer().toString()));
// Print the last log message if any
List<Message> logs = taskEntry.getLogMessages();
if (logs != null && logs.size() > 0) {
// Create a table for the last log entry
table = new TableBuilder();
table.appendHeading(INFO_TASKINFO_FIELD_LAST_LOG.get());