package com.neverwinterdp.scribengin.client.shell;
import java.util.List;
import com.neverwinterdp.scribengin.dataflow.DataflowDescriptor;
import com.neverwinterdp.scribengin.dataflow.DataflowTaskDescriptor;
import com.neverwinterdp.scribengin.dataflow.DataflowTaskReport;
import com.neverwinterdp.scribengin.dataflow.worker.DataflowTaskExecutorDescriptor;
import com.neverwinterdp.util.text.DateUtil;
import com.neverwinterdp.util.text.TabularFormater;
import com.neverwinterdp.vm.VMDescriptor;
public class Formater {
static public class DataflowList {
List<DataflowDescriptor> descriptors;
public DataflowList(List<DataflowDescriptor> descriptors) {
this.descriptors = descriptors;
}
public String format(String title) {
return format(title, "");
}
public String format(String title, String ident) {
TabularFormater formater = new TabularFormater("Name", "App Home", "Workers", "Executor Per Worker");
formater.setIndent(" ");
for (int i = 0; i < descriptors.size(); i++) {
DataflowDescriptor descriptor = descriptors.get(i);
formater.addRow(
descriptor.getName(),
descriptor.getDataflowAppHome(),
descriptor.getNumberOfWorkers(),
descriptor.getNumberOfExecutorsPerWorker()
);
}
formater.setTitle(title);
return formater.getFormatText();
}
}
static public class VmList {
private List<VMDescriptor> descriptors;
String leaderPath;
public VmList(List<VMDescriptor> descriptors, String leaderPath) {
this.descriptors = descriptors;
this.leaderPath = leaderPath;
}
public String format(String title) {
return format(title, "");
}
public String format(String title, String ident) {
TabularFormater formater =
new TabularFormater("name", "CPU Cores", "Memory", "Path", "is Leader");
formater.setIndent(" ");
for (VMDescriptor descriptor : descriptors) {
formater.addRow(descriptor.getVmConfig().getName(),
descriptor.getCpuCores(),
descriptor.getMemory(),
descriptor.getStoredPath(),
descriptor.getStoredPath().equals(leaderPath));
}
formater.setTitle(title);
return formater.getFormatText();
}
}
public static class DataFlowTaskDescriptorList {
private List<DataflowTaskDescriptor> descriptors;
public DataFlowTaskDescriptorList(List<DataflowTaskDescriptor> descriptors) {
this.descriptors = descriptors;
}
public String format(String title) {
return format(title, "");
}
public String format(String title, String ident) {
TabularFormater formater = new TabularFormater("Id", "Scribe", "Status");
formater.setIndent(" ");
for (DataflowTaskDescriptor descriptor : descriptors) {
formater.addRow(
descriptor.getId(),
descriptor.getScribe(),
descriptor.getStatus()
);
}
formater.setTitle(title);
return formater.getFormatText();
}
}
public static class DataflowTaskReportList {
private List<DataflowTaskReport> descriptors;
public DataflowTaskReportList(List<DataflowTaskReport> descriptors) {
this.descriptors = descriptors;
}
public String format(String title, String indent) {
TabularFormater formater = new TabularFormater("Process Count", "Commit Count", "Start Time",
"Finish Time");
formater.setIndent(indent);
for (DataflowTaskReport descriptor : descriptors) {
formater.addRow(
descriptor.getProcessCount(),
descriptor.getCommitProcessCount(),
DateUtil.asCompactDateTime(descriptor.getStartTime()),
DateUtil.asCompactDateTime(descriptor.getFinishTime())
);
}
formater.setTitle(title);
return formater.getFormatText();
}
}
public static class ExecutorList {
private List<DataflowTaskExecutorDescriptor> descriptors;
public ExecutorList(List<DataflowTaskExecutorDescriptor> descriptors) {
this.descriptors = descriptors;
}
public String format(String title) {
return format(title, "");
}
public String format(String title, String indent) {
TabularFormater formater = new TabularFormater("Id", "Status", "Assigned Tasks");
formater.setIndent(indent);
for (DataflowTaskExecutorDescriptor descriptor : descriptors) {
formater.addRow(
descriptor.getId(),
descriptor.getStatus(),
descriptor.getAssignedTaskIds()
);
}
formater.setTitle(title);
return formater.getFormatText();
}
}
}