From 97c7f1ed34f1dfdf25666ef18ee01192acd8aa2b Mon Sep 17 00:00:00 2001 From: Arnaud Roques Date: Wed, 11 Jan 2023 22:47:15 +0100 Subject: [PATCH] wip --- .../activitydiagram/ActivityDiagram.java | 18 +- .../command/CommandEndPartition.java | 8 +- .../command/CommandLinkActivity.java | 44 +--- .../command/CommandLinkLongActivity.java | 2 +- .../command/CommandPartition.java | 2 +- .../plantuml/baraye/CucaDiagram.java | 148 +++--------- .../plantuml/baraye/EntityFactory.java | 133 +---------- .../plantuml/baraye/EntityImp.java | 55 ++--- .../sourceforge/plantuml/baraye/IEntity.java | 2 - .../sourceforge/plantuml/baraye/ILeaf.java | 5 + .../plantuml/classdiagram/ClassDiagram.java | 19 +- .../command/CommandAddMethod.java | 16 +- .../command/CommandCreateClass.java | 23 +- .../command/CommandCreateClassMultilines.java | 16 +- .../command/CommandCreateElementFull2.java | 2 +- .../command/CommandDiamondAssociation.java | 8 +- .../command/CommandHideShowByGender.java | 2 +- .../command/CommandLinkClass.java | 195 ++-------------- .../command/CommandLinkClass2.java | 220 +++--------------- .../command/CommandLinkLollipop.java | 10 +- .../command/CommandStereotype.java | 2 +- .../classdiagram/command/CommandUrl.java | 14 +- .../plantuml/command/CommandEndPackage.java | 7 +- .../plantuml/command/CommandNamespace.java | 5 - .../plantuml/command/CommandNamespace2.java | 6 +- .../command/CommandNamespaceEmpty.java | 2 +- .../plantuml/command/CommandPackage.java | 4 +- .../plantuml/command/CommandPackageEmpty.java | 2 +- .../command/note/CommandFactoryNote.java | 4 +- .../note/CommandFactoryNoteActivity.java | 39 ++-- .../note/CommandFactoryNoteOnEntity.java | 22 +- .../note/CommandFactoryTipOnEntity.java | 2 +- .../command/CommandEndPackageBlock.java | 8 +- .../plantuml/cucadiagram/GroupRoot.java | 18 +- .../plantuml/cucadiagram/ICucaDiagram.java | 4 - .../plantuml/cucadiagram/Ident.java | 7 +- .../plantuml/cucadiagram/Together.java | 41 ++++ .../descdiagram/CommandCreateDomain.java | 9 +- .../descdiagram/DescriptionDiagram.java | 4 +- .../descdiagram/command/CommandArchimate.java | 2 +- .../command/CommandArchimateMultilines.java | 2 +- .../command/CommandCreateElementFull.java | 35 +-- .../CommandCreateElementMultilines.java | 2 +- .../CommandCreateElementParenthesis.java | 58 ++--- .../command/CommandLinkElement.java | 24 +- .../command/CommandPackageWithUSymbol.java | 2 +- .../descdiagram/command/CommandTogether.java | 11 +- .../plantuml/jsondiagram/StyleExtractor.java | 2 +- .../AbstractClassOrObjectDiagram.java | 26 +-- .../command/CommandCreateEntityObject.java | 12 +- .../CommandCreateEntityObjectMultilines.java | 4 +- .../command/CommandCreateJson.java | 8 +- .../command/CommandCreateJsonSingleLine.java | 8 +- .../command/CommandCreateMap.java | 4 +- .../plantuml/statediagram/StateDiagram.java | 78 ++----- .../statediagram/command/CommandAddField.java | 8 +- .../command/CommandCreatePackage2.java | 5 +- .../command/CommandCreatePackageState.java | 2 +- .../command/CommandCreateState.java | 57 +++-- .../command/CommandLinkStateCommon.java | 4 +- .../plantuml/style/parser/StyleParser.java | 7 +- .../svek/CucaDiagramFileMakerSvek.java | 5 +- .../plantuml/svek/DotStringFactory.java | 9 +- .../plantuml/svek/GeneralImageBuilder.java | 16 +- .../plantuml/svek/GroupPngMakerActivity.java | 2 +- .../plantuml/svek/GroupPngMakerState.java | 2 +- .../sourceforge/plantuml/version/Version.java | 2 +- stdlib/azure-abx.repx | Bin 8969 -> 10752 bytes stdlib/azure-dex.repx | Bin 72945 -> 80531 bytes 69 files changed, 387 insertions(+), 1138 deletions(-) create mode 100644 src/net/sourceforge/plantuml/cucadiagram/Together.java diff --git a/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagram.java b/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagram.java index 0d99aeb49..f281f57d7 100644 --- a/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagram.java +++ b/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagram.java @@ -76,7 +76,7 @@ public class ActivityDiagram extends CucaDiagram { public IEntity getOrCreate(Ident idNewLong, Code code, Display display, LeafType type) { final IEntity result; - final boolean leafExist = this.V1972() ? leafExistSmart(idNewLong) : leafExist(code); + final boolean leafExist = leafExist(code); if (leafExist) { result = getOrCreateLeafDefault(idNewLong, code, type, null); if (result.getLeafType() != type) { @@ -88,19 +88,11 @@ public class ActivityDiagram extends CucaDiagram { updateLasts(result); return result; } - - @Override - public /*final*/ ILeaf getLeafVerySmart(Ident ident) { - final ILeaf result = super.getLeafVerySmart(ident); - updateLasts(result); - return result; - } - public void startIf(String optionalCodeString) { final String idShort = optionalCodeString == null ? getAutoBranch() : optionalCodeString; final Ident idNewLong = buildLeafIdent(idShort); - final Code code = this.V1972() ? idNewLong : buildCode(idShort); + final Code code = buildCode(idShort); final IEntity br = createLeaf(idNewLong, code, Display.create(""), LeafType.BRANCH, null); currentContext = new ConditionalContext(currentContext, br, Direction.DOWN); } @@ -111,14 +103,14 @@ public class ActivityDiagram extends CucaDiagram { public ILeaf getStart() { final Ident ident = buildLeafIdent("start"); - final Code code = this.V1972() ? ident : buildCode("start"); + final Code code = buildCode("start"); return (ILeaf) getOrCreate(ident, code, Display.getWithNewlines("start"), LeafType.CIRCLE_START); } public ILeaf getEnd(String suppId) { final String tmp = suppId == null ? "end" : "end$" + suppId; final Ident ident = buildLeafIdent(tmp); - final Code code = this.V1972() ? ident : buildCode(tmp); + final Code code = buildCode(tmp); return (ILeaf) getOrCreate(ident, code, Display.getWithNewlines("end"), LeafType.CIRCLE_END); } @@ -173,7 +165,7 @@ public class ActivityDiagram extends CucaDiagram { // Log.println("createInnerActivity A"); final String idShort = "##" + this.getUniqueSequence(); final Ident idNewLong = buildLeafIdent(idShort); - final Code code = this.V1972() ? idNewLong : buildCode(idShort); + final Code code = buildCode(idShort); gotoGroup(idNewLong, code, Display.getWithNewlines(code), GroupType.INNER_ACTIVITY, getCurrentGroup(), NamespaceStrategy.SINGLE); final IEntity g = getCurrentGroup(); diff --git a/src/net/sourceforge/plantuml/activitydiagram/command/CommandEndPartition.java b/src/net/sourceforge/plantuml/activitydiagram/command/CommandEndPartition.java index 53c299cc7..c0c0be637 100644 --- a/src/net/sourceforge/plantuml/activitydiagram/command/CommandEndPartition.java +++ b/src/net/sourceforge/plantuml/activitydiagram/command/CommandEndPartition.java @@ -36,7 +36,6 @@ package net.sourceforge.plantuml.activitydiagram.command; import net.sourceforge.plantuml.activitydiagram.ActivityDiagram; -import net.sourceforge.plantuml.baraye.IEntity; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.command.SingleLineCommand2; import net.sourceforge.plantuml.command.regex.IRegex; @@ -65,11 +64,10 @@ public class CommandEndPartition extends SingleLineCommand2 { @Override protected CommandExecutionResult executeArg(ActivityDiagram diagram, LineLocation location, RegexResult arg) { - final IEntity currentPackage = diagram.getCurrentGroup(); - if (currentPackage == null) { + final boolean result = diagram.endGroup(); + if (result == false) return CommandExecutionResult.error("No partition defined"); - } - diagram.endGroup(); + return CommandExecutionResult.ok(); } diff --git a/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkActivity.java b/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkActivity.java index f57d3cb11..4b2caf65d 100644 --- a/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkActivity.java +++ b/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkActivity.java @@ -41,7 +41,6 @@ import net.sourceforge.plantuml.UrlBuilder; import net.sourceforge.plantuml.UrlMode; import net.sourceforge.plantuml.activitydiagram.ActivityDiagram; import net.sourceforge.plantuml.baraye.IEntity; -import net.sourceforge.plantuml.baraye.ILeaf; import net.sourceforge.plantuml.classdiagram.command.CommandLinkClass; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.command.SingleLineCommand2; @@ -210,21 +209,14 @@ public class CommandLinkActivity extends SingleLineCommand2 { if (idShort != null) { if (partition != null) { final Ident idNewLong = diagram.buildLeafIdent(partition); - final Code codeP = diagram.V1972() ? idNewLong : diagram.buildCode(partition); + final Code codeP = diagram.buildCode(partition); diagram.gotoGroup(idNewLong, codeP, Display.getWithNewlines(partition), GroupType.PACKAGE, diagram.getRootGroup(), NamespaceStrategy.SINGLE); } final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); - final LeafType type = diagram.V1972() ? getTypeIfExistingSmart(diagram, ident) - : getTypeIfExisting(diagram, code); - IEntity result; - if (diagram.V1972()) { - result = diagram.getLeafVerySmart(ident); - if (result == null) - result = diagram.getOrCreate(ident, code, Display.getWithNewlines(code), type); - } else - result = diagram.getOrCreate(ident, code, Display.getWithNewlines(code), type); + final Code code = diagram.buildCode(idShort); + final LeafType type = getTypeIfExisting(diagram, code); + final IEntity result = diagram.getOrCreate(ident, code, Display.getWithNewlines(code), type); if (partition != null) diagram.endGroup(); @@ -233,13 +225,7 @@ public class CommandLinkActivity extends SingleLineCommand2 { final String bar = arg.get("BAR" + suf, 0); if (bar != null) { final Ident identBar = diagram.buildLeafIdent(bar); - final Code codeBar = diagram.V1972() ? identBar : diagram.buildCode(bar); - if (diagram.V1972()) { - final ILeaf result = diagram.getLeafVerySmart(identBar); - if (result != null) - return result; - - } + final Code codeBar = diagram.buildCode(bar); return diagram.getOrCreate(identBar, codeBar, Display.getWithNewlines(bar), LeafType.SYNCHRO_BAR); } final RegexPartialMatch quoted = arg.get("QUOTED" + suf); @@ -247,14 +233,13 @@ public class CommandLinkActivity extends SingleLineCommand2 { final String quotedString = quoted.get(1) == null ? quoted.get(0) : quoted.get(1); if (partition != null) { final Ident idNewLong = diagram.buildLeafIdent(partition); - final Code codeP = diagram.V1972() ? idNewLong : diagram.buildCode(partition); + final Code codeP = diagram.buildCode(partition); diagram.gotoGroup(idNewLong, codeP, Display.getWithNewlines(partition), GroupType.PACKAGE, diagram.getRootGroup(), NamespaceStrategy.SINGLE); } final Ident quotedIdent = diagram.buildLeafIdent(quotedString); - final Code quotedCode = diagram.V1972() ? quotedIdent : diagram.buildCode(quotedString); - final LeafType type = diagram.V1972() ? getTypeIfExistingSmart(diagram, quotedIdent) - : getTypeIfExisting(diagram, quotedCode); + final Code quotedCode = diagram.buildCode(quotedString); + final LeafType type = getTypeIfExisting(diagram, quotedCode); final IEntity result = diagram.getOrCreate(quotedIdent, quotedCode, Display.getWithNewlines(quoted.get(0)), type); if (partition != null) @@ -266,12 +251,12 @@ public class CommandLinkActivity extends SingleLineCommand2 { if (quoteInvisibleString != null) { if (partition != null) { final Ident idNewLong = diagram.buildLeafIdent(partition); - final Code codeP = diagram.V1972() ? idNewLong : diagram.buildCode(partition); + final Code codeP = diagram.buildCode(partition); diagram.gotoGroup(idNewLong, codeP, Display.getWithNewlines(partition), GroupType.PACKAGE, diagram.getRootGroup(), NamespaceStrategy.SINGLE); } final Ident identInvisible = diagram.buildLeafIdent(quoteInvisibleString); - final Code quotedInvisible = diagram.V1972() ? identInvisible : diagram.buildCode(quoteInvisibleString); + final Code quotedInvisible = diagram.buildCode(quoteInvisibleString); final IEntity result = diagram.getOrCreate(identInvisible, quotedInvisible, Display.getWithNewlines(quotedInvisible), LeafType.ACTIVITY); if (partition != null) @@ -286,15 +271,6 @@ public class CommandLinkActivity extends SingleLineCommand2 { return null; } - private static LeafType getTypeIfExistingSmart(ActivityDiagram system, Ident ident) { - final IEntity ent = system.getLeafSmart(ident); - if (ent != null) - if (ent.getLeafType() == LeafType.BRANCH) - return LeafType.BRANCH; - - return LeafType.ACTIVITY; - } - private static LeafType getTypeIfExisting(ActivityDiagram system, Code code) { if (system.leafExist(code)) { final IEntity ent = system.getLeaf(code); diff --git a/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkLongActivity.java b/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkLongActivity.java index 51ff9a273..ddc6047dd 100644 --- a/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkLongActivity.java +++ b/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkLongActivity.java @@ -183,7 +183,7 @@ public class CommandLinkLongActivity extends CommandMultilines2 GroupType.PACKAGE, null, NamespaceStrategy.SINGLE); } final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); final IEntity entity2 = diagram.getOrCreate(ident, code, Display.getWithNewlines(display), LeafType.ACTIVITY); if (entity2 == null) return CommandExecutionResult.error("No such entity"); diff --git a/src/net/sourceforge/plantuml/activitydiagram/command/CommandPartition.java b/src/net/sourceforge/plantuml/activitydiagram/command/CommandPartition.java index de0377430..dd88036eb 100644 --- a/src/net/sourceforge/plantuml/activitydiagram/command/CommandPartition.java +++ b/src/net/sourceforge/plantuml/activitydiagram/command/CommandPartition.java @@ -89,7 +89,7 @@ public class CommandPartition extends SingleLineCommand2 { throws NoSuchColorException { final String idShort = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(arg.get("NAME", 0)); final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); final IGroup currentPackage = diagram.getCurrentGroup(); diagram.gotoGroup(ident, code, Display.getWithNewlines(code), GroupType.PACKAGE, currentPackage, NamespaceStrategy.SINGLE); diff --git a/src/net/sourceforge/plantuml/baraye/CucaDiagram.java b/src/net/sourceforge/plantuml/baraye/CucaDiagram.java index aae05019b..0590a3d0b 100644 --- a/src/net/sourceforge/plantuml/baraye/CucaDiagram.java +++ b/src/net/sourceforge/plantuml/baraye/CucaDiagram.java @@ -75,6 +75,7 @@ import net.sourceforge.plantuml.cucadiagram.Magma; import net.sourceforge.plantuml.cucadiagram.MagmaList; import net.sourceforge.plantuml.cucadiagram.NamespaceStrategy; import net.sourceforge.plantuml.cucadiagram.PortionShower; +import net.sourceforge.plantuml.cucadiagram.Together; import net.sourceforge.plantuml.cucadiagram.dot.CucaDiagramTxtMaker; import net.sourceforge.plantuml.cucadiagram.entity.IEntityFactory; import net.sourceforge.plantuml.elk.CucaDiagramFileMakerElk; @@ -95,10 +96,6 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, static public final boolean QUARK = false; - static private final boolean G1972 = false; - - // private String namespaceSeparator = "."; - // private String namespaceSeparator1 = GO1972 ? "::" : "."; private String namespaceSeparator = null; private boolean namespaceSeparatorHasBeenSet = false; @@ -110,25 +107,6 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, throw new UnsupportedOperationException(); } - public final boolean V1972() { - if (getPragma().backToLegacyPackage()) { - return false; - } - if (getPragma().useNewPackage()) { - return true; - } - if (G1972) - return true; - return false; - } - - public final boolean mergeIntricated() { - if (getNamespaceSeparator() == null) { - return false; - } - return this.V1972() && this.getUmlDiagramType() == UmlDiagramType.CLASS; - } - private final List hides2 = new ArrayList<>(); private final List removed = new ArrayList<>(); protected final EntityFactory entityFactory = new EntityFactory(hides2, removed, this); @@ -169,7 +147,7 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, final public String getNamespaceSeparator() { if (namespaceSeparatorHasBeenSet == false) - return V1972() ? "::" : "."; + return "."; return namespaceSeparator; } @@ -198,11 +176,7 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, final protected ILeaf getOrCreateLeafDefault(Ident idNewLong, Code code, LeafType type, USymbol symbol) { Objects.requireNonNull(idNewLong); Objects.requireNonNull(type); - ILeaf result; - if (this.V1972()) - result = entityFactory.getLeafStrict(idNewLong); - else - result = entityFactory.getLeaf(code); + ILeaf result = entityFactory.getLeaf(code); if (result == null) { result = createLeafInternal(idNewLong, code, Display.getWithNewlines(code), type, symbol); @@ -266,28 +240,18 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, } final public Code buildCode(String s) { - if (this.V1972()) - throw new UnsupportedOperationException(); return CodeImpl.of(s); } public boolean leafExist(Code code) { - if (this.V1972()) - throw new UnsupportedOperationException(); return entityFactory.getLeaf(code) != null; } - public boolean leafExistSmart(Ident ident) { - return entityFactory.getLeafSmart(ident) != null; - } - public boolean leafExistStrict(Ident ident) { return entityFactory.getLeafStrict(ident) != null; } final public Collection getChildrenGroups(IGroup parent) { - if (this.V1972()) - return getChildrenGroupsIdent1972(parent); final Collection result = new ArrayList<>(); for (IGroup gg : getGroups(false)) if (gg.getParentContainer() == parent) @@ -296,32 +260,22 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, return Collections.unmodifiableCollection(result); } - private Collection getChildrenGroupsIdent1972(IGroup parent) { - final Collection result = new ArrayList<>(); - for (IGroup gg : entityFactory.groups2()) - if (gg.getIdent().parent().equals(parent.getIdent())) - result.add(gg); - - return Collections.unmodifiableCollection(result); - } - private NamespaceStrategy lastNamespaceStrategy; + private Together currentTogether; + + final public CommandExecutionResult gotoTogether(Ident ident, Code code, IGroup parent) { + IGroup result = entityFactory.createGroup(ident, code, Display.NULL, null, GroupType.TOGETHER, parent, + getHides(), getNamespaceSeparator()); + if (currentTogether != null) + return CommandExecutionResult.error("Cannot nest together"); + + entityFactory.addGroup(result); + currentGroup = result; + return CommandExecutionResult.ok(); + } final public CommandExecutionResult gotoGroup(Ident ident, Code code, Display display, GroupType type, IGroup parent, NamespaceStrategy strategy) { - if (type == GroupType.TOGETHER) { - IGroup result = entityFactory.createGroup(ident, code, display, null, type, parent, getHides(), - getNamespaceSeparator()); - entityFactory.addGroup(result); - currentGroup = result; - return CommandExecutionResult.ok(); - - } - if (this.V1972()) { - gotoGroupInternalWithNamespace(ident, code, display, code, type, parent); - return CommandExecutionResult.ok(); - } - if (this.lastNamespaceStrategy != null && strategy != this.lastNamespaceStrategy) return CommandExecutionResult.error("Cannot mix packages and namespaces"); this.lastNamespaceStrategy = strategy; @@ -359,10 +313,6 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, this.stacks.add(currentGroup); this.stacks2.add(idNewLong); - if (this.V1972()) { - gotoGroupInternal(idNewLong, code, display, namespaceNew, type, parent); - return; - } if (getNamespaceSeparator() == null) { gotoGroupInternal(idNewLong, code, display, namespaceNew, type, parent); return; @@ -387,11 +337,15 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, } - public void endGroup() { + public boolean endGroup() { + + if (this.currentTogether != null) { + this.currentTogether = null; + } if (currentGroup.getGroupType() == GroupType.TOGETHER) { currentGroup = currentGroup.getParentContainer(); - return; + return true; } if (stacks2.size() > 0) { @@ -400,21 +354,17 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, } if (EntityUtils.groupRoot(currentGroup)) { Log.error("No parent group"); - return; + return false; } if (stacks.size() > 0) currentGroup = stacks.remove(stacks.size() - 1); else currentGroup = currentGroup.getParentContainer(); + return true; } private void gotoGroupInternal(Ident idNewLong, final Code code, Display display, final Code namespace, GroupType type, IGroup parent) { - if (this.V1972()) { - gotoGroupInternal1972(idNewLong, code, display, namespace, type, parent); - return; - } - IGroup result = entityFactory.getGroup(code); if (result != null) { currentGroup = result; @@ -431,30 +381,6 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, currentGroup = result; } - private void gotoGroupInternal1972(Ident idNewLong, final Code code, Display display, final Code namespace, - GroupType type, IGroup parent) { - IGroup result = entityFactory.getGroupStrict(idNewLong); - if (result != null) { - currentGroup = result; - return; - } - final boolean mutation; - if (getNamespaceSeparator() == null) - mutation = entityFactory.getLeafVerySmart(idNewLong) != null; - else - mutation = entityFactory.getLeafStrict(idNewLong) != null; - if (mutation) { - result = entityFactory.muteToGroup1972(idNewLong, namespace, type, parent); - result.setDisplay(display); - } else { - result = entityFactory.createGroup(idNewLong, code, display, namespace, type, parent, getHides(), - getNamespaceSeparator()); - } - entityFactory.addGroup(result); - currentGroup = result; - stacks2.set(stacks2.size() - 1, result.getIdent()); - } - final protected void gotoGroupExternal(Ident newIdLong, final Code code, Display display, final Code namespace, GroupType type, IGroup parent) { IGroup result = entityFactory.getGroup(code); @@ -507,35 +433,23 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, } public final IGroup getGroupStrict(Ident ident) { - if (!this.V1972()) - throw new UnsupportedOperationException(); - final IGroup p = entityFactory.getGroupStrict(ident); - return Objects.requireNonNull(p); + throw new UnsupportedOperationException(); } public final IGroup getGroupVerySmart(Ident ident) { - if (!this.V1972()) - throw new UnsupportedOperationException(); - final IGroup p = entityFactory.getGroupVerySmart(ident); - return Objects.requireNonNull(p); + throw new UnsupportedOperationException(); } public final boolean isGroup(Code code) { - if (this.V1972()) - return isGroupStrict((Ident) code); return leafExist(code) == false && entityFactory.getGroup(code) != null; } public final boolean isGroupStrict(Ident ident) { - if (!this.V1972()) - throw new UnsupportedOperationException(); - return leafExistStrict(ident) == false && entityFactory.getGroupStrict(ident) != null; + throw new UnsupportedOperationException(); } public final boolean isGroupVerySmart(Ident ident) { - if (!this.V1972()) - throw new UnsupportedOperationException(); - return leafExistSmart(ident) == false && entityFactory.getGroupVerySmart(ident) != null; + throw new UnsupportedOperationException(); } public final Collection getGroups(boolean withRootGroup) { @@ -568,14 +482,6 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, return entityFactory.getLeafStrict(ident); } - public final ILeaf getLeafSmart(Ident ident) { - return entityFactory.getLeafSmart(ident); - } - - public /* final */ ILeaf getLeafVerySmart(Ident ident) { - return entityFactory.getLeafVerySmart(ident); - } - final public void addLink(Link link) { entityFactory.addLink(link); } diff --git a/src/net/sourceforge/plantuml/baraye/EntityFactory.java b/src/net/sourceforge/plantuml/baraye/EntityFactory.java index f573a7adf..5148f0627 100644 --- a/src/net/sourceforge/plantuml/baraye/EntityFactory.java +++ b/src/net/sourceforge/plantuml/baraye/EntityFactory.java @@ -39,7 +39,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -48,7 +47,6 @@ import java.util.Objects; import java.util.Set; import net.sourceforge.plantuml.ISkinParam; -import net.sourceforge.plantuml.creole.CreoleMode; import net.sourceforge.plantuml.cucadiagram.Bodier; import net.sourceforge.plantuml.cucadiagram.BodierJSon; import net.sourceforge.plantuml.cucadiagram.BodierMap; @@ -84,7 +82,6 @@ public final class EntityFactory implements IEntityFactory { private final List hides2; private final List removed; /* private */ final public CucaDiagram namespaceSeparator; - // private final boolean mergeIntricated; private Map emptyGroupsAsNode = new HashMap(); public ILeaf getLeafForEmptyGroup(IGroup g) { @@ -108,57 +105,12 @@ public final class EntityFactory implements IEntityFactory { return folder; } - public Display getIntricatedDisplay(Ident ident) { - final Set known = new HashSet<>(groups2.keySet()); - known.removeAll(hiddenBecauseOfIntrication); - String sep = namespaceSeparator.getNamespaceSeparator(); - if (sep == null) - sep = "."; - - for (int check = ident.size() - 1; check > 0; check--) - if (known.contains(ident.getPrefix(check))) - // if (hiddenBecauseOfIntrication.contains(ident.getPrefix(check)) == false) - return Display.getWithNewlines(ident.getSuffix(check).toString(sep)) - .withCreoleMode(CreoleMode.SIMPLE_LINE); - - return Display.getWithNewlines(ident.toString(sep)).withCreoleMode(CreoleMode.SIMPLE_LINE); - } - - private final Collection hiddenBecauseOfIntrication = new ArrayList<>(); - - public IGroup isIntricated(IGroup parent) { - final int leafs = parent.getLeafsDirect().size(); - final Collection children = parent.getChildren(); - if (leafs == 0 && children.size() == 1) { - final IGroup g = children.iterator().next(); - if (g.getLeafsDirect().size() == 0 && g.getChildren().size() == 0 - && (g.getGroupType() == GroupType.PACKAGE || g.getGroupType() == GroupType.TOGETHER)) - return null; - - for (Link link : this.getLinks()) - if (link.contains(parent)) - return null; - - ((EntityImp) g).setIntricated(true); - hiddenBecauseOfIntrication.add(parent.getIdent()); - return g; - } - return null; - } - public EntityFactory(List hides2, List removed, CucaDiagram namespaceSeparator) { this.hides2 = hides2; this.removed = removed; this.namespaceSeparator = namespaceSeparator; - // this.mergeIntricated = namespaceSeparator.mergeIntricated(); - - // if (OptionFlags.V1972(namespaceSeparator)) { - // this.leafsByCode = null; - // this.groupsByCode = null; - // } else { this.leafsByCode = new LinkedHashMap(); this.groupsByCode = new LinkedHashMap(); - // } } public boolean isHidden(ILeaf leaf) { @@ -257,19 +209,13 @@ public final class EntityFactory implements IEntityFactory { } public void addLeaf(ILeaf entity) { - if (namespaceSeparator.V1972() == false) - leafsByCode.put(entity.getCodeGetName(), entity); + leafsByCode.put(entity.getCodeGetName(), entity); leafs2.put(entity.getIdent(), entity); - if (namespaceSeparator.V1972()) - ensureParentIsCreated(entity.getIdent()); } public void addGroup(IGroup group) { - if (namespaceSeparator.V1972() == false) - groupsByCode.put(group.getCodeGetName(), group); + groupsByCode.put(group.getCodeGetName(), group); groups2.put(group.getIdent(), group); - if (namespaceSeparator.V1972()) - ensureParentIsCreated(group.getIdent()); } private void ensureParentIsCreated(Ident ident) { @@ -279,8 +225,6 @@ public final class EntityFactory implements IEntityFactory { } public /* private */ void removeGroup(String name) { - if (namespaceSeparator.V1972()) - throw new UnsupportedOperationException(); final IEntity removed = Objects.requireNonNull(groupsByCode.remove(name)); final IEntity removed2 = groups2.remove(removed.getIdent()); if (removed != removed2) { @@ -299,8 +243,6 @@ public final class EntityFactory implements IEntityFactory { } public /* private */ void removeLeaf(String name) { - if (namespaceSeparator.V1972()) - throw new UnsupportedOperationException(); final IEntity removed = Objects.requireNonNull(leafsByCode.remove(Objects.requireNonNull(name))); final IEntity removed2 = leafs2.remove(removed.getIdent()); if (removed != removed2) { @@ -316,17 +258,7 @@ public final class EntityFactory implements IEntityFactory { } } - private void removeLeaf1972(ILeaf leaf) { - final boolean removed = leafs2.values().remove(leaf); - if (removed == false) { - System.err.println("leafs2=" + leafs2.keySet()); - throw new IllegalArgumentException(leaf.toString()); - } - } - public IGroup muteToGroup(String name, Code namespace, GroupType type, IGroup parent) { - if (namespaceSeparator.V1972()) - throw new UnsupportedOperationException(); final ILeaf leaf = leafsByCode.get(name); ((EntityImp) leaf).muteToGroup(namespace, type, parent); final IGroup result = (IGroup) leaf; @@ -334,20 +266,6 @@ public final class EntityFactory implements IEntityFactory { return result; } - public IGroup muteToGroup1972(Ident ident, Code namespace, GroupType type, IGroup parent) { - if (!namespaceSeparator.V1972()) - throw new UnsupportedOperationException(); - final ILeaf leaf; - if (namespaceSeparator.getNamespaceSeparator() == null) - leaf = getLeafVerySmart(ident); - else - leaf = leafs2.get(ident); - ((EntityImp) leaf).muteToGroup(namespace, type, parent); - final IGroup result = (IGroup) leaf; - removeLeaf1972(leaf); - return result; - } - public IGroup getRootGroup() { return rootGroup; } @@ -356,30 +274,6 @@ public final class EntityFactory implements IEntityFactory { return leafs2.get(ident); } - public final ILeaf getLeafSmart(Ident ident) { - if (!namespaceSeparator.V1972()) - throw new UnsupportedOperationException(); - final ILeaf result = leafs2.get(ident); - if (result == null && ident.size() == 1) - for (Entry ent : leafs2.entrySet()) - if (ent.getKey().getLast().equals(ident.getLast())) - return ent.getValue(); - - return result; - } - - public final ILeaf getLeafVerySmart(Ident ident) { - if (!namespaceSeparator.V1972()) - throw new UnsupportedOperationException(); - final ILeaf result = leafs2.get(ident); - if (result == null) - for (Entry ent : leafs2.entrySet()) - if (ent.getKey().getLast().equals(ident.getLast())) - return ent.getValue(); - - return result; - } - public Ident buildFullyQualified(Ident currentPath, Ident id) { if (currentPath.equals(id) == false) if (leafs2.containsKey(id) || groups2.containsKey(id)) @@ -410,8 +304,6 @@ public final class EntityFactory implements IEntityFactory { } public final ILeaf getLeaf(Code code) { - if (namespaceSeparator.V1972()) - throw new UnsupportedOperationException(); final ILeaf result = leafsByCode.get(code.getName()); if (result != null && result != leafs2.get(result.getIdent())) bigError(); @@ -420,8 +312,6 @@ public final class EntityFactory implements IEntityFactory { } public final IGroup getGroup(Code code) { - if (namespaceSeparator.V1972()) - throw new UnsupportedOperationException(); final IGroup result = groupsByCode.get(code.getName()); if (result != null && result != groups2.get(result.getIdent())) bigError(); @@ -430,8 +320,6 @@ public final class EntityFactory implements IEntityFactory { } public final Collection leafs() { - if (namespaceSeparator.V1972()) - return leafs2(); final Collection result = Collections.unmodifiableCollection(leafsByCode.values()); if (new ArrayList<>(result).equals(new ArrayList<>(leafs2())) == false) bigError(); @@ -440,8 +328,6 @@ public final class EntityFactory implements IEntityFactory { } public final Collection groups() { - if (namespaceSeparator.V1972()) - return groups2(); final Collection result = Collections.unmodifiableCollection(groupsByCode.values()); if (new ArrayList<>(result).equals(new ArrayList<>(groups2())) == false) bigError(); @@ -490,21 +376,6 @@ public final class EntityFactory implements IEntityFactory { } public IGroup getParentContainer(Ident ident, IGroup parentContainer) { - if (namespaceSeparator.V1972()) { - final Ident parent = ident.parent(); - if (parent.isRoot()) - return this.rootGroup; - - IGroup result = getGroupStrict(parent); - if (result != null) - return result; - - final Display display = Display.getWithNewlines(parent.getName()); - result = createGroup(parent, parent, display, null, GroupType.PACKAGE, null, - Collections.emptySet(), namespaceSeparator.getNamespaceSeparator()); - addGroup(result); - return result; - } return Objects.requireNonNull(parentContainer); } diff --git a/src/net/sourceforge/plantuml/baraye/EntityImp.java b/src/net/sourceforge/plantuml/baraye/EntityImp.java index 8f8b97ea3..7caab7982 100644 --- a/src/net/sourceforge/plantuml/baraye/EntityImp.java +++ b/src/net/sourceforge/plantuml/baraye/EntityImp.java @@ -68,6 +68,7 @@ import net.sourceforge.plantuml.cucadiagram.Link; import net.sourceforge.plantuml.cucadiagram.Stereostyles; import net.sourceforge.plantuml.cucadiagram.Stereotag; import net.sourceforge.plantuml.cucadiagram.Stereotype; +import net.sourceforge.plantuml.cucadiagram.Together; import net.sourceforge.plantuml.cucadiagram.dot.Neighborhood; import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.HorizontalAlignment; @@ -131,6 +132,8 @@ final public class EntityImp implements ILeaf, IGroup { private final List notesTop = new ArrayList<>(); private final List notesBottom = new ArrayList<>(); + private Together together; + @Override public void addNote(Display note, Position position, Colors colors) { if (position == Position.TOP) @@ -161,9 +164,6 @@ final public class EntityImp implements ILeaf, IGroup { String namespaceSeparator, int rawLayout) { this.ident = Objects.requireNonNull(ident); this.uid = StringUtils.getUid("cl", entityFactory.getDiagram().getUniqueSequence()); - if (entityFactory.namespaceSeparator.V1972()) - code = ident; - this.code = Objects.requireNonNull(code); this.entityFactory = entityFactory; this.bodier = bodier; @@ -238,9 +238,6 @@ final public class EntityImp implements ILeaf, IGroup { } public Display getDisplay() { - if (intricated) - return entityFactory.getIntricatedDisplay(ident); - return display; } @@ -271,8 +268,6 @@ final public class EntityImp implements ILeaf, IGroup { // return super.toString() + code + " " + display + "(" + leafType + ")[" + // groupType + "] " + xposition + " " // + getUid(); - if (entityFactory.namespaceSeparator.V1972()) - return getUid() + " " + ident + " " + display + "(" + leafType + ")[" + groupType + "]"; return "EntityImpl " + code + ident + " " + display + "(" + leafType + ")[" + groupType + "] " + getUid(); } @@ -416,10 +411,6 @@ final public class EntityImp implements ILeaf, IGroup { } public void moveEntitiesTo(IGroup dest) { - if (entityFactory.namespaceSeparator.V1972()) { - moveEntitiesTo1972(dest); - return; - } checkGroup(); if (dest.isGroup() == false) throw new UnsupportedOperationException(); @@ -552,18 +543,10 @@ final public class EntityImp implements ILeaf, IGroup { if (EntityUtils.isPureInnerLink12(this, link)) entityFactory.removeLink(link); - if (entityFactory.namespaceSeparator.V1972()) { - entityFactory.removeGroup(getIdent()); - for (ILeaf ent : new ArrayList<>(entityFactory.leafs())) - if (this != ent && getIdent().equals(ent.getIdent().parent())) - entityFactory.removeLeaf(ent.getIdent()); - - } else { - entityFactory.removeGroup(getCodeGetName()); - for (ILeaf ent : new ArrayList<>(entityFactory.leafs())) - if (this != ent && this == ent.getParentContainer()) - entityFactory.removeLeaf(ent.getCodeGetName()); - } + entityFactory.removeGroup(getCodeGetName()); + for (ILeaf ent : new ArrayList<>(entityFactory.leafs())) + if (this != ent && this == ent.getParentContainer()) + entityFactory.removeLeaf(ent.getCodeGetName()); entityFactory.addLeaf(this); this.groupType = null; @@ -760,13 +743,6 @@ final public class EntityImp implements ILeaf, IGroup { return legend; } - private boolean intricated; - - public void setIntricated(boolean intricated) { - this.intricated = intricated; - - } - private IGroup originalGroup; public void setOriginalGroup(IGroup originalGroup) { @@ -778,13 +754,6 @@ final public class EntityImp implements ILeaf, IGroup { return originalGroup; } - private boolean together; - - public void setThisIsTogether() { - this.together = true; - setUSymbol(USymbols.TOGETHER); - } - public String getCodeLine() { if (this.codeLine == null) return null; @@ -866,4 +835,14 @@ final public class EntityImp implements ILeaf, IGroup { } + @Override + public Together getTogether() { + return together; + } + + @Override + public void getTogether(Together together) { + this.together = together; + } + } diff --git a/src/net/sourceforge/plantuml/baraye/IEntity.java b/src/net/sourceforge/plantuml/baraye/IEntity.java index 927e9a314..2751ce300 100644 --- a/src/net/sourceforge/plantuml/baraye/IEntity.java +++ b/src/net/sourceforge/plantuml/baraye/IEntity.java @@ -107,8 +107,6 @@ public interface IEntity extends SpecificBackcolorable, Hideable, Removeable, Li public boolean isAloneAndUnlinked(); - public void setThisIsTogether(); - public String getCodeLine(); public void setCodeLine(LineLocation codeLine); diff --git a/src/net/sourceforge/plantuml/baraye/ILeaf.java b/src/net/sourceforge/plantuml/baraye/ILeaf.java index e3fc27706..c2b1d361d 100644 --- a/src/net/sourceforge/plantuml/baraye/ILeaf.java +++ b/src/net/sourceforge/plantuml/baraye/ILeaf.java @@ -38,6 +38,7 @@ package net.sourceforge.plantuml.baraye; import java.util.Collection; import net.sourceforge.plantuml.cucadiagram.LeafType; +import net.sourceforge.plantuml.cucadiagram.Together; import net.sourceforge.plantuml.cucadiagram.dot.Neighborhood; import net.sourceforge.plantuml.graphic.USymbol; import net.sourceforge.plantuml.skin.VisibilityModifier; @@ -80,4 +81,8 @@ public interface ILeaf extends IEntity { public boolean isStatic(); + public Together getTogether(); + + public void getTogether(Together together); + } diff --git a/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java b/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java index 5c552479f..974d88367 100644 --- a/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java +++ b/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java @@ -78,12 +78,6 @@ public class ClassDiagram extends AbstractClassOrObjectDiagram { @Override public ILeaf getOrCreateLeaf(Ident ident, Code code, LeafType type, USymbol symbol) { Objects.requireNonNull(ident); - if (this.V1972()) { - if (type == null) { - type = LeafType.CLASS; - } - return getOrCreateLeafDefault(ident, code, type, symbol); - } if (type == null) { code = code.eventuallyRemoveStartingAndEndingDoubleQuote("\"([:"); if (getNamespaceSeparator() == null) { @@ -114,23 +108,18 @@ public class ClassDiagram extends AbstractClassOrObjectDiagram { && type != LeafType.LOLLIPOP_HALF && type != LeafType.NOTE) { return super.createLeaf(idNewLong, code, display, type, symbol); } - if (this.V1972()) { + if (getNamespaceSeparator() == null) return super.createLeaf(idNewLong, code, display, type, symbol); - } - if (getNamespaceSeparator() == null) { - return super.createLeaf(idNewLong, code, display, type, symbol); - } + code = getFullyQualifiedCode1972(code); - if (super.leafExist(code)) { + if (super.leafExist(code)) throw new IllegalArgumentException("Already known: " + code); - } + return createEntityWithNamespace1972(idNewLong, code, display, type, symbol); } private ILeaf createEntityWithNamespace1972(Ident id, Code fullyCode, Display display, LeafType type, USymbol symbol) { - if (this.V1972()) - throw new UnsupportedOperationException(); Objects.requireNonNull(id); final IGroup backupCurrentGroup = getCurrentGroup(); final IGroup group = backupCurrentGroup; diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandAddMethod.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandAddMethod.java index f275526db..a869f884e 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandAddMethod.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandAddMethod.java @@ -70,21 +70,13 @@ public class CommandAddMethod extends SingleLineCommand2 { throws NoSuchColorException { final String idShort = arg.get("NAME", 0); final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); - /* final */IEntity entity; - if (diagram.V1972()) { - entity = diagram.getLeafVerySmart(diagram.cleanIdent(ident)); - if (entity == null) { - entity = diagram.getOrCreateLeaf(ident, code, null, null); - } - } else { - entity = diagram.getOrCreateLeaf(ident, code, null, null); - } + final Code code = diagram.buildCode(idShort); + final IEntity entity = diagram.getOrCreateLeaf(ident, code, null, null); final String field = arg.get("DATA", 0); - if (field.length() > 0 && VisibilityModifier.isVisibilityCharacter(field)) { + if (field.length() > 0 && VisibilityModifier.isVisibilityCharacter(field)) diagram.setVisibilityModifierPresent(true); - } + entity.getBodier().addFieldOrMethod(field); return CommandExecutionResult.ok(); } diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClass.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClass.java index 84cc3828e..9f02478b6 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClass.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClass.java @@ -167,25 +167,14 @@ public class CommandCreateClass extends SingleLineCommand2 { } } else { final Ident idNewLong = diagram.buildLeafIdent(idShort); - if (diagram.V1972()) { - if (diagram.leafExistSmart(idNewLong)) { - entity = diagram.getOrCreateLeaf(idNewLong, idNewLong, type, null); - if (entity.muteToType(type, null) == false) - return CommandExecutionResult.error("Bad name"); + final Code code = diagram.buildCode(idShort); + if (diagram.leafExist(code)) { + entity = diagram.getOrCreateLeaf(idNewLong, code, type, null); + if (entity.muteToType(type, null) == false) + return CommandExecutionResult.error("Bad name"); - } else { - entity = diagram.createLeaf(idNewLong, idNewLong, Display.getWithNewlines(display), type, null); - } } else { - final Code code = diagram.buildCode(idShort); - if (diagram.leafExist(code)) { - entity = diagram.getOrCreateLeaf(idNewLong, code, type, null); - if (entity.muteToType(type, null) == false) - return CommandExecutionResult.error("Bad name"); - - } else { - entity = diagram.createLeaf(idNewLong, code, Display.getWithNewlines(display), type, null); - } + entity = diagram.createLeaf(idNewLong, code, Display.getWithNewlines(display), type, null); } } if (stereo != null) { diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClassMultilines.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClassMultilines.java index 4a342f277..62424f75d 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClassMultilines.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClassMultilines.java @@ -217,7 +217,7 @@ public class CommandCreateClassMultilines extends CommandMultilines2 final String idShort = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(codeRaw); final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); String display = displayRaw; if (display == null) display = code.getName(); diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java index 57a0acb59..38048e193 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java @@ -66,11 +66,11 @@ public class CommandDiamondAssociation extends SingleLineCommand2 protected CommandExecutionResult executeArg(ClassDiagram diagram, LineLocation location, RegexResult arg) { final String idShort = arg.get("CODE", 0); final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); - final boolean leafExist = diagram.V1972() ? diagram.leafExistSmart(ident) : diagram.leafExist(code); - if (leafExist) { + final Code code = diagram.buildCode(idShort); + final boolean leafExist = diagram.leafExist(code); + if (leafExist) return CommandExecutionResult.error("Already existing : " + code.getName()); - } + diagram.createLeaf(ident, code, Display.NULL, LeafType.ASSOCIATION, null); return CommandExecutionResult.ok(); diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandHideShowByGender.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandHideShowByGender.java index e1874ac91..1cbbd988b 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandHideShowByGender.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandHideShowByGender.java @@ -190,7 +190,7 @@ public class CommandHideShowByGender extends SingleLineCommand2 { } else { arg1 = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(arg1); final Ident ident = diagram.buildLeafIdent(arg1); - final Code code = diagram.V1972() ? ident : diagram.buildCode(arg1); + final Code code = diagram.buildCode(arg1); final IEntity entity = diagram.getOrCreateLeaf(ident, code, null, null); gender = EntityGenderUtils.byEntityAlone(entity); } diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandLinkClass.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandLinkClass.java index 0db5aee44..ae67c8689 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandLinkClass.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandLinkClass.java @@ -170,10 +170,10 @@ final public class CommandLinkClass extends SingleLineCommand2 { throws NoSuchColorException { final String name = arg.get("NAME", 0); final Ident ident = diagram.buildLeafIdent(name); - final Code code = diagram.V1972() ? ident : diagram.buildCode(name); + final Code code = diagram.buildCode(name); final String stereotype = arg.get("STEREO", 0); final IEntity entity = diagram.getOrCreateLeaf(ident, code, null, null); entity.setStereotype(Stereotype.build(stereotype, diagram.getSkinParam().getCircledCharacterRadius(), diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandUrl.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandUrl.java index 1a408e8d0..2965c2525 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandUrl.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandUrl.java @@ -76,17 +76,17 @@ public class CommandUrl extends SingleLineCommand2 { protected CommandExecutionResult executeArg(AbstractEntityDiagram diagram, LineLocation location, RegexResult arg) { final String idShort = arg.get("CODE", 0); final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); final String urlString = arg.get("URL", 0); final IEntity entity; - final boolean leafExist = diagram.V1972() ? diagram.leafExistSmart(ident) : diagram.leafExist(code); - if (leafExist) { + final boolean leafExist = diagram.leafExist(code); + if (leafExist) entity = diagram.getOrCreateLeaf(ident, code, null, null); - } else if (diagram.V1972() ? diagram.isGroupStrict(ident) : diagram.isGroup(code)) { - entity = diagram.V1972() ? diagram.getGroupStrict(ident) : diagram.getGroup(code); - } else { + else if (diagram.isGroup(code)) + entity = diagram.getGroup(code); + else return CommandExecutionResult.error(code + " does not exist"); - } + // final IEntity entity = diagram.getOrCreateLeaf(code, null); final UrlBuilder urlBuilder = new UrlBuilder(diagram.getSkinParam().getValue("topurl"), UrlMode.STRICT); final Url url = urlBuilder.getUrl(urlString); diff --git a/src/net/sourceforge/plantuml/command/CommandEndPackage.java b/src/net/sourceforge/plantuml/command/CommandEndPackage.java index e498e9d88..3834008db 100644 --- a/src/net/sourceforge/plantuml/command/CommandEndPackage.java +++ b/src/net/sourceforge/plantuml/command/CommandEndPackage.java @@ -35,8 +35,6 @@ */ package net.sourceforge.plantuml.command; -import net.sourceforge.plantuml.baraye.EntityUtils; -import net.sourceforge.plantuml.baraye.IGroup; import net.sourceforge.plantuml.classdiagram.AbstractEntityDiagram; import net.sourceforge.plantuml.command.regex.IRegex; import net.sourceforge.plantuml.command.regex.RegexConcat; @@ -58,11 +56,10 @@ public class CommandEndPackage extends SingleLineCommand2 @Override protected CommandExecutionResult executeArg(AbstractEntityDiagram diagram, LineLocation location, RegexResult arg) { - final IGroup currentPackage = diagram.getCurrentGroup(); - if (EntityUtils.groupRoot(currentPackage)) { + final boolean result = diagram.endGroup(); + if (result == false) { return CommandExecutionResult.error("No package or namespace defined"); } - diagram.endGroup(); return CommandExecutionResult.ok(); } diff --git a/src/net/sourceforge/plantuml/command/CommandNamespace.java b/src/net/sourceforge/plantuml/command/CommandNamespace.java index c178447cb..32cb32b13 100644 --- a/src/net/sourceforge/plantuml/command/CommandNamespace.java +++ b/src/net/sourceforge/plantuml/command/CommandNamespace.java @@ -97,11 +97,6 @@ public class CommandNamespace extends SingleLineCommand2 { display = Display.getWithNewlines(idShort); idNewLong = current.child(idShort); currentPackage = (IGroup) current.getData(); - } else if (diagram.V1972()) { - idNewLong = diagram.buildLeafIdent(idShort); - code = null; - currentPackage = null; - display = Display.getWithNewlines(idNewLong.getName()); } else { idNewLong = diagram.buildLeafIdent(idShort); code = diagram.buildCode(idShort); diff --git a/src/net/sourceforge/plantuml/command/CommandNamespace2.java b/src/net/sourceforge/plantuml/command/CommandNamespace2.java index 5fb712651..c07efccca 100644 --- a/src/net/sourceforge/plantuml/command/CommandNamespace2.java +++ b/src/net/sourceforge/plantuml/command/CommandNamespace2.java @@ -90,12 +90,12 @@ public class CommandNamespace2 extends SingleLineCommand2 { throws NoSuchColorException { final String idShort = arg.get("NAME", 0); final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); final IGroup currentPackage = diagram.getCurrentGroup(); final String disp = arg.getLazzy("DISPLAY", 0); final Display display = Display.getWithNewlines(disp); - final CommandExecutionResult status = diagram.gotoGroup(ident, code, display, GroupType.PACKAGE, - currentPackage, NamespaceStrategy.MULTIPLE); + final CommandExecutionResult status = diagram.gotoGroup(ident, code, display, GroupType.PACKAGE, currentPackage, + NamespaceStrategy.MULTIPLE); if (status.isOk() == false) return status; final IEntity p = diagram.getCurrentGroup(); diff --git a/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java b/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java index a932ef841..56fa8546b 100644 --- a/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java +++ b/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java @@ -85,7 +85,7 @@ public class CommandNamespaceEmpty extends SingleLineCommand2 { throws NoSuchColorException { final String idShort = arg.get("NAME", 0); final Ident idNewLong = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? idNewLong : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); final IGroup currentPackage = diagram.getCurrentGroup(); final Display display = Display.getWithNewlines(code); final CommandExecutionResult status = diagram.gotoGroup(idNewLong, code, display, GroupType.PACKAGE, diff --git a/src/net/sourceforge/plantuml/command/CommandPackage.java b/src/net/sourceforge/plantuml/command/CommandPackage.java index 6e0193645..62e1933e6 100644 --- a/src/net/sourceforge/plantuml/command/CommandPackage.java +++ b/src/net/sourceforge/plantuml/command/CommandPackage.java @@ -135,9 +135,7 @@ public class CommandPackage extends SingleLineCommand2 { ident = current.child(idShort); } else { ident = diagram.buildLeafIdent(idShort); - code = diagram.V1972() ? ident : diagram.buildCode(idShort); - if (diagram.V1972() && override1972) - display = ident.getLast(); + code = diagram.buildCode(idShort); } final IGroup currentPackage = diagram.getCurrentGroup(); final CommandExecutionResult status = diagram.gotoGroup(ident, code, Display.getWithNewlines(display), diff --git a/src/net/sourceforge/plantuml/command/CommandPackageEmpty.java b/src/net/sourceforge/plantuml/command/CommandPackageEmpty.java index 988694c84..90e9bcc24 100644 --- a/src/net/sourceforge/plantuml/command/CommandPackageEmpty.java +++ b/src/net/sourceforge/plantuml/command/CommandPackageEmpty.java @@ -99,7 +99,7 @@ public class CommandPackageEmpty extends SingleLineCommand2 @Override protected CommandExecutionResult executeArg(CompositeDiagram diagram, LineLocation location, RegexResult arg) { - final IEntity currentPackage = diagram.getCurrentGroup(); - if (currentPackage == null) { + final boolean result = diagram.endGroup(); + if (result == false) return CommandExecutionResult.error("No inner block defined"); - } - diagram.endGroup(); + return CommandExecutionResult.ok(); } diff --git a/src/net/sourceforge/plantuml/cucadiagram/GroupRoot.java b/src/net/sourceforge/plantuml/cucadiagram/GroupRoot.java index 9d14f9691..7da5fc439 100644 --- a/src/net/sourceforge/plantuml/cucadiagram/GroupRoot.java +++ b/src/net/sourceforge/plantuml/cucadiagram/GroupRoot.java @@ -158,15 +158,10 @@ public class GroupRoot implements IGroup { @Override public Collection getChildren() { final List result = new ArrayList<>(); - if (entityFactory.namespaceSeparator.V1972()) { - for (IGroup ent : entityFactory.groups()) - if (ent.getIdent().size() == 1) - result.add(ent); - } else { - for (IGroup ent : entityFactory.groups()) - if (ent.getParentContainer() == this) - result.add(ent); - } + for (IGroup ent : entityFactory.groups()) + if (ent.getParentContainer() == this) + result.add(ent); + return Collections.unmodifiableCollection(result); } @@ -313,11 +308,6 @@ public class GroupRoot implements IGroup { throw new UnsupportedOperationException(); } - @Override - public void setThisIsTogether() { - throw new UnsupportedOperationException(); - } - @Override public String getCodeLine() { throw new UnsupportedOperationException(); diff --git a/src/net/sourceforge/plantuml/cucadiagram/ICucaDiagram.java b/src/net/sourceforge/plantuml/cucadiagram/ICucaDiagram.java index d87dac1f9..1cbb2e2d5 100644 --- a/src/net/sourceforge/plantuml/cucadiagram/ICucaDiagram.java +++ b/src/net/sourceforge/plantuml/cucadiagram/ICucaDiagram.java @@ -52,8 +52,6 @@ import net.sourceforge.plantuml.ugraphic.ImageBuilder; public interface ICucaDiagram extends GroupHierarchy, PortionShower, Annotated { - boolean V1972(); - ISkinParam getSkinParam(); UmlDiagramType getUmlDiagramType(); @@ -80,8 +78,6 @@ public interface ICucaDiagram extends GroupHierarchy, PortionShower, Annotated { String getNamespaceSeparator(); - boolean mergeIntricated(); - Collection getGroups(boolean b); UmlSource getSource(); diff --git a/src/net/sourceforge/plantuml/cucadiagram/Ident.java b/src/net/sourceforge/plantuml/cucadiagram/Ident.java index aabd009dd..74cabec62 100644 --- a/src/net/sourceforge/plantuml/cucadiagram/Ident.java +++ b/src/net/sourceforge/plantuml/cucadiagram/Ident.java @@ -47,7 +47,7 @@ public class Ident implements Code { final protected List parts; - public /*private*/ Ident(List parts) { + public /* private */ Ident(List parts) { this.parts = parts; } @@ -96,8 +96,6 @@ public class Ident implements Code { } public Code toCode(CucaDiagram diagram) { - if (diagram.V1972()) - return this; return CodeImpl.of(getLast()); } @@ -228,9 +226,6 @@ public class Ident implements Code { } public void checkSameAs(Code code, String separator, CucaDiagram diagram) { - if (diagram.V1972()) { - return; - } final String last = parts.get(parts.size() - 1); if (separator == null) { if (code.getName().equals(last) != true && code.getName().equals(toString(separator)) == false) { diff --git a/src/net/sourceforge/plantuml/cucadiagram/Together.java b/src/net/sourceforge/plantuml/cucadiagram/Together.java new file mode 100644 index 000000000..87b118e73 --- /dev/null +++ b/src/net/sourceforge/plantuml/cucadiagram/Together.java @@ -0,0 +1,41 @@ +/* ======================================================================== + * PlantUML : a free UML diagram generator + * ======================================================================== + * + * (C) Copyright 2009-2023, Arnaud Roques + * + * Project Info: http://plantuml.com + * + * If you like this project or if you find it useful, you can support us at: + * + * http://plantuml.com/patreon (only 1$ per month!) + * http://plantuml.com/paypal + * + * This file is part of PlantUML. + * + * PlantUML is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * PlantUML distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + * License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * + * Original Author: Arnaud Roques + * Contribution: Hisashi Miyashita + * Contribution: Miguel Esteves + * + */ +package net.sourceforge.plantuml.cucadiagram; + +final public class Together { + +} diff --git a/src/net/sourceforge/plantuml/descdiagram/CommandCreateDomain.java b/src/net/sourceforge/plantuml/descdiagram/CommandCreateDomain.java index bff55fbc4..44e694c11 100644 --- a/src/net/sourceforge/plantuml/descdiagram/CommandCreateDomain.java +++ b/src/net/sourceforge/plantuml/descdiagram/CommandCreateDomain.java @@ -100,13 +100,10 @@ public class CommandCreateDomain extends SingleLineCommand2 final String stereotype = arg.get("STEREO", 0); final Ident ident = diagram.buildLeafIdent(codeString); - final Code code = diagram.V1972() ? ident : diagram.buildCode(codeString); - if (diagram.V1972() && diagram.leafExistSmart(ident)) { + final Code code = diagram.buildCode(codeString); + if (diagram.leafExist(code)) return CommandExecutionResult.error("Object already exists : " + codeString); - } - if (!diagram.V1972() && diagram.leafExist(code)) { - return CommandExecutionResult.error("Object already exists : " + codeString); - } + Display d = Display.getWithNewlines(display); final String urlString = arg.get("URL", 0); final String group = arg.get("GROUP", 0); diff --git a/src/net/sourceforge/plantuml/descdiagram/DescriptionDiagram.java b/src/net/sourceforge/plantuml/descdiagram/DescriptionDiagram.java index 6b39cceaf..7a7e2a384 100644 --- a/src/net/sourceforge/plantuml/descdiagram/DescriptionDiagram.java +++ b/src/net/sourceforge/plantuml/descdiagram/DescriptionDiagram.java @@ -91,12 +91,12 @@ public class DescriptionDiagram extends AbstractEntityDiagram { codeString = StringUtils.trin(codeString.substring(2)); codeString = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(codeString); final Ident idNewLong = buildLeafIdent(codeString); - final Code code99 = this.V1972() ? idNewLong : buildCode(codeString); + final Code code99 = buildCode(codeString); return getOrCreateLeafDefault(idNewLong, code99, LeafType.DESCRIPTION, USymbols.INTERFACE); } final String tmp4 = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(code.getName(), "\"([:"); final Ident idNewLong = ident.eventuallyRemoveStartingAndEndingDoubleQuote("\"([:"); - code = this.V1972() ? idNewLong : buildCode(tmp4); + code = buildCode(tmp4); return getOrCreateLeafDefault(idNewLong, code, LeafType.STILL_UNKNOWN, symbol); } return getOrCreateLeafDefault(ident, code, type, symbol); diff --git a/src/net/sourceforge/plantuml/descdiagram/command/CommandArchimate.java b/src/net/sourceforge/plantuml/descdiagram/command/CommandArchimate.java index 73868364c..6b2cc0b7a 100644 --- a/src/net/sourceforge/plantuml/descdiagram/command/CommandArchimate.java +++ b/src/net/sourceforge/plantuml/descdiagram/command/CommandArchimate.java @@ -126,7 +126,7 @@ public class CommandArchimate extends SingleLineCommand2 { final String idShort = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(codeRaw); final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); final String icon = arg.getLazzy("STEREOTYPE", 0); final IEntity entity = diagram.getOrCreateLeaf(ident, code, LeafType.DESCRIPTION, USymbols.ARCHIMATE); diff --git a/src/net/sourceforge/plantuml/descdiagram/command/CommandArchimateMultilines.java b/src/net/sourceforge/plantuml/descdiagram/command/CommandArchimateMultilines.java index 2fa5a232a..42c1bb030 100644 --- a/src/net/sourceforge/plantuml/descdiagram/command/CommandArchimateMultilines.java +++ b/src/net/sourceforge/plantuml/descdiagram/command/CommandArchimateMultilines.java @@ -108,7 +108,7 @@ public class CommandArchimateMultilines extends CommandMultilines2 { final Ident ident2 = diagram.buildLeafIdentSpecial(ent2); Ident ident1pure = Ident.empty().add(ent1, diagram.getNamespaceSeparator()); Ident ident2pure = Ident.empty().add(ent2, diagram.getNamespaceSeparator()); - final Code code1 = diagram.V1972() ? ident1 : diagram.buildCode(ent1String); - final Code code2 = diagram.V1972() ? ident2 : diagram.buildCode(ent2String); + final Code code1 = diagram.buildCode(ent1String); + final Code code2 = diagram.buildCode(ent2String); final LinkType linkType = getLinkType(arg); final Direction dir = getDirection(arg); @@ -266,10 +266,8 @@ public class CommandLinkElement extends SingleLineCommand2 { final IEntity cl1; final IEntity cl2; if (diagram.isGroup(code1) && diagram.isGroup(code2)) { - cl1 = diagram.V1972() ? diagram.getGroupStrict(diagram.buildLeafIdent(ent1String)) - : diagram.getGroup(diagram.buildCode(ent1String)); - cl2 = diagram.V1972() ? diagram.getGroupStrict(diagram.buildLeafIdent(ent2String)) - : diagram.getGroup(diagram.buildCode(ent2String)); + cl1 = diagram.getGroup(diagram.buildCode(ent1String)); + cl2 = diagram.getGroup(diagram.buildCode(ent2String)); } else { cl1 = getFoo1(diagram, code1, ident1, ident1pure); cl2 = getFoo1(diagram, code2, ident2, ident2pure); @@ -294,12 +292,9 @@ public class CommandLinkElement extends SingleLineCommand2 { } private IEntity getFoo1(DescriptionDiagram diagram, Code code, Ident ident, Ident pure) { - if (!diagram.V1972() && diagram.isGroup(code)) + if (diagram.isGroup(code)) return diagram.getGroup(code); - if (diagram.V1972() && diagram.isGroupStrict(ident)) - return diagram.getGroupStrict(ident); - final String codeString = code.getName(); if (ident.getLast().startsWith("()")) { ident = ident.removeStartingParenthesis(); @@ -309,7 +304,7 @@ public class CommandLinkElement extends SingleLineCommand2 { final char codeChar = codeString.length() > 2 ? codeString.charAt(0) : 0; final String tmp3 = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(codeString, "\"([:"); final Ident ident3 = diagram.buildFullyQualified(tmp3); - final Code code3 = diagram.V1972() ? ident3 : diagram.buildCode(tmp3); + final Code code3 = diagram.buildCode(tmp3); if (codeChar == '(') { return getOrCreateLeaf1972(diagram, ident, code3, LeafType.USECASE, USymbols.USECASE, pure); } else if (codeChar == ':') { @@ -325,13 +320,6 @@ public class CommandLinkElement extends SingleLineCommand2 { private ILeaf getOrCreateLeaf1972(DescriptionDiagram diagram, Ident ident, Code code, LeafType type, USymbol symbol, Ident pure) { - if (diagram.V1972()) { - final ILeaf result = pure.size() == 1 ? diagram.getLeafVerySmart(ident) : diagram.getLeafStrict(ident); - // final ILeaf result = diagram.getLeafSmart(ident); - if (result != null) - return result; - - } return diagram.getOrCreateLeaf(ident, code, type, symbol); } diff --git a/src/net/sourceforge/plantuml/descdiagram/command/CommandPackageWithUSymbol.java b/src/net/sourceforge/plantuml/descdiagram/command/CommandPackageWithUSymbol.java index 6601c2a85..e8b8f6569 100644 --- a/src/net/sourceforge/plantuml/descdiagram/command/CommandPackageWithUSymbol.java +++ b/src/net/sourceforge/plantuml/descdiagram/command/CommandPackageWithUSymbol.java @@ -154,7 +154,7 @@ public class CommandPackageWithUSymbol extends SingleLineCommand2 { throws NoSuchColorException { final String idShort = diagram.getUniqueSequence("##"); final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); final IGroup currentPackage = diagram.getCurrentGroup(); - final CommandExecutionResult status = diagram.gotoGroup(ident, code, Display.NULL, GroupType.TOGETHER, - currentPackage, NamespaceStrategy.SINGLE); + final CommandExecutionResult status = diagram.gotoTogether(ident, code, currentPackage); if (status.isOk() == false) return status; final IEntity p = diagram.getCurrentGroup(); - p.setThisIsTogether(); + p.setUSymbol(USymbols.TOGETHER); return CommandExecutionResult.ok(); } diff --git a/src/net/sourceforge/plantuml/jsondiagram/StyleExtractor.java b/src/net/sourceforge/plantuml/jsondiagram/StyleExtractor.java index dfa93a975..bab1fe578 100644 --- a/src/net/sourceforge/plantuml/jsondiagram/StyleExtractor.java +++ b/src/net/sourceforge/plantuml/jsondiagram/StyleExtractor.java @@ -113,7 +113,7 @@ public class StyleExtractor { if (style.size() > 0) { final StyleBuilder styleBuilder = skinParam.getCurrentStyleBuilder(); final BlocLines blocLines = BlocLines.from(style); - for (Style modifiedStyle : StyleParser.parse(blocLines.subExtract(1, 1), styleBuilder)) + for (Style modifiedStyle : StyleParser.parse(blocLines, styleBuilder)) skinParam.muteStyle(modifiedStyle); } } diff --git a/src/net/sourceforge/plantuml/objectdiagram/AbstractClassOrObjectDiagram.java b/src/net/sourceforge/plantuml/objectdiagram/AbstractClassOrObjectDiagram.java index e8abb6143..b189bbc14 100644 --- a/src/net/sourceforge/plantuml/objectdiagram/AbstractClassOrObjectDiagram.java +++ b/src/net/sourceforge/plantuml/objectdiagram/AbstractClassOrObjectDiagram.java @@ -127,10 +127,10 @@ public abstract class AbstractClassOrObjectDiagram extends AbstractEntityDiagram final Ident ident1B = buildLeafIdent(name1B); final Ident ident2A = buildLeafIdent(name2A); final Ident ident2B = buildLeafIdent(name2B); - final Code code1A = this.V1972() ? ident1A : buildCode(name1A); - final Code code1B = this.V1972() ? ident1B : buildCode(name1B); - final Code code2A = this.V1972() ? ident2A : buildCode(name2A); - final Code code2B = this.V1972() ? ident2B : buildCode(name2B); + final Code code1A = buildCode(name1A); + final Code code1B = buildCode(name1B); + final Code code2A = buildCode(name2A); + final Code code2B = buildCode(name2B); final IEntity entity1A = getOrCreateLeaf(ident1A, code1A, null, null); final IEntity entity1B = getOrCreateLeaf(ident1B, code1B, null, null); final IEntity entity2A = getOrCreateLeaf(ident2A, code2A, null, null); @@ -142,8 +142,8 @@ public abstract class AbstractClassOrObjectDiagram extends AbstractEntityDiagram final String tmp2 = this.getUniqueSequence("apoint"); final Ident ident1 = buildLeafIdent(tmp1); final Ident ident2 = buildLeafIdent(tmp2); - final Code code1 = this.V1972() ? ident1 : buildCode(tmp1); - final Code code2 = this.V1972() ? ident2 : buildCode(tmp2); + final Code code1 = buildCode(tmp1); + final Code code2 = buildCode(tmp2); final IEntity point1 = getOrCreateLeaf(ident1, code1, LeafType.POINT_FOR_ASSOCIATION, null); final IEntity point2 = getOrCreateLeaf(ident2, code2, LeafType.POINT_FOR_ASSOCIATION, null); @@ -201,8 +201,8 @@ public abstract class AbstractClassOrObjectDiagram extends AbstractEntityDiagram Display label) { final Ident ident1 = buildLeafIdent(name1); final Ident ident2 = buildLeafIdent(name2); - final Code code1 = this.V1972() ? ident1 : buildCode(name1); - final Code code2 = this.V1972() ? ident2 : buildCode(name2); + final Code code1 = buildCode(name1); + final Code code2 = buildCode(name2); final IEntity entity1 = getOrCreateLeaf(ident1, code1, null, null); final IEntity entity2 = getOrCreateLeaf(ident2, code2, null, null); final List same = getExistingAssociatedPoints(entity1, entity2); @@ -253,7 +253,7 @@ public abstract class AbstractClassOrObjectDiagram extends AbstractEntityDiagram this.associed = associed; final String idShort = AbstractClassOrObjectDiagram.this.getUniqueSequence("apoint"); final Ident ident = buildLeafIdent(idShort); - final Code code = AbstractClassOrObjectDiagram.this.V1972() ? ident : buildCode(idShort); + final Code code = buildCode(idShort); point = getOrCreateLeaf(ident, code, LeafType.POINT_FOR_ASSOCIATION, null); } @@ -313,11 +313,11 @@ public abstract class AbstractClassOrObjectDiagram extends AbstractEntityDiagram addLink(pointToEntity2); if (mode == 1) { - pointToAssocied = new Link(getIEntityFactory(), getSkinParam().getCurrentStyleBuilder(), point, associed, - linkType, LinkArg.build(label, length)); + pointToAssocied = new Link(getIEntityFactory(), getSkinParam().getCurrentStyleBuilder(), point, + associed, linkType, LinkArg.build(label, length)); } else { - pointToAssocied = new Link(getIEntityFactory(), getSkinParam().getCurrentStyleBuilder(), associed, point, - linkType, LinkArg.build(label, length)); + pointToAssocied = new Link(getIEntityFactory(), getSkinParam().getCurrentStyleBuilder(), associed, + point, linkType, LinkArg.build(label, length)); } addLink(pointToAssocied); } diff --git a/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateEntityObject.java b/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateEntityObject.java index 2afc6441e..934618ce0 100644 --- a/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateEntityObject.java +++ b/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateEntityObject.java @@ -81,13 +81,13 @@ public class CommandCreateEntityObject extends SingleLineCommand2 private IEntity executeArg0(AbstractEntityDiagram diagram, RegexResult line0) throws NoSuchColorException { final String name = line0.get("NAME", 1); final Ident ident = diagram.buildLeafIdent(name); - final Code code = diagram.V1972() ? ident : diagram.buildCode(name); + final Code code = diagram.buildCode(name); final String display = line0.get("NAME", 0); final String stereotype = line0.get("STEREO", 0); - final boolean leafExist = diagram.V1972() ? diagram.leafExistSmart(ident) : diagram.leafExist(code); + final boolean leafExist = diagram.leafExist(code); if (leafExist) return diagram.getOrCreateLeaf(diagram.buildLeafIdent(name), code, LeafType.JSON, null); @@ -158,8 +158,8 @@ public class CommandCreateJson extends CommandMultilines2 diagram.getSkinParam().getIHtmlColorSet())); final String s = line0.get("COLOR", 0); - entity.setSpecificColorTOBEREMOVED(ColorType.BACK, s == null ? null - : diagram.getSkinParam().getIHtmlColorSet().getColor(s)); + entity.setSpecificColorTOBEREMOVED(ColorType.BACK, + s == null ? null : diagram.getSkinParam().getIHtmlColorSet().getColor(s)); return entity; } diff --git a/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateJsonSingleLine.java b/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateJsonSingleLine.java index 8d3254d43..7e8ac9701 100644 --- a/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateJsonSingleLine.java +++ b/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateJsonSingleLine.java @@ -113,10 +113,10 @@ public class CommandCreateJsonSingleLine extends SingleLineCommand2 private IEntity executeArg0(AbstractEntityDiagram diagram, RegexResult line0) throws NoSuchColorException { final String name = line0.get("NAME", 1); final Ident ident = diagram.buildLeafIdent(name); - final Code code = diagram.V1972() ? ident : diagram.buildCode(name); + final Code code = diagram.buildCode(name); final String display = line0.get("NAME", 0); final String stereotype = line0.get("STEREO", 0); - final boolean leafExist = diagram.V1972() ? diagram.leafExistSmart(ident) : diagram.leafExist(code); + final boolean leafExist = diagram.leafExist(code); if (leafExist) return diagram.getOrCreateLeaf(diagram.buildLeafIdent(name), code, LeafType.MAP, null); diff --git a/src/net/sourceforge/plantuml/statediagram/StateDiagram.java b/src/net/sourceforge/plantuml/statediagram/StateDiagram.java index d370d6942..b41ba7134 100644 --- a/src/net/sourceforge/plantuml/statediagram/StateDiagram.java +++ b/src/net/sourceforge/plantuml/statediagram/StateDiagram.java @@ -42,7 +42,6 @@ import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.baraye.EntityUtils; import net.sourceforge.plantuml.baraye.IEntity; import net.sourceforge.plantuml.baraye.IGroup; -import net.sourceforge.plantuml.baraye.ILeaf; import net.sourceforge.plantuml.classdiagram.AbstractEntityDiagram; import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Code; @@ -64,9 +63,6 @@ public class StateDiagram extends AbstractEntityDiagram { } public boolean checkConcurrentStateOk(Ident ident, Code code) { - if (this.V1972()) { - return checkConcurrentStateOkInternal1972(ident); - } final boolean result = checkConcurrentStateOkInternal(code); // System.err.println("checkConcurrentStateOk " + code + " " + ident + " " + // result); @@ -89,50 +85,18 @@ public class StateDiagram extends AbstractEntityDiagram { return true; } - private boolean checkConcurrentStateOkInternal1972(Ident ident) { - if (leafExistSmart(ident) == false) { - return true; - } - final IEntity existing = this.getLeafSmart(ident); - if (getCurrentGroup().getGroupType() == GroupType.CONCURRENT_STATE - && getCurrentGroup() != existing.getParentContainer()) { - return false; - } - if (existing.getParentContainer().getGroupType() == GroupType.CONCURRENT_STATE - && getCurrentGroup() != existing.getParentContainer()) { - return false; - } - return true; - } - @Override public IEntity getOrCreateLeaf(Ident ident, Code code, LeafType type, USymbol symbol) { if (checkConcurrentStateOk(Objects.requireNonNull(ident), code) == false) { throw new IllegalStateException("Concurrent State " + code); } - if (!this.V1972() && type == null) { - if (code.getName().startsWith("[*]")) { + if (type == null) { + if (code.getName().startsWith("[*]")) throw new IllegalArgumentException(); - } - if (isGroup(code)) { - return getGroup(code); - } - return getOrCreateLeafDefault(ident, code, LeafType.STATE, null); - } - if (this.V1972() && type == null) { - if (ident.getName().startsWith("[*]")) { - throw new IllegalArgumentException(); - } - if (isGroupVerySmart(ident)) { - return getGroupVerySmart(ident); - } - if (getNamespaceSeparator() == null) { - final ILeaf result = getLeafVerySmart(ident); - if (result != null) { - return result; - } - } + if (isGroup(code)) + return getGroup(code); + return getOrCreateLeafDefault(ident, code, LeafType.STATE, null); } return getOrCreateLeafDefault(ident, code, type, symbol); @@ -142,12 +106,12 @@ public class StateDiagram extends AbstractEntityDiagram { final IGroup g = getCurrentGroup(); if (EntityUtils.groupRoot(g)) { final Ident ident = buildLeafIdent("*start"); - final Code code = this.V1972() ? ident : buildCode("*start"); + final Code code = buildCode("*start"); return getOrCreateLeaf(ident, code, LeafType.CIRCLE_START, null); } final String idShort = "*start*" + g.getCodeGetName(); final Ident ident = buildLeafIdent(idShort); - final Code code = this.V1972() ? ident : buildCode(idShort); + final Code code = buildCode(idShort); return getOrCreateLeaf(ident, code, LeafType.CIRCLE_START, null); } @@ -155,12 +119,12 @@ public class StateDiagram extends AbstractEntityDiagram { final IGroup p = getCurrentGroup(); if (EntityUtils.groupRoot(p)) { final Ident ident = buildLeafIdent("*end"); - final Code code = this.V1972() ? ident : buildCode("*end"); + final Code code = buildCode("*end"); return getOrCreateLeaf(ident, code, LeafType.CIRCLE_END, null); } final String idShort = "*end*" + p.getCodeGetName(); final Ident ident = buildLeafIdent(idShort); - final Code code = this.V1972() ? ident : buildCode(idShort); + final Code code = buildCode(idShort); return getOrCreateLeaf(ident, code, LeafType.CIRCLE_END, null); } @@ -173,19 +137,19 @@ public class StateDiagram extends AbstractEntityDiagram { } final String idShort = "*historical*" + g.getCodeGetName(); final Ident ident = buildLeafIdent(idShort); - final Code code = this.V1972() ? ident : buildCode(idShort); + final Code code = buildCode(idShort); return getOrCreateLeaf(ident, code, LeafType.PSEUDO_STATE, null); } public IEntity getHistorical(String idShort) { final Ident idNewLong = buildLeafIdent(idShort); - final Code codeGroup = this.V1972() ? idNewLong : buildCode(idShort); + final Code codeGroup = buildCode(idShort); gotoGroup(idNewLong, codeGroup, Display.getWithNewlines(codeGroup), GroupType.STATE, getRootGroup(), NamespaceStrategy.SINGLE); final IEntity g = getCurrentGroup(); final String tmp = "*historical*" + g.getCodeGetName(); final Ident ident = buildLeafIdent(tmp); - final Code code = this.V1972() ? ident : buildCode(tmp); + final Code code = buildCode(tmp); final IEntity result = getOrCreateLeaf(ident, code, LeafType.PSEUDO_STATE, null); endGroup(); return result; @@ -201,19 +165,19 @@ public class StateDiagram extends AbstractEntityDiagram { final String idShort = "*deephistory*" + g.getCodeGetName(); final Ident ident = buildLeafIdent(idShort); - final Code code = this.V1972() ? ident : buildCode(idShort); + final Code code = buildCode(idShort); return getOrCreateLeaf(ident, code, LeafType.DEEP_HISTORY, null); } public IEntity getDeepHistory(String idShort) { final Ident idNewLong = buildLeafIdent(idShort); - final Code codeGroup = this.V1972() ? idNewLong : buildCode(idShort); + final Code codeGroup = buildCode(idShort); gotoGroup(idNewLong, codeGroup, Display.getWithNewlines(codeGroup), GroupType.STATE, getRootGroup(), NamespaceStrategy.SINGLE); final IEntity g = getCurrentGroup(); final String tmp = "*deephistory*" + g.getCodeGetName(); final Ident ident = buildLeafIdent(tmp); - final Code code = this.V1972() ? ident : buildCode(tmp); + final Code code = buildCode(tmp); final IEntity result = getOrCreateLeaf(ident, code, LeafType.DEEP_HISTORY, null); endGroup(); return result; @@ -228,7 +192,7 @@ public class StateDiagram extends AbstractEntityDiagram { getCurrentGroup().setConcurrentSeparator(direction); final String tmp1 = this.getUniqueSequence(CONCURRENT_PREFIX); final Ident ident1 = buildLeafIdent(tmp1); - final Code code1 = this.V1972() ? ident1 : buildCode(tmp1); + final Code code1 = buildCode(tmp1); gotoGroup(ident1, code1, Display.create(""), GroupType.CONCURRENT_STATE, getCurrentGroup(), NamespaceStrategy.SINGLE); final IGroup conc1 = getCurrentGroup(); @@ -237,7 +201,7 @@ public class StateDiagram extends AbstractEntityDiagram { super.endGroup(); final String tmp2 = this.getUniqueSequence(CONCURRENT_PREFIX); final Ident ident2 = buildLeafIdent(tmp2); - final Code code2 = this.V1972() ? ident2 : buildCode(tmp2); + final Code code2 = buildCode(tmp2); gotoGroup(ident2, code2, Display.create(""), GroupType.CONCURRENT_STATE, getCurrentGroup(), NamespaceStrategy.SINGLE); } @@ -253,12 +217,12 @@ public class StateDiagram extends AbstractEntityDiagram { // } @Override - public void endGroup() { + public boolean endGroup() { final IGroup cur = getCurrentGroup(); - if (EntityUtils.groupRoot(cur) == false && cur.getGroupType() == GroupType.CONCURRENT_STATE) { + if (EntityUtils.groupRoot(cur) == false && cur.getGroupType() == GroupType.CONCURRENT_STATE) super.endGroup(); - } - super.endGroup(); + + return super.endGroup(); } private boolean hideEmptyDescription = false; diff --git a/src/net/sourceforge/plantuml/statediagram/command/CommandAddField.java b/src/net/sourceforge/plantuml/statediagram/command/CommandAddField.java index 2c30ebc12..f66c06d7b 100644 --- a/src/net/sourceforge/plantuml/statediagram/command/CommandAddField.java +++ b/src/net/sourceforge/plantuml/statediagram/command/CommandAddField.java @@ -97,13 +97,7 @@ public class CommandAddField extends SingleLineCommand2 { final String field = arg.get("FIELD", 0); Ident ident = diagram.buildLeafIdent(codeString); - if (diagram.V1972()) { - // This is very bad. xi04 xc06 - if (ident.parent().getLast().equals(codeString)) { - ident = ident.parent(); - } - } - final Code code = diagram.V1972() ? ident : diagram.buildCode(codeString); + final Code code = diagram.buildCode(codeString); final IEntity entity = diagram.getOrCreateLeaf(ident, code, null, null); entity.getBodier().addFieldOrMethod(field); diff --git a/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackage2.java b/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackage2.java index 76f2b5572..33b74878b 100644 --- a/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackage2.java +++ b/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackage2.java @@ -114,7 +114,7 @@ public class CommandCreatePackage2 extends SingleLineCommand2 { final IGroup currentPackage = diagram.getCurrentGroup(); final String idShort = getNotNull(arg, "CODE1", "CODE2"); final Ident idNewLong = diagram.buildLeafIdentSpecial(idShort); - final Code code = diagram.V1972() ? idNewLong : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); String display = getNotNull(arg, "DISPLAY1", "DISPLAY2"); if (display == null) display = code.getName(); @@ -137,8 +137,7 @@ public class CommandCreatePackage2 extends SingleLineCommand2 { Colors colors = color().getColor(arg, diagram.getSkinParam().getIHtmlColorSet()); final String s = arg.get("LINECOLOR", 1); - final HColor lineColor = s == null ? null - : diagram.getSkinParam().getIHtmlColorSet().getColor(s); + final HColor lineColor = s == null ? null : diagram.getSkinParam().getIHtmlColorSet().getColor(s); if (lineColor != null) colors = colors.add(ColorType.LINE, lineColor); diff --git a/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackageState.java b/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackageState.java index e19ea21fa..e1c836b14 100644 --- a/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackageState.java +++ b/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackageState.java @@ -119,7 +119,7 @@ public class CommandCreatePackageState extends SingleLineCommand2 final IGroup currentPackage = diagram.getCurrentGroup(); final String idShort = getNotNull(arg, "CODE1", "CODE2"); final Ident idNewLong = diagram.buildLeafIdentSpecial(idShort); - final Code code = diagram.V1972() ? idNewLong : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); String display = getNotNull(arg, "DISPLAY1", "DISPLAY2"); if (display == null) display = code.getName(); diff --git a/src/net/sourceforge/plantuml/statediagram/command/CommandCreateState.java b/src/net/sourceforge/plantuml/statediagram/command/CommandCreateState.java index 9c64c68a3..83bfaa142 100644 --- a/src/net/sourceforge/plantuml/statediagram/command/CommandCreateState.java +++ b/src/net/sourceforge/plantuml/statediagram/command/CommandCreateState.java @@ -114,23 +114,23 @@ public class CommandCreateState extends SingleLineCommand2 { throws NoSuchColorException { final String idShort = arg.getLazzy("CODE", 0); final Ident ident = diagram.buildLeafIdent(idShort); - final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); + final Code code = diagram.buildCode(idShort); String display = arg.getLazzy("DISPLAY", 0); - if (display == null) + if (display == null) display = code.getName(); - + final String stereotype = arg.get("STEREOTYPE", 0); final LeafType type = getTypeFromStereotype(stereotype); - if (diagram.checkConcurrentStateOk(ident, code) == false) + if (diagram.checkConcurrentStateOk(ident, code) == false) return CommandExecutionResult.error("The state " + code.getName() + " has been created in a concurrent state : it cannot be used here."); - + final IEntity ent = diagram.getOrCreateLeaf(diagram.buildLeafIdent(idShort), code, type, null); ent.setDisplay(Display.getWithNewlines(display)); - if (stereotype != null) + if (stereotype != null) ent.setStereotype(Stereotype.build(stereotype)); - + final String urlString = arg.get("URL", 0); if (urlString != null) { final UrlBuilder urlBuilder = new UrlBuilder(diagram.getSkinParam().getValue("topurl"), UrlMode.STRICT); @@ -141,14 +141,13 @@ public class CommandCreateState extends SingleLineCommand2 { Colors colors = color().getColor(arg, diagram.getSkinParam().getIHtmlColorSet()); final String s = arg.get("LINECOLOR", 1); - final HColor lineColor = s == null ? null - : diagram.getSkinParam().getIHtmlColorSet().getColor(s); - if (lineColor != null) + final HColor lineColor = s == null ? null : diagram.getSkinParam().getIHtmlColorSet().getColor(s); + if (lineColor != null) colors = colors.add(ColorType.LINE, lineColor); - - if (arg.get("LINECOLOR", 0) != null) + + if (arg.get("LINECOLOR", 0) != null) colors = colors.addLegacyStroke(arg.get("LINECOLOR", 0)); - + ent.setColors(colors); // ent.setSpecificColorTOBEREMOVED(ColorType.BACK, @@ -160,36 +159,36 @@ public class CommandCreateState extends SingleLineCommand2 { // ent.applyStroke(arg.get("LINECOLOR", 0)); final String addFields = arg.get("ADDFIELD", 0); - if (addFields != null) + if (addFields != null) ent.getBodier().addFieldOrMethod(addFields); - + CommandCreateClassMultilines.addTags(ent, arg.getLazzy("TAGS", 0)); return CommandExecutionResult.ok(); } private LeafType getTypeFromStereotype(String stereotype) { - if ("<>".equalsIgnoreCase(stereotype)) + if ("<>".equalsIgnoreCase(stereotype)) return LeafType.STATE_CHOICE; - - if ("<>".equalsIgnoreCase(stereotype)) + + if ("<>".equalsIgnoreCase(stereotype)) return LeafType.STATE_FORK_JOIN; - - if ("<>".equalsIgnoreCase(stereotype)) + + if ("<>".equalsIgnoreCase(stereotype)) return LeafType.STATE_FORK_JOIN; - - if ("<>".equalsIgnoreCase(stereotype)) + + if ("<>".equalsIgnoreCase(stereotype)) return LeafType.CIRCLE_START; - - if ("<>".equalsIgnoreCase(stereotype)) + + if ("<>".equalsIgnoreCase(stereotype)) return LeafType.CIRCLE_END; - - if ("<>".equalsIgnoreCase(stereotype)) + + if ("<>".equalsIgnoreCase(stereotype)) return LeafType.PSEUDO_STATE; - - if ("<>".equalsIgnoreCase(stereotype)) + + if ("<>".equalsIgnoreCase(stereotype)) return LeafType.DEEP_HISTORY; - + return null; } diff --git a/src/net/sourceforge/plantuml/statediagram/command/CommandLinkStateCommon.java b/src/net/sourceforge/plantuml/statediagram/command/CommandLinkStateCommon.java index cea88fbde..440417a76 100644 --- a/src/net/sourceforge/plantuml/statediagram/command/CommandLinkStateCommon.java +++ b/src/net/sourceforge/plantuml/statediagram/command/CommandLinkStateCommon.java @@ -168,11 +168,11 @@ abstract class CommandLinkStateCommon extends SingleLineCommand2 { if (codeString.startsWith("=") && codeString.endsWith("=")) { final String codeString1 = removeEquals(codeString); final Ident ident1 = diagram.buildLeafIdent(codeString1); - final Code code1 = diagram.V1972() ? ident1 : diagram.buildCode(codeString1); + final Code code1 = diagram.buildCode(codeString1); return diagram.getOrCreateLeaf(ident1, code1, LeafType.SYNCHRO_BAR, null); } final Ident ident = diagram.buildLeafIdent(codeString); - final Code code = diagram.V1972() ? ident : diagram.buildCode(codeString); + final Code code = diagram.buildCode(codeString); if (diagram.checkConcurrentStateOk(ident, code) == false) return null; diff --git a/src/net/sourceforge/plantuml/style/parser/StyleParser.java b/src/net/sourceforge/plantuml/style/parser/StyleParser.java index 9c2433fd5..83f979a3d 100644 --- a/src/net/sourceforge/plantuml/style/parser/StyleParser.java +++ b/src/net/sourceforge/plantuml/style/parser/StyleParser.java @@ -79,6 +79,11 @@ public class StyleParser { if (token.getType() == StyleTokenType.SEMICOLON) continue; + if (token.getType() == StyleTokenType.STRING && token.getData().equalsIgnoreCase("")) + continue; + if (ins.peek(0).getType() == StyleTokenType.COMMA) { final String full = token.getData() + readWithComma(ins); skipNewLines(ins); @@ -255,8 +260,6 @@ public class StyleParser { result.add(new StyleToken(StyleTokenType.STRING, s)); } else { final String s = readString(ins); - if (s.startsWith("<")) - throw new StyleParsingException("Cannot understand <"); result.add(new StyleToken(StyleTokenType.STRING, s)); } } diff --git a/src/net/sourceforge/plantuml/svek/CucaDiagramFileMakerSvek.java b/src/net/sourceforge/plantuml/svek/CucaDiagramFileMakerSvek.java index 85012429c..38078c4dc 100644 --- a/src/net/sourceforge/plantuml/svek/CucaDiagramFileMakerSvek.java +++ b/src/net/sourceforge/plantuml/svek/CucaDiagramFileMakerSvek.java @@ -78,9 +78,8 @@ public final class CucaDiagramFileMakerSvek implements CucaDiagramFileMaker { diagram.getLeafsvalues(), diagram.getUmlDiagramType(), diagram.getSkinParam(), diagram, diagram, diagram.getEntityFactory(), diagram.isHideEmptyDescriptionForState(), dotMode, diagram.getNamespaceSeparator(), diagram.getPragma()); - final boolean intricated = diagram.mergeIntricated(); - return new GeneralImageBuilder(intricated, dotData, diagram.getEntityFactory(), diagram.getSource(), - diagram.getPragma(), stringBounder, diagram.getUmlDiagramType().getStyleName()); + return new GeneralImageBuilder(dotData, diagram.getEntityFactory(), diagram.getSource(), diagram.getPragma(), + stringBounder, diagram.getUmlDiagramType().getStyleName()); } diff --git a/src/net/sourceforge/plantuml/svek/DotStringFactory.java b/src/net/sourceforge/plantuml/svek/DotStringFactory.java index 26cf652dd..2171cba49 100644 --- a/src/net/sourceforge/plantuml/svek/DotStringFactory.java +++ b/src/net/sourceforge/plantuml/svek/DotStringFactory.java @@ -349,8 +349,7 @@ public class DotStringFactory implements Moveable { return graphviz.getDotExe(); } - public void solve(boolean mergeIntricated, EntityFactory entityFactory, final String svg) - throws IOException, InterruptedException { + public void solve(EntityFactory entityFactory, final String svg) throws IOException, InterruptedException { if (svg.length() == 0) throw new EmptySvgException(); @@ -407,12 +406,6 @@ public class DotStringFactory implements Moveable { } for (Cluster cluster : bibliotekon.allCluster()) { - if (mergeIntricated) { - final IGroup group = cluster.getGroups().iterator().next(); - if (entityFactory.isIntricated(group) != null) - continue; - - } int idx = getClusterIndex(svg, cluster.getColor()); final int starting = idx; final List points = svgResult.substring(starting).extractList(SvgResult.POINTS_EQUALS); diff --git a/src/net/sourceforge/plantuml/svek/GeneralImageBuilder.java b/src/net/sourceforge/plantuml/svek/GeneralImageBuilder.java index 3b0984b92..4f3e0279e 100644 --- a/src/net/sourceforge/plantuml/svek/GeneralImageBuilder.java +++ b/src/net/sourceforge/plantuml/svek/GeneralImageBuilder.java @@ -296,11 +296,10 @@ public final class GeneralImageBuilder { private Map maxX; private final StringBounder stringBounder; - private final boolean mergeIntricated; private final SName styleName; - public GeneralImageBuilder(boolean mergeIntricated, DotData dotData, EntityFactory entityFactory, UmlSource source, - Pragma pragma, StringBounder stringBounder, SName styleName) { + public GeneralImageBuilder(DotData dotData, EntityFactory entityFactory, UmlSource source, Pragma pragma, + StringBounder stringBounder, SName styleName) { this.dotData = dotData; this.styleName = styleName; this.entityFactory = entityFactory; @@ -308,7 +307,6 @@ public final class GeneralImageBuilder { this.pragma = pragma; this.stringBounder = stringBounder; this.strictUmlStyle = dotData.getSkinParam().strictUmlStyle(); - this.mergeIntricated = mergeIntricated; } final public StyleSignature getDefaultStyleDefinitionArrow(Stereotype stereotype) { @@ -462,7 +460,7 @@ public final class GeneralImageBuilder { final String graphvizVersion = extractGraphvizVersion(svg); try { - dotStringFactory.solve(mergeIntricated, dotData.getEntityFactory(), svg); + dotStringFactory.solve(dotData.getEntityFactory(), svg); final SvekResult result = new SvekResult(dotData, dotStringFactory); this.maxX = dotStringFactory.getBibliotekon().getMaxX(); return result; @@ -608,14 +606,6 @@ public final class GeneralImageBuilder { if (g.getGroupType() == GroupType.CONCURRENT_STATE) return; - if (mergeIntricated) { - final IGroup intricated = dotData.getEntityFactory().isIntricated(g); - if (intricated != null) { - printGroup(dotStringFactory, intricated); - return; - } - } - final ClusterHeader clusterHeader = new ClusterHeader((EntityImp) g, dotData.getSkinParam(), dotData, stringBounder); dotStringFactory.openCluster(g, clusterHeader); diff --git a/src/net/sourceforge/plantuml/svek/GroupPngMakerActivity.java b/src/net/sourceforge/plantuml/svek/GroupPngMakerActivity.java index 400ce0225..675c60734 100644 --- a/src/net/sourceforge/plantuml/svek/GroupPngMakerActivity.java +++ b/src/net/sourceforge/plantuml/svek/GroupPngMakerActivity.java @@ -120,7 +120,7 @@ public final class GroupPngMakerActivity { skinParam, new InnerGroupHierarchy(), diagram.getEntityFactory(), false, DotMode.NORMAL, diagram.getNamespaceSeparator(), diagram.getPragma()); - final GeneralImageBuilder svek2 = new GeneralImageBuilder(false, dotData, diagram.getEntityFactory(), + final GeneralImageBuilder svek2 = new GeneralImageBuilder(dotData, diagram.getEntityFactory(), diagram.getSource(), diagram.getPragma(), stringBounder, SName.activityDiagram); if (group.getGroupType() == GroupType.INNER_ACTIVITY) { diff --git a/src/net/sourceforge/plantuml/svek/GroupPngMakerState.java b/src/net/sourceforge/plantuml/svek/GroupPngMakerState.java index f58fc5859..159c6ec60 100644 --- a/src/net/sourceforge/plantuml/svek/GroupPngMakerState.java +++ b/src/net/sourceforge/plantuml/svek/GroupPngMakerState.java @@ -134,7 +134,7 @@ public final class GroupPngMakerState { diagram.isHideEmptyDescriptionForState(), DotMode.NORMAL, diagram.getNamespaceSeparator(), diagram.getPragma()); - final GeneralImageBuilder svek2 = new GeneralImageBuilder(false, dotData, diagram.getEntityFactory(), + final GeneralImageBuilder svek2 = new GeneralImageBuilder(dotData, diagram.getEntityFactory(), diagram.getSource(), diagram.getPragma(), stringBounder, SName.stateDiagram); if (group.getGroupType() == GroupType.CONCURRENT_STATE) diff --git a/src/net/sourceforge/plantuml/version/Version.java b/src/net/sourceforge/plantuml/version/Version.java index 914dd3fb8..5a1b0c65f 100644 --- a/src/net/sourceforge/plantuml/version/Version.java +++ b/src/net/sourceforge/plantuml/version/Version.java @@ -81,7 +81,7 @@ public class Version { } public static int beta() { - final int beta = 1; + final int beta = 2; return beta; } diff --git a/stdlib/azure-abx.repx b/stdlib/azure-abx.repx index 4bf58d68924e244829bb7e157ae0efc27893d631..ec8a89f67de87d92582f0e08d4ff02a649ff90d0 100644 GIT binary patch literal 10752 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 O3$;#Yg01(}TK^AkRfzBa literal 8969 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%0A6e)_KL6 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℞|R zNu@pAWA`HvS(I9w<5s3=u!c`)q%oLzzaXiQX`qqXwQObIee7CpWQeyeHg^!4Ore3G zkVKY%4WJC1610_r-J))de)!5*QT}tyZbAji<58-o2ip_WT7Ywx6WtDzthxWi#Tpgp z5nh*`@ji9>M(oqi72l4G)B@WVxj@sSC^YY;bD8w9FQLDwlu12!kjhBSUlD#GI{)s3 ztSS-qVb7mN&M^Yd_aAH)(<#;of3eBa>Y=pAL&;|S_UJ$RvB^W%Ix#Ww%wsAh&_U#l$;ch4&)r@`Mar5i<@%8ztDk3jn*ifI9 zZl<(1+H6hT;+J1)1K@rifNCPm8~Q`f#Z+W*7p7@8Ib!zY(=Jy`$L^toi8o|niyNnT zHW?i@X{V%katSruOn6DMC7WE&o_*gjLh1fEC5JF%k*E{BJ;)qWJRSF+3?im4OVh;J z@aM^zIJ?*n&;`35O!K_y2W}4v!0yCkKa#~5wa8C!fn8ksR!e8Q5{R~R$Q~vYsj2aS z&qi;INeMdTWEr8XlkB z-F4~f!Mwk+NQOxrM3N_JI6Vp6Lef;7$)wJfnXDt^LJ5Xj$Tu2v^%}dr_)~W-#5Mxe z>Q|A|O1GU+E8nEHXlk6)RJz`jOp1b`H<^|h18+;#{&=wW3mQcRLb&;+403G8|XHhFCmdQg&*S$7D(D%?o9 zekYlNs3iP|jC@$sADJnuu@d=HlmWl*G`pr9OqzJfwVkCK{w2(p#t zX!g9M`|T2fV*J4cB5yxIVL#LK3+11h+!#S#G@&t$W=y|~FejV@Y=Xf4u3(p z9j%+DYk9@9ekI}tW?oa(>TP$v?LlCAa3Y{?r_^XAy36fC=@=*_f}q=gff?v?j&^8FYkJ+{w)%W_{sGRWP!Gny>!?795w-*{nX5aD9bNP)`O`|c(6&tRU zdU!;2s#D&rEbYQtW}pOL$fl*><5EahdRnWL-Gcxy)Mc5zY`oEDP2iW5ilwrgURjN0 zn&wRJe`JncFbXY0>;J?Wo1B2006cBk!#X+9B=_kQnS${<_&bc~fJ!q0fcNHp#dAC4SY90p2)l&h+dF-+#Y|=Um8=Ee2Y$GYLAz?M7^Va%`iGzYauv4xz_Sq%Wt#hF7`vM)-a z)IjwXuep~({QH^)&_7EZNC;=32o9b{w1~gP%o{Vp4aymwcOIJ*cAm(H@b?kkTzrB( znd=8dd=jcW&WhW3Utko87Vv9~liaHE>L(n0Ly84+#77ygM~s}yM~Ax(f9NKJ50L+@ zH}>y~4rkbgtJ__d{vvdrw+0tF9hvDHh4{WwhMZ5(vfutpUgZBGMt=ygKnkI(em$;r z!%Dk1RJEyJ1!ql5yXFME_M|9%^i+ht>31D@yQEbfk64#7q7jqq5I*DZ1Vv*T#DgD2 zNsd34r`thCC*{kWi85%zxRqpaeV}wKl}|%ql$nUVq=MQb->oJ^8Hj^E&?JT=F>&9C zrpyN{%F1B6-=hsNSGJ3Ss{xJXON|853LGn`DeHmur@BHIgx-Rq0O)dAaQ1Gk`k^{3 zH-?=zJBj0ZI%{4AK?yY}Kno>@q;TC895r&Hu$jPCjwImhANcBCa@#@`UPR;; z5<)H^$x&NkQWOy=2cjjpN~!rqFOyu-ztUNtH7FMfo6kig=_M6_J~wB$q!kF3r?8X} zNGNDa#5Ii|3%WH3ZD^^ga3inT9~aZ{YXvKGTFFE?{#4@H67#F=bND6`9wYc;WRxth z0T)%#4w5V58`=RTn9BqSTY|6*?RERrR`qdz(v)4*!_IU}Ng5BHd<*1;nli-e{$ac! zAwk*|H6t0?*NBJD?Me@5EfWGx{SUgvb_1xZ>N-)SZ_i6RleXx$X*)f3l8^R(hBNz| z=NH@c`9E*d=k?3iMq;2k877i7*q_~bYyNc`^#0U-H{MG;*3f9lcmHqx_RdFr7Zg#+ zO?tybHvMnD{CScU`;wdR-Z?fs<$AVl5hV4yNFUpXh|Xk;gk^hH$!nd3!|tW#P5ke? zzA4(rZDk$ZX{p=4*x{<9J8!$f>_-vLI=s-qH$PT9oV82YRcY?~pjw?Bq*%qzaUa=D zepD;M=m@t?64I29S0mY##-e#DrLaQZD?^esN9&IKhhsxbwqX&DAC+8gP1PDrwxW=1 zZSTQOTiK!^0~Y$~XEQ_?6op_m;Xxtmy~S8G5LR26Fw^uW{O*A{QHzIM1jbM)G)gkq zRZkEq;C6jaglY-7+J-VmXZwt@eIdR{^xG~de3mSopwt^<#Yid}t#`8_M&AzKQ&CR* zrd~%{mCa#&6pSalWS=F2xq+hM;JJydx~_F@PnhR#v4S6AoiU+fES8RV)?LZq$>KWs zNQ(C&=evciks@+IlCsZq9Mi6nAtqgDOc>kII_e{pcoQTxwo8t$%ti$|wXotzp7F(d0P0$d-? z`|UPR`DRdUd6BmCOk~5}HtE16wS7iOO(R`5wNxNNyrC(z^v~%$`xV4&Dnd=N&1K z&c$x2uZ~V=w|`-Zn-(H<3@7#Orw480Tr++Wp-D|UIsy}<3#;Hsq%Vx>Ou)H$xLzUm zig$fHXepF*MS;4?#mYQ+v2)S}WI|&}dybtsr;x~^XeZQXp-K2jJK=+rdH(*%;_V

6g?A_X=n0h_z^+sHW=;?+BuprU!3j8zG{)@ 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 TBzdbO0AN&G{+4PV!1ccXY}acD