use of io.kroki.server.format.FileFormat 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 io.kroki.server.format.FileFormat in project kroki by yuzutech.
the class DiagramHandler method validate.
// delegate
public FileFormat validate(String serviceName, String outputFormat) {
FileFormat fileFormat = FileFormat.get(outputFormat);
List<FileFormat> supportedFormats = service.getSupportedFormats();
if (fileFormat == null || !supportedFormats.contains(fileFormat)) {
throw new UnsupportedFormatException(outputFormat, serviceName, supportedFormats);
}
return fileFormat;
}
use of io.kroki.server.format.FileFormat in project kroki by yuzutech.
the class DiagramHandler method getOutputFileFormatFromAcceptHeaders.
private FileFormat getOutputFileFormatFromAcceptHeaders(String serviceName, RoutingContext routingContext) {
List<String> mimeTypes = routingContext.parsedHeaders().accept().stream().sorted(Comparator.comparingInt(ParsedHeaderValue::weightedOrder)).map(ParsedHeaderValue::value).collect(Collectors.toList());
List<FileFormat> supportedFormats = service.getSupportedFormats();
if (mimeTypes.isEmpty()) {
throw new UndefinedOutputFormatException(serviceName, supportedFormats);
}
for (String mimeType : mimeTypes) {
FileFormat fileFormat = ContentType.get(mimeType);
if (fileFormat != null && supportedFormats.contains(fileFormat)) {
return fileFormat;
}
}
throw new UnsupportedMimeTypeException(mimeTypes, serviceName, supportedFormats);
}
Aggregations