![JAR search and dependency download from the Maven repository](/logo.png)
net.sourceforge.plantuml.timingdiagram.command.CommandConstraint Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plantuml-mit Show documentation
Show all versions of plantuml-mit Show documentation
PlantUML is a component that allows to quickly write diagrams from text.
// THIS FILE HAS BEEN GENERATED BY A PREPROCESSOR.
package net.sourceforge.plantuml.timingdiagram.command;
import net.sourceforge.plantuml.command.CommandExecutionResult;
import net.sourceforge.plantuml.command.SingleLineCommand2;
import net.sourceforge.plantuml.klimt.color.NoSuchColorException;
import net.sourceforge.plantuml.regex.IRegex;
import net.sourceforge.plantuml.regex.RegexConcat;
import net.sourceforge.plantuml.regex.RegexLeaf;
import net.sourceforge.plantuml.regex.RegexOptional;
import net.sourceforge.plantuml.regex.RegexResult;
import net.sourceforge.plantuml.sequencediagram.command.CommandArrow;
import net.sourceforge.plantuml.skin.ArrowConfiguration;
import net.sourceforge.plantuml.timingdiagram.Player;
import net.sourceforge.plantuml.timingdiagram.TimeTick;
import net.sourceforge.plantuml.timingdiagram.TimingDiagram;
import net.sourceforge.plantuml.utils.LineLocation;
public class CommandConstraint extends SingleLineCommand2 {
public CommandConstraint() {
super(getRegexConcat());
}
private static IRegex getRegexConcat() {
return RegexConcat.build(CommandConstraint.class.getName(), RegexLeaf.start(), //
new RegexLeaf("PART1", "(" + CommandTimeMessage.PLAYER_CODE + ")?"), //
TimeTickBuilder.expressionAtWithArobase("TIME1"), //
RegexLeaf.spaceZeroOrMore(), //
new RegexLeaf("\\<"), //
new RegexLeaf("(-+)"), //
new RegexLeaf("ARROW_STYLE1", CommandArrow.getColorOrStylePattern()), //
new RegexLeaf("(-*)"), //
new RegexLeaf("\\>"), //
RegexLeaf.spaceZeroOrMore(), //
TimeTickBuilder.expressionAtWithArobase("TIME2"), //
RegexLeaf.spaceZeroOrMore(), //
new RegexOptional( //
new RegexConcat( //
new RegexLeaf(":"), //
RegexLeaf.spaceZeroOrMore(), //
new RegexLeaf("MESSAGE", "(.*)") //
)), //
RegexLeaf.spaceZeroOrMore(), RegexLeaf.end());
}
@Override
final protected CommandExecutionResult executeArg(TimingDiagram diagram, LineLocation location, RegexResult arg)
throws NoSuchColorException {
final String part1 = arg.get("PART1", 0);
final Player player1;
if (part1 == null) {
player1 = diagram.getLastPlayer();
if (player1 == null)
return CommandExecutionResult.error("You have to provide a participant");
} else {
player1 = diagram.getPlayer(part1);
if (player1 == null)
return CommandExecutionResult.error("No such participant " + part1);
}
final TimeTick tick1 = TimeTickBuilder.parseTimeTick("TIME1", arg, diagram);
if (tick1 == null)
return CommandExecutionResult.error("Unknown time label");
final TimeTick restore = diagram.getNow();
diagram.updateNow(tick1);
final TimeTick tick2 = TimeTickBuilder.parseTimeTick("TIME2", arg, diagram);
diagram.updateNow(restore);
if (tick2 == null)
return CommandExecutionResult.error("Unknown time label");
ArrowConfiguration config = ArrowConfiguration.withDirectionBoth();
config = CommandArrow.applyStyle(arg.getLazzy("ARROW_STYLE", 0), config);
player1.createConstraint(tick1, tick2, arg.get("MESSAGE", 0), config);
return CommandExecutionResult.ok();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy