use of com.structurizr.export.plantuml.StructurizrPlantUMLExporter in project kroki by yuzutech.
the class Structurizr method convert.
static byte[] convert(String source, FileFormat fileFormat, StructurizrPlantUMLExporter structurizrPlantUMLExporter, JsonObject options) {
StructurizrDslParser parser = new StructurizrDslParser();
try {
parser.parse(source);
Collection<View> views = parser.getWorkspace().getViews().getViews();
if (views.isEmpty()) {
throw new BadRequestException("Empty diagram, does not have any view.");
}
View selectedView;
String viewKey = options.getString("view-key");
if (viewKey != null && !viewKey.trim().isEmpty()) {
Optional<View> viewFound = views.stream().filter(view -> Objects.equals(view.getKey(), viewKey)).findFirst();
if (!viewFound.isPresent()) {
throw new BadRequestException("Unable to find view for key: " + viewKey + ".");
}
selectedView = viewFound.get();
} else {
// take the first view if not specified
selectedView = views.iterator().next();
}
final Diagram diagram;
if (selectedView instanceof DynamicView) {
diagram = structurizrPlantUMLExporter.export((DynamicView) selectedView);
} else if (selectedView instanceof DeploymentView) {
diagram = structurizrPlantUMLExporter.export((DeploymentView) selectedView);
} else if (selectedView instanceof ComponentView) {
diagram = structurizrPlantUMLExporter.export((ComponentView) selectedView);
} else if (selectedView instanceof ContainerView) {
diagram = structurizrPlantUMLExporter.export((ContainerView) selectedView);
} else if (selectedView instanceof SystemContextView) {
diagram = structurizrPlantUMLExporter.export((SystemContextView) selectedView);
} else if (selectedView instanceof SystemLandscapeView) {
diagram = structurizrPlantUMLExporter.export((SystemLandscapeView) selectedView);
} else {
throw new BadRequestException("View type is not supported: " + selectedView.getClass().getSimpleName() + ", must be a DynamicView, DeploymentView, ComponentView, ContainerView, SystemContextView or SystemLandscapeView.");
}
return Plantuml.convert(diagram.getDefinition(), fileFormat, new JsonObject());
} catch (StructurizrDslParserException e) {
String cause = e.getMessage();
final String message;
if (cause != null && !cause.trim().isEmpty()) {
message = "Unable to parse the Structurizr DSL. " + cause + ".";
} else {
message = "Unable to parse the Structurizr DSL.";
}
throw new BadRequestException(message, e);
}
}
use of com.structurizr.export.plantuml.StructurizrPlantUMLExporter in project kroki by yuzutech.
the class StructurizrServiceTest method should_convert_getting_started_example.
@Test
public void should_convert_getting_started_example() throws IOException {
if (Files.isExecutable(Paths.get("/usr/bin/dot"))) {
String source = read("./gettingstarted.structurizr");
String expected = read("./gettingstarted.expected.svg");
byte[] result = Structurizr.convert(source, FileFormat.SVG, new StructurizrPlantUMLExporter(), new JsonObject());
assertThat(stripComments(new String(result))).isEqualToIgnoringNewLines(expected);
} else {
logger.info("/usr/bin/dot not found, skipping test.");
}
}
use of com.structurizr.export.plantuml.StructurizrPlantUMLExporter in project kroki by yuzutech.
the class StructurizrServiceTest method should_throw_exception_when_view_does_not_exist.
@Test
public void should_throw_exception_when_view_does_not_exist() throws IOException {
String source = read("./bigbank.structurizr");
JsonObject options = new JsonObject();
options.put("view-key", "NonExisting");
assertThatThrownBy(() -> Structurizr.convert(source, FileFormat.SVG, new StructurizrPlantUMLExporter(), options)).isInstanceOf(BadRequestException.class).hasMessage("Unable to find view for key: NonExisting.");
}
use of com.structurizr.export.plantuml.StructurizrPlantUMLExporter in project kroki by yuzutech.
the class StructurizrServiceTest method should_convert_bigbank_example_systemcontext_view.
@Test
public void should_convert_bigbank_example_systemcontext_view() throws IOException {
if (Files.isExecutable(Paths.get("/usr/bin/dot"))) {
String source = read("./bigbank.structurizr");
String expected = read("./bigbank.systemcontext.expected.svg");
JsonObject options = new JsonObject();
options.put("view-key", "SystemContext");
byte[] result = Structurizr.convert(source, FileFormat.SVG, new StructurizrPlantUMLExporter(), options);
assertThat(stripComments(new String(result))).isEqualToIgnoringNewLines(expected);
} else {
logger.info("/usr/bin/dot not found, skipping test.");
}
}
use of com.structurizr.export.plantuml.StructurizrPlantUMLExporter in project kroki by yuzutech.
the class StructurizrServiceTest method should_convert_bigbank_example_container_view.
@Test
public void should_convert_bigbank_example_container_view() throws IOException {
if (Files.isExecutable(Paths.get("/usr/bin/dot"))) {
String source = read("./bigbank.structurizr");
String expected = read("./bigbank.containers.expected.svg");
JsonObject options = new JsonObject();
options.put("view-key", "Containers");
byte[] result = Structurizr.convert(source, FileFormat.SVG, new StructurizrPlantUMLExporter(), options);
assertThat(stripComments(new String(result))).isEqualToIgnoringNewLines(expected);
} else {
logger.info("/usr/bin/dot not found, skipping test.");
}
}
Aggregations