@@ -191,7 +191,7 @@ public String toPlantUml(
191
191
);
192
192
}
193
193
194
- sb .append (plantUmlWriterParameters .getHiddenTransitions ());
194
+ sb .append (plantUmlWriterParameters .getAdditionalHiddenTransitions ());
195
195
196
196
sb .append ("\n @enduml" );
197
197
@@ -362,8 +362,8 @@ private void processCompositeOrOrthogonalState(
362
362
Map <State <S , E >, List <S >> exitToSourceStates
363
363
) {
364
364
sb .append ("""
365
- %s {
366
- """
365
+ %s {
366
+ """
367
367
.formatted (stateToString (indent , regionState .getId (), currentState , plantUmlWriterParameters ))
368
368
.stripIndent ());
369
369
@@ -386,15 +386,15 @@ public boolean test(Transition<S, E> transition) {
386
386
processExits (currentState , subRegion .getStates (), exitToSourceStates , plantUmlWriterParameters , sb , regionIndent );
387
387
// using "--" caused problem ... how to solve this..?
388
388
/*
389
- if (i != nRegions - 1) {
390
- // Separating regions. see "États concurrents [--, ||]" https://plantuml.com/fr/state-diagram#73b918d90b24a6c6
391
- sb.append(regionIndent).append("--\n");
392
- }
389
+ if (i != nRegions - 1) {
390
+ // Separating regions. see "Etats concurrents [--, ||]" https://plantuml.com/fr/state-diagram#73b918d90b24a6c6
391
+ sb.append(regionIndent).append("--\n");
392
+ }
393
393
*/
394
394
}
395
395
sb .append ("""
396
- %s}
397
- """ .formatted (indent ));
396
+ %s}
397
+ """ .formatted (indent ));
398
398
}
399
399
400
400
private void processSubmachine (
@@ -408,17 +408,17 @@ private void processSubmachine(
408
408
Map <State <S , E >, List <S >> exitToSourceStates
409
409
) {
410
410
sb .append ("""
411
- %s {
412
- """
411
+ %s {
412
+ """
413
413
.formatted (stateToString (indent , abstractState .getId (), currentState , plantUmlWriterParameters ))
414
414
.stripIndent ());
415
415
final String regionIndent = indent + INDENT_INCREMENT ;
416
416
processRegion (abstractState .getSubmachine (), stateContext , plantUmlWriterParameters , sb , regionIndent , null );
417
417
processEntries (currentState , abstractState .getSubmachine ().getStates (), entryToTargetStates , plantUmlWriterParameters , sb , regionIndent );
418
418
processExits (currentState , abstractState .getSubmachine ().getStates (), exitToSourceStates , plantUmlWriterParameters , sb , regionIndent );
419
419
sb .append ("""
420
- %s}
421
- """ .formatted (indent ));
420
+ %s}
421
+ """ .formatted (indent ));
422
422
}
423
423
424
424
private void processSimpleState (
@@ -434,8 +434,8 @@ private void processSimpleState(
434
434
// TODO allow plantUmlWriterParameters to add links in description ??
435
435
// eg: state "CarWithWheel [[http://plantuml.com/state-diagram]]" as CarWithWheel
436
436
sb .append ("""
437
- %s
438
- """
437
+ %s
438
+ """
439
439
.formatted (stateToString (indent , state .getId (), currentState , plantUmlWriterParameters ))
440
440
.stripIndent ());
441
441
}
@@ -483,8 +483,8 @@ private void processPseudoState(
483
483
case INITIAL -> {
484
484
if (StateMachineUtils .isPseudoState (state , PseudoStateKind .INITIAL )) {
485
485
sb .append ("""
486
- %s
487
- """
486
+ %s
487
+ """
488
488
.formatted (stateToString (indent , state .getId (), currentState , plantUmlWriterParameters ))
489
489
.stripIndent ());
490
490
}
@@ -496,18 +496,18 @@ private void processPseudoState(
496
496
// see historyStatesToHistoryId and historyTransitions
497
497
}
498
498
case ENTRY , EXIT -> sb .append ("""
499
- %sstate %s <<%s>>
500
- """
499
+ %sstate %s <<%s>>
500
+ """
501
501
.formatted (
502
502
indent ,
503
503
state .getId (),
504
504
getPseudoStatePlantUmlStereotype (pseudoStateKind )
505
505
).stripIndent ());
506
506
case END , CHOICE , FORK , JOIN , JUNCTION -> sb .append ("""
507
- %s'%s <<%s>>
508
- %sstate %s <<%s>>
509
- %snote left of %s %s: %s
510
- """
507
+ %s'%s <<%s>>
508
+ %sstate %s <<%s>>
509
+ %snote left of %s %s: %s
510
+ """
511
511
.formatted (
512
512
indent ,
513
513
state .getId (),
@@ -525,7 +525,7 @@ private void processPseudoState(
525
525
526
526
/**
527
527
* Return a PlantUML stereotype for a given PseudoStateKind<BR/>
528
- * we use << start>> stereotype for JUNCTION<BR/>
528
+ * we use <code><< start>></code> stereotype to represent {@link PseudoStateKind# JUNCTION} in PlantUML diagram <BR/>
529
529
* see <a href="https://sparxsystems.com/resources/tutorials/uml2/state-diagram.html">UML 2 - State Machine Diagram</a>
530
530
*
531
531
* @param pseudoStateKind pseudoStateKind
@@ -559,8 +559,8 @@ private void processStateDescription(
559
559
) {
560
560
for (E deferredEvent : state .getDeferredEvents ()) {
561
561
sb .append ("""
562
- %s%s : %s /defer
563
- """
562
+ %s%s : %s /defer
563
+ """
564
564
.formatted (
565
565
indent ,
566
566
state .getId (),
@@ -571,8 +571,8 @@ private void processStateDescription(
571
571
}
572
572
for (Function <StateContext <S , E >, Mono <Void >> entryAction : state .getEntryActions ()) {
573
573
sb .append ("""
574
- %s%s : /entry %s
575
- """
574
+ %s%s : /entry %s
575
+ """
576
576
.formatted (
577
577
indent ,
578
578
state .getId (),
@@ -583,8 +583,8 @@ private void processStateDescription(
583
583
}
584
584
for (Function <StateContext <S , E >, Mono <Void >> stateAction : state .getStateActions ()) {
585
585
sb .append ("""
586
- %s%s : /do %s
587
- """
586
+ %s%s : /do %s
587
+ """
588
588
.formatted (
589
589
indent ,
590
590
state .getId (),
@@ -595,8 +595,8 @@ private void processStateDescription(
595
595
}
596
596
for (Function <StateContext <S , E >, Mono <Void >> exitAction : state .getExitActions ()) {
597
597
sb .append ("""
598
- %s%s : /exit %s
599
- """
598
+ %s%s : /exit %s
599
+ """
600
600
.formatted (
601
601
indent ,
602
602
state .getId (),
@@ -660,10 +660,13 @@ private void processPseudoStatesTransition(
660
660
) {
661
661
S source = sourceState .getId ();
662
662
S target = targetState .getId ();
663
+ if (plantUmlWriterParameters .isTransitionIgnored (source , target )) {
664
+ return ;
665
+ }
663
666
sb .append ("""
664
- %s%s
665
- %s%s -%s%s-> %s %s
666
- """
667
+ %s%s
668
+ %s%s -%s%s-> %s %s
669
+ """
667
670
.formatted (
668
671
indent ,
669
672
historyIdGetter == null ? "" : "'" + source + " -> " + target , // if history transition, add a comment with 'real' state names
@@ -729,11 +732,11 @@ private void processTransitions(
729
732
case EXTERNAL , INTERNAL , LOCAL -> {
730
733
String arrowColor = plantUmlWriterParameters .getArrowColor (
731
734
currentContextTransition != null
732
- && transition .getTrigger () != null
733
- && (
734
- currentContextTransition .getSource () == source
735
- && currentContextTransition .getEvent () == transition .getTrigger ().getEvent ()
736
- && currentContextTransition .getTarget () == target
735
+ && transition .getTrigger () != null
736
+ && (
737
+ currentContextTransition .getSource () == source
738
+ && currentContextTransition .getEvent () == transition .getTrigger ().getEvent ()
739
+ && currentContextTransition .getTarget () == target
737
740
)
738
741
);
739
742
addTransition (sb , indent , source .toString (), source , target , plantUmlWriterParameters , arrowColor , transition );
@@ -756,31 +759,33 @@ private void addTransition(
756
759
String arrowColor ,
757
760
Transition <S , E > transition
758
761
) {
759
- sb .append ("""
760
- %s%s -%s%s-> %s %s
761
- """
762
- .formatted (
763
- indent ,
764
- sourceLabel ,
765
- source == null ? "" : plantUmlWriterParameters .getDirection (source , target ),
766
- arrowColor ,
767
- target ,
768
- TransactionHelper .getTransitionDescription (transition , plantUmlWriterParameters )
769
- )
770
- .stripIndent ()
771
- );
772
- if (StringUtils .isNotBlank (transition .getName ())) {
762
+ if (!plantUmlWriterParameters .isTransitionIgnored (source , target )) {
773
763
sb .append ("""
774
- %snote on link
775
- %s %s
776
- %send note
777
- """
764
+ %s%s -%s%s-> %s %s
765
+ """
778
766
.formatted (
779
767
indent ,
780
- indent ,
781
- transition .getName (),
782
- indent
783
- ));
768
+ sourceLabel ,
769
+ source == null ? "" : plantUmlWriterParameters .getDirection (source , target ),
770
+ arrowColor ,
771
+ target ,
772
+ TransactionHelper .getTransitionDescription (transition , plantUmlWriterParameters )
773
+ )
774
+ .stripIndent ()
775
+ );
776
+ if (StringUtils .isNotBlank (transition .getName ())) {
777
+ sb .append ("""
778
+ %snote on link
779
+ %s %s
780
+ %send note
781
+ """
782
+ .formatted (
783
+ indent ,
784
+ indent ,
785
+ transition .getName (),
786
+ indent
787
+ ));
788
+ }
784
789
}
785
790
}
786
791
0 commit comments