Java Code Examples for org.springframework.shell.table.TableModel#getRowCount()

The following examples show how to use org.springframework.shell.table.TableModel#getRowCount() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: StreamCommandTemplate.java    From spring-cloud-dataflow with Apache License 2.0 6 votes vote down vote up
/**
 * Verify the stream is listed in stream list.
 *
 * @param streamName the name of the stream
 * @param definition definition of the stream
 */
public void verifyExists(String streamName, String definition, boolean deployed) {
	CommandResult cr = shell.executeCommand("stream list");
	assertTrue("Failure.  CommandResult = " + cr.toString(), cr.isSuccess());

	Table table = (org.springframework.shell.table.Table) cr.getResult();
	TableModel model = table.getModel();
	Collection<String> statuses = deployed
			? Arrays.asList(DeploymentStateResource.DEPLOYED.getDescription(),
			DeploymentStateResource.DEPLOYING.getDescription())
			: Arrays.asList(DeploymentStateResource.UNDEPLOYED.getDescription());
	for (int row = 0; row < model.getRowCount(); row++) {
		if (streamName.equals(model.getValue(row, 0))
				&& definition.replace("\\\\", "\\").equals(model.getValue(row, 2))) {
			// TODO (Tzolov) CLASSIC-MODE-REMOVAL To compute an aggregated state the Info returned by the mocked
			// TODO SkipperClient.info() (in SkipperStreamDeployer#getStreamDeploymentState) must have a
			// TODO valid PlatformStatus
			// && statuses.contains(model.getValue(row, 2))) {
			return;
		}
	}
	fail("Stream named " + streamName + " does not exist");

}
 
Example 2
Source File: TableMatcher.java    From spring-cloud-dataflow with Apache License 2.0 5 votes vote down vote up
public static DiagnosingMatcher<Table> hasRowThat(Matcher<?>... cells) {
	return new DiagnosingMatcher<Table>() {
		@Override
		protected boolean matches(Object item, Description mismatchDescription) {
			TableModel model = ((Table) item).getModel();
			outer: for (int row = 0; row < model.getRowCount(); row++) {
				mismatchDescription.appendText("\nRow " + row + ": ");
				for (int col = 0; col < cells.length; col++) {
					mismatchDescription.appendText("\n  Column " + col + ": ");
					cells[col].describeMismatch(model.getValue(row, col), mismatchDescription);
					if (!cells[col].matches(model.getValue(row, col))) {
						continue outer;
					}
				}
				return true;
			}
			return false;
		}

		@Override
		public void describeTo(Description description) {
			description.appendText("a table having at least one row that\n");
			for (int col = 0; col < cells.length; col++) {
				description.appendText("column " + col + ": ");
				cells[col].describeTo(description);
				description.appendText("\n");
			}
		}
	};
}
 
Example 3
Source File: TaskCommandTemplate.java    From spring-cloud-dataflow with Apache License 2.0 5 votes vote down vote up
/**
 * Verify the task is listed in task list.
 *
 * @param taskName the name of the task
 * @param definition definition of the task
 */
public void verifyExists(String taskName, String definition) {
	CommandResult cr = shell.executeCommand("task list");
	assertTrue("Failure.  CommandResult = " + cr.toString(), cr.isSuccess());
	Table table = (Table) cr.getResult();
	TableModel model = table.getModel();
	for (int row = 0; row < model.getRowCount(); row++) {
		if (taskName.equals(model.getValue(row, 0))
				&& definition.replace("\\\\", "\\").equals(model.getValue(row, 1))) {
			return;
		}
	}
	fail("Task named " + taskName + " was not created");
}
 
Example 4
Source File: RuntimeCommands.java    From spring-cloud-dashboard with Apache License 2.0 4 votes vote down vote up
@CliCommand(value = LIST_APPS, help = "List runtime apps")
public Table list(
		@CliOption(key = "summary", help = "whether to hide app instance details",
				unspecifiedDefaultValue = "false", specifiedDefaultValue = "true") boolean summary,
		@CliOption(key = {"appId", "appIds"}, help = "app id(s) to display, also supports '<group>.*' pattern") String[] appIds) {

	Set<String> filter = null;
	if (appIds != null) {
		filter = new HashSet<>(Arrays.asList(appIds));
	}

	TableModelBuilder<Object> modelBuilder = new TableModelBuilder<>();
	if (!summary) {
		modelBuilder.addRow()
				.addValue("App Id / Instance Id")
				.addValue("Unit Status")
				.addValue("No. of Instances / Attributes");
	}
	else {
		modelBuilder.addRow()
				.addValue("App Id")
				.addValue("Unit Status")
				.addValue("No. of Instances");
	}

	// In detailed mode, keep track of app vs instance lines, to use
	// a different border style later.
	List<Integer> splits = new ArrayList<>();
	int line = 1;
	// Optimise for the single app case, which is likely less resource intensive on the server
	// than client side filtering
	Iterable<AppStatusResource> statuses;
	if (filter != null && filter.size() == 1 && !filter.iterator().next().endsWith(".*")) {
		statuses = Collections.singleton(runtimeOperations().status(filter.iterator().next()));
	}
	else {
		statuses = runtimeOperations().status();
	}
	for (AppStatusResource appStatusResource : statuses) {
		if (filter != null && !shouldRetain(filter, appStatusResource)) {
			continue;
		}
		modelBuilder.addRow()
				.addValue(appStatusResource.getDeploymentId())
				.addValue(appStatusResource.getState())
				.addValue(appStatusResource.getInstances().getContent().size());
		splits.add(line);
		line++;
		if (!summary) {
			for (AppInstanceStatusResource appInstanceStatusResource : appStatusResource.getInstances()) {
				modelBuilder.addRow()
						.addValue(appInstanceStatusResource.getInstanceId())
						.addValue(appInstanceStatusResource.getState())
						.addValue(appInstanceStatusResource.getAttributes());
				line++;
			}
		}
	}

	TableModel model = modelBuilder.build();
	final TableBuilder builder = new TableBuilder(model);
	DataFlowTables.applyStyle(builder);
	builder.on(column(0)).addAligner(middle)
			.on(column(1)).addAligner(middle)
			.on(column(1)).addAligner(center)
			// This will match the "number of instances" cells only
			.on(ofType(Integer.class)).addAligner(center);


	Tables.configureKeyValueRendering(builder, " = ");
	for (int i = 2; i < model.getRowCount(); i++) {
		if (splits.contains(i)) {
			builder.paintBorder(fancy_light, TOP).fromRowColumn(i, 0).toRowColumn(i + 1, model.getColumnCount());
		}
		else {
			builder.paintBorder(fancy_light_quadruple_dash, TOP).fromRowColumn(i, 0).toRowColumn(i + 1, model.getColumnCount());
		}
	}

	return builder.build();
}
 
Example 5
Source File: RuntimeCommands.java    From spring-cloud-dataflow with Apache License 2.0 4 votes vote down vote up
@CliCommand(value = LIST_APPS, help = "List runtime apps")
public Table list(
		@CliOption(key = "summary", help = "whether to hide app instance details", unspecifiedDefaultValue = "false", specifiedDefaultValue = "true") boolean summary,
		@CliOption(key = { "appId",
				"appIds" }, help = "app id(s) to display, also supports '<group>.*' pattern") String[] appIds) {

	Set<String> filter = null;
	if (appIds != null) {
		filter = new HashSet<>(Arrays.asList(appIds));
	}

	TableModelBuilder<Object> modelBuilder = new TableModelBuilder<>();
	if (!summary) {
		modelBuilder.addRow().addValue("App Id / Instance Id").addValue("Unit Status")
				.addValue("No. of Instances / Attributes");
	}
	else {
		modelBuilder.addRow().addValue("App Id").addValue("Unit Status").addValue("No. of Instances");
	}

	// In detailed mode, keep track of app vs instance lines, to use
	// a different border style later.
	List<Integer> splits = new ArrayList<>();
	int line = 1;
	// Optimise for the single app case, which is likely less resource intensive on
	// the server
	// than client side filtering
	Iterable<AppStatusResource> statuses;
	if (filter != null && filter.size() == 1 && !filter.iterator().next().endsWith(".*")) {
		statuses = Collections.singleton(runtimeOperations().status(filter.iterator().next()));
	}
	else {
		statuses = runtimeOperations().status();
	}
	for (AppStatusResource appStatusResource : statuses) {
		if (filter != null && !shouldRetain(filter, appStatusResource)) {
			continue;
		}
		modelBuilder.addRow().addValue(appStatusResource.getDeploymentId()).addValue(appStatusResource.getState())
				.addValue(appStatusResource.getInstances().getContent().size());
		splits.add(line);
		line++;
		if (!summary) {
			for (AppInstanceStatusResource appInstanceStatusResource : appStatusResource.getInstances()) {
				modelBuilder.addRow().addValue(appInstanceStatusResource.getInstanceId())
						.addValue(appInstanceStatusResource.getState())
						.addValue(appInstanceStatusResource.getAttributes());
				line++;
			}
		}
	}

	TableModel model = modelBuilder.build();
	final TableBuilder builder = new TableBuilder(model);
	DataFlowTables.applyStyle(builder);
	builder.on(CellMatchers.column(0)).addAligner(SimpleVerticalAligner.middle).on(CellMatchers.column(1)).addAligner(SimpleVerticalAligner.middle).on(CellMatchers.column(1)).addAligner(SimpleHorizontalAligner.center)
			// This will match the "number of instances" cells only
			.on(CellMatchers.ofType(Integer.class)).addAligner(SimpleHorizontalAligner.center);

	Tables.configureKeyValueRendering(builder, " = ");
	for (int i = 2; i < model.getRowCount(); i++) {
		if (splits.contains(i)) {
			builder.paintBorder(BorderStyle.fancy_light, BorderSpecification.TOP).fromRowColumn(i, 0).toRowColumn(i + 1, model.getColumnCount());
		}
		else {
			builder.paintBorder(BorderStyle.fancy_light_quadruple_dash, BorderSpecification.TOP).fromRowColumn(i, 0).toRowColumn(i + 1,
					model.getColumnCount());
		}
	}

	return builder.build();
}