Skip to content

Commit 3100feb

Browse files
committed
fix: #7 Fix exception which occurs when exporting a root-level diagram.
1 parent 861a705 commit 3100feb

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

common/src/main/java/com/github/vogoltsov/vp/plugins/common/vp/DiagramExtendedProperties.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import lombok.AccessLevel;
99
import lombok.NoArgsConstructor;
1010

11+
import java.util.Arrays;
12+
import java.util.Objects;
13+
1114
/**
1215
* {@link IDiagramUIModel} supports only certain subset of properties (see {@code PROPERTY_XXX} constants in {@link IDiagramUIModel}).
1316
* There is no standard way to set plugin-defined properties (e.g. external id when exporting diagram to a server).
@@ -66,12 +69,28 @@ private static void setTaggedValue(IDiagramUIModel diagram, String name, String
6669
private static ITaggedValueContainer getTaggedValues(IDiagramUIModel diagram, boolean create) {
6770
String extendedPropertiesModelElementName = "_diagram." + diagram.getId() + ".extended.properties";
6871
// model element
69-
IModelElement extendedPropertiesModelElement = diagram.getParentModel().getChildByName(extendedPropertiesModelElementName);
72+
IModelElement parentModelElement = diagram.getParentModel();
73+
IModelElement extendedPropertiesModelElement;
74+
if (parentModelElement != null) {
75+
extendedPropertiesModelElement = parentModelElement.getChildByName(extendedPropertiesModelElementName);
76+
} else {
77+
extendedPropertiesModelElement = Arrays.stream(
78+
diagram.getProject().toModelElementArray(IModelElementFactory.MODEL_TYPE_NOTE)
79+
)
80+
.filter(modelElement -> modelElement.getParent() == null)
81+
.filter(modelElement -> Objects.equals(modelElement.getName(), extendedPropertiesModelElementName))
82+
.findAny()
83+
.orElse(null);
84+
85+
}
7086
if (extendedPropertiesModelElement == null && create) {
7187
// create diagram element
72-
extendedPropertiesModelElement = diagram.getParentModel().createChild(IModelElementFactory.MODEL_TYPE_NOTE);
88+
extendedPropertiesModelElement = IModelElementFactory.instance().createNOTE();
7389
extendedPropertiesModelElement.setName(extendedPropertiesModelElementName);
7490
extendedPropertiesModelElement.setDescription("Diagram extended properties");
91+
if (parentModelElement != null) {
92+
parentModelElement.addChild(extendedPropertiesModelElement);
93+
}
7594
}
7695
// get tagged values
7796
ITaggedValueContainer taggedValues = null;

0 commit comments

Comments
 (0)