diff options
author | Christian W. Damus | 2015-05-26 15:07:41 +0000 |
---|---|---|
committer | Christian W. Damus | 2015-05-26 16:13:41 +0000 |
commit | 1ab54f51adad5d77caa331cb9f6a1ca1f7c9fe2b (patch) | |
tree | ae79bac3b9c4bc5b379eaacc400192257fb152f0 /plugins/developer | |
parent | 4e199a413f3091232f1786d1c93222450f7b32c2 (diff) | |
download | org.eclipse.papyrus-1ab54f51adad5d77caa331cb9f6a1ca1f7c9fe2b.tar.gz org.eclipse.papyrus-1ab54f51adad5d77caa331cb9f6a1ca1f7c9fe2b.tar.xz org.eclipse.papyrus-1ab54f51adad5d77caa331cb9f6a1ca1f7c9fe2b.zip |
Bug 468079: [Developer] Design documentation generator limitations
https://bugs.eclipse.org/bugs/show_bug.cgi?id=468079
Ensure unique file names for images generated from diagrams that have the same name.
Diffstat (limited to 'plugins/developer')
-rw-r--r-- | plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java b/plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java index 7aa64ac7a22..f0151a6c91c 100644 --- a/plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java +++ b/plugins/developer/org.eclipse.papyrus.uml.developer.mde/src/org/eclipse/papyrus/uml/developper/mde/command/CreateDocumentModelCommand.java @@ -18,6 +18,7 @@ import java.io.File; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
@@ -74,8 +75,12 @@ import org.eclipse.uml2.uml.util.UMLUtil; import com.google.common.base.Function;
import com.google.common.base.Joiner;
+import com.google.common.base.Strings;
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Maps;
/**
* this command transform a model to document model
@@ -101,6 +106,8 @@ public class CreateDocumentModelCommand extends RecordingCommand { private LinkUtil linkUtil;
+ private BiMap<Diagram, String> diagramFileNames = HashBiMap.create();
+
/**
*
* Constructor to transform model into document model
@@ -189,6 +196,8 @@ public class CreateDocumentModelCommand extends RecordingCommand { // Generate content of the Table of Contents package
generateTableOfContents(documentModel);
+
+ diagramFileNames.clear();
}
@@ -880,7 +889,7 @@ public class CreateDocumentModelCommand extends RecordingCommand { * @param currentDiagram
*/
protected void generateImg(CopyToImageUtil copyImageUtil, Package currentModel, Diagram currentDiagram) {
- Path imagePath = new Path("" + directoryPath + File.separator + "imgDOC" + File.separator + currentDiagram.getName().replaceAll(" ", "_") + ".png"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+ Path imagePath = new Path("" + directoryPath + File.separator + "imgDOC" + File.separator + getDiagramImageFileName(currentDiagram)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
try {
copyImageUtil.copyToImage(currentDiagram,
@@ -905,6 +914,21 @@ public class CreateDocumentModelCommand extends RecordingCommand { commentImg.setBody(currentDiagram.getName());
}
+ protected String getDiagramImageFileName(Diagram diagram) {
+ String result = diagramFileNames.get(diagram);
+
+ if (result == null) {
+ String base = Strings.nullToEmpty(diagram.getName()).replaceAll(" ", "_");
+ result = base;
+ for (int i = 1; diagramFileNames.containsValue(result); i++) {
+ result = base + '_' + i;
+ }
+ diagramFileNames.put(diagram, result);
+ }
+
+ return result + ".png";
+ }
+
/**
*
* @param source
|