mirror of
https://github.com/octoleo/plantuml.git
synced 2024-11-26 14:56:28 +00:00
Merge pull request #680 from matthew16550/PSystemUtils
Enable cmapx file creation for Board, Mindmap, Network, Timing & WBS diagrams
This commit is contained in:
commit
2a3ecbb72e
@ -44,7 +44,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ActivityDiagram3;
|
|
||||||
import net.sourceforge.plantuml.core.Diagram;
|
import net.sourceforge.plantuml.core.Diagram;
|
||||||
import net.sourceforge.plantuml.core.ImageData;
|
import net.sourceforge.plantuml.core.ImageData;
|
||||||
import net.sourceforge.plantuml.cucadiagram.CucaDiagram;
|
import net.sourceforge.plantuml.cucadiagram.CucaDiagram;
|
||||||
@ -91,30 +90,7 @@ public class PSystemUtils {
|
|||||||
return createFilesHtml((CucaDiagram) system, suggestedFile);
|
return createFilesHtml((CucaDiagram) system, suggestedFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
final FileImageData fileImageData;
|
return exportDiagramsDefault(system, suggestedFile, fileFormatOption);
|
||||||
|
|
||||||
if (system instanceof CucaDiagram) {
|
|
||||||
fileImageData = exportDiagramsCuca((CucaDiagram) system, suggestedFile, fileFormatOption);
|
|
||||||
}
|
|
||||||
else if (system instanceof GanttDiagram) {
|
|
||||||
fileImageData = exportDiagramsGantt2((GanttDiagram) system, suggestedFile, fileFormatOption);
|
|
||||||
}
|
|
||||||
else if (system instanceof ActivityDiagram3) {
|
|
||||||
fileImageData = exportDiagramsActivityDiagram3((ActivityDiagram3) system, suggestedFile, fileFormatOption);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
fileImageData = exportDiagramsDefault(system, suggestedFile, fileFormatOption);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fileImageData == null) {
|
|
||||||
return emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (system instanceof TitledDiagram && fileFormatOption.getFileFormat() == FileFormat.PNG) {
|
|
||||||
return splitPng((TitledDiagram) system, suggestedFile, fileImageData, fileFormatOption);
|
|
||||||
}
|
|
||||||
|
|
||||||
return singletonList(fileImageData);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<FileImageData> exportDiagramsNewpaged(NewpagedDiagram system, SuggestedFile suggestedFile,
|
private static List<FileImageData> exportDiagramsNewpaged(NewpagedDiagram system, SuggestedFile suggestedFile,
|
||||||
@ -158,53 +134,6 @@ public class PSystemUtils {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static private FileImageData exportDiagramsDefault(Diagram system, SuggestedFile suggestedFile,
|
|
||||||
FileFormatOption fileFormat) throws IOException {
|
|
||||||
if (suggestedFile.getFile(0).exists() && suggestedFile.getFile(0).isDirectory()) {
|
|
||||||
throw new IllegalArgumentException("File is a directory " + suggestedFile);
|
|
||||||
}
|
|
||||||
OutputStream os = null;
|
|
||||||
ImageData imageData = null;
|
|
||||||
try {
|
|
||||||
if (PSystemUtils.canFileBeWritten(suggestedFile.getFile(0)) == false) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
os = suggestedFile.getFile(0).createBufferedOutputStream();
|
|
||||||
// system.exportDiagram(os, null, 0, fileFormat);
|
|
||||||
imageData = system.exportDiagram(os, 0, fileFormat);
|
|
||||||
} finally {
|
|
||||||
if (os != null) {
|
|
||||||
os.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new FileImageData(suggestedFile.getFile(0), imageData);
|
|
||||||
}
|
|
||||||
|
|
||||||
static private FileImageData exportDiagramsActivityDiagram3(ActivityDiagram3 system,
|
|
||||||
SuggestedFile suggestedFile, FileFormatOption fileFormat) throws IOException {
|
|
||||||
if (suggestedFile.getFile(0).exists() && suggestedFile.getFile(0).isDirectory()) {
|
|
||||||
throw new IllegalArgumentException("File is a directory " + suggestedFile);
|
|
||||||
}
|
|
||||||
OutputStream os = null;
|
|
||||||
ImageData cmap = null;
|
|
||||||
ImageData imageData = null;
|
|
||||||
try {
|
|
||||||
if (PSystemUtils.canFileBeWritten(suggestedFile.getFile(0)) == false) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
os = suggestedFile.getFile(0).createBufferedOutputStream();
|
|
||||||
imageData = cmap = system.exportDiagram(os, 0, fileFormat);
|
|
||||||
} finally {
|
|
||||||
if (os != null) {
|
|
||||||
os.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (cmap != null && cmap.containsCMapData()) {
|
|
||||||
system.exportCmap(suggestedFile, 0, cmap);
|
|
||||||
}
|
|
||||||
return new FileImageData(suggestedFile.getFile(0), imageData);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<FileImageData> exportDiagramsSequence(SequenceDiagram system, SuggestedFile suggestedFile,
|
private static List<FileImageData> exportDiagramsSequence(SequenceDiagram system, SuggestedFile suggestedFile,
|
||||||
FileFormatOption fileFormat) throws IOException {
|
FileFormatOption fileFormat) throws IOException {
|
||||||
final List<FileImageData> result = new ArrayList<>();
|
final List<FileImageData> result = new ArrayList<>();
|
||||||
@ -231,56 +160,6 @@ public class PSystemUtils {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static private FileImageData exportDiagramsCuca(CucaDiagram system, SuggestedFile suggestedFile,
|
|
||||||
FileFormatOption fileFormat) throws IOException {
|
|
||||||
if (suggestedFile.getFile(0).exists() && suggestedFile.getFile(0).isDirectory()) {
|
|
||||||
throw new IllegalArgumentException("File is a directory " + suggestedFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
ImageData cmap = null;
|
|
||||||
OutputStream os = null;
|
|
||||||
try {
|
|
||||||
if (PSystemUtils.canFileBeWritten(suggestedFile.getFile(0)) == false) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
// System.err.println("FOO11=" + suggestedFile);
|
|
||||||
// os = SecurityUtils.BufferedOutputStream(suggestedFile));
|
|
||||||
os = new NamedOutputStream(suggestedFile.getFile(0));
|
|
||||||
cmap = system.exportDiagram(os, 0, fileFormat);
|
|
||||||
} finally {
|
|
||||||
if (os != null) {
|
|
||||||
os.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (cmap != null && cmap.containsCMapData()) {
|
|
||||||
system.exportCmap(suggestedFile, 0, cmap);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new FileImageData(suggestedFile.getFile(0), cmap);
|
|
||||||
}
|
|
||||||
|
|
||||||
static private FileImageData exportDiagramsGantt2(GanttDiagram system, SuggestedFile suggestedFile,
|
|
||||||
FileFormatOption fileFormat) throws IOException {
|
|
||||||
if (suggestedFile.getFile(0).exists() && suggestedFile.getFile(0).isDirectory()) {
|
|
||||||
throw new IllegalArgumentException("File is a directory " + suggestedFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
ImageData cmap = null;
|
|
||||||
OutputStream os = null;
|
|
||||||
try {
|
|
||||||
if (PSystemUtils.canFileBeWritten(suggestedFile.getFile(0)) == false) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
os = new NamedOutputStream(suggestedFile.getFile(0));
|
|
||||||
cmap = system.exportDiagram(os, 0, fileFormat);
|
|
||||||
} finally {
|
|
||||||
if (os != null) {
|
|
||||||
os.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new FileImageData(suggestedFile.getFile(0), cmap);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<FileImageData> createFilesHtml(CucaDiagram system, SuggestedFile suggestedFile)
|
private static List<FileImageData> createFilesHtml(CucaDiagram system, SuggestedFile suggestedFile)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
final String name = suggestedFile.getName();
|
final String name = suggestedFile.getName();
|
||||||
@ -290,7 +169,7 @@ public class PSystemUtils {
|
|||||||
return maker.create();
|
return maker.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<FileImageData> splitPng(TitledDiagram diagram, SuggestedFile pngFile, FileImageData fileImageData, FileFormatOption fileFormatOption)
|
private static List<FileImageData> splitPng(TitledDiagram diagram, SuggestedFile pngFile, ImageData imageData, FileFormatOption fileFormatOption)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
||||||
final List<SFile> files = new PngSplitter(
|
final List<SFile> files = new PngSplitter(
|
||||||
@ -306,9 +185,42 @@ public class PSystemUtils {
|
|||||||
|
|
||||||
final List<FileImageData> result = new ArrayList<>();
|
final List<FileImageData> result = new ArrayList<>();
|
||||||
for (SFile f : files) {
|
for (SFile f : files) {
|
||||||
result.add(new FileImageData(f, fileImageData.getImageData()));
|
result.add(new FileImageData(f, imageData));
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static List<FileImageData> exportDiagramsDefault(Diagram system, SuggestedFile suggestedFile,
|
||||||
|
FileFormatOption fileFormatOption) throws IOException {
|
||||||
|
|
||||||
|
final SFile outputFile = suggestedFile.getFile(0);
|
||||||
|
|
||||||
|
if (outputFile.isDirectory()) {
|
||||||
|
throw new IllegalArgumentException("File is a directory " + suggestedFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!canFileBeWritten(outputFile)) {
|
||||||
|
return emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
final ImageData imageData;
|
||||||
|
|
||||||
|
try (OutputStream os = outputFile.createBufferedOutputStream()) {
|
||||||
|
imageData = system.exportDiagram(os, 0, fileFormatOption);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (imageData == null) {
|
||||||
|
return emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (imageData.containsCMapData() && system instanceof UmlDiagram) {
|
||||||
|
((UmlDiagram) system).exportCmap(suggestedFile, 0, imageData);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (system instanceof TitledDiagram && fileFormatOption.getFileFormat() == FileFormat.PNG) {
|
||||||
|
return splitPng((TitledDiagram) system, suggestedFile, imageData, fileFormatOption);
|
||||||
|
}
|
||||||
|
|
||||||
|
return singletonList(new FileImageData(outputFile, imageData));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user