summaryrefslogtreecommitdiff
path: root/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java')
-rw-r--r--src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java38
1 files changed, 27 insertions, 11 deletions
diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java
index e46a4eb..92a52e9 100644
--- a/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java
+++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java
@@ -2,7 +2,7 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
- * (C) Copyright 2009-2017, Arnaud Roques
+ * (C) Copyright 2009-2020, Arnaud Roques
*
* Project Info: http://plantuml.com
*
@@ -35,28 +35,44 @@
*/
package net.sourceforge.plantuml.classdiagram.command;
-import java.util.List;
-
+import net.sourceforge.plantuml.LineLocation;
+import net.sourceforge.plantuml.OptionFlags;
import net.sourceforge.plantuml.classdiagram.ClassDiagram;
import net.sourceforge.plantuml.command.CommandExecutionResult;
-import net.sourceforge.plantuml.command.SingleLineCommand;
+import net.sourceforge.plantuml.command.SingleLineCommand2;
+import net.sourceforge.plantuml.command.regex.IRegex;
+import net.sourceforge.plantuml.command.regex.RegexConcat;
+import net.sourceforge.plantuml.command.regex.RegexLeaf;
+import net.sourceforge.plantuml.command.regex.RegexResult;
import net.sourceforge.plantuml.cucadiagram.Code;
import net.sourceforge.plantuml.cucadiagram.Display;
+import net.sourceforge.plantuml.cucadiagram.Ident;
import net.sourceforge.plantuml.cucadiagram.LeafType;
-public class CommandDiamondAssociation extends SingleLineCommand<ClassDiagram> {
+public class CommandDiamondAssociation extends SingleLineCommand2<ClassDiagram> {
public CommandDiamondAssociation() {
- super("(?i)^\\<\\>[%s]*([\\p{L}0-9_.]+)$");
+ super(getRegexConcat());
+ }
+
+ static IRegex getRegexConcat() {
+ return RegexConcat.build(CommandDiamondAssociation.class.getName(), RegexLeaf.start(), //
+ new RegexLeaf("\\<\\>"), //
+ RegexLeaf.spaceZeroOrMore(), //
+ new RegexLeaf("CODE", "([\\p{L}0-9_.]+)"), //
+ RegexLeaf.end()); //
}
@Override
- protected CommandExecutionResult executeArg(ClassDiagram diagram, List<String> arg) {
- final Code code = Code.of(arg.get(0));
- if (diagram.leafExist(code)) {
- return CommandExecutionResult.error("Already existing : "+code.getFullName());
+ 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) {
+ return CommandExecutionResult.error("Already existing : " + code.getName());
}
- diagram.createLeaf(code, Display.NULL, LeafType.ASSOCIATION, null);
+ diagram.createLeaf(ident, code, Display.NULL, LeafType.ASSOCIATION, null);
return CommandExecutionResult.ok();
}