ExampleAbstractBaseStatemachine.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. package org.yakindu.sct.runtime.java.custom;
  2. import java.util.Collection;
  3. import java.util.EnumSet;
  4. import java.util.Set;
  5. import org.yakindu.sct.runtime.java.base.DataType;
  6. import org.yakindu.sct.runtime.java.base.IStatemachine;
  7. public abstract class ExampleAbstractBaseStatemachine implements IStatemachine {
  8. public enum Event {
  9. e1,
  10. e2,
  11. e3,
  12. e4,
  13. e5,
  14. e6,
  15. i1,
  16. };
  17. public enum State {
  18. S1,
  19. S2,
  20. S3,
  21. S4,
  22. };
  23. private Set<State> activeStates = EnumSet.noneOf(State.class);
  24. private bool condition_S1_tr0(Collection<Event> occuredEvents) {
  25. return ( eventSet.check( ev_e1) );
  26. }
  27. private bool condition_S2_tr0(Collection<Event> occuredEvents) {
  28. return ( eventSet.check( ev_e2) );
  29. }
  30. private bool condition_S3_tr0(Collection<Event> occuredEvents) {
  31. return ( eventSet.check( ev_e3) );
  32. }
  33. private bool condition_S4_tr0(Collection<Event> occuredEvents) {
  34. return ( eventSet.check( ev_e4) );
  35. }
  36. private void actions_S1_tr0() {
  37. activeStates.remove(S1);
  38. activeStates.add(S2);
  39. }
  40. private void actions_S2_tr0() {
  41. activeStates.remove(S2);
  42. activeStates.add(S1);
  43. }
  44. private void actions_S3_tr0() {
  45. activeStates.remove(S3);
  46. activeStates.add(S4);
  47. }
  48. private void actions_S4_tr0() {
  49. activeStates.remove(S4);
  50. activeStates.add(S3);
  51. }
  52. private void cycle_S1(Collection<Event> occuredEvents)
  53. {
  54. if ( condition_S1_tr0(Collection<Event> occuredEvents) ) {
  55. actions_S1_tr0();
  56. }
  57. else {
  58. }
  59. }
  60. private void cycle_S2(Collection<Event> occuredEvents)
  61. {
  62. }
  63. private void cycle_S3(Collection<Event> occuredEvents)
  64. {
  65. if ( condition_S3_tr0(Collection<Event> occuredEvents) ) {
  66. actions_S3_tr0();
  67. }
  68. else {
  69. }
  70. }
  71. private void cycle_S4(Collection<Event> occuredEvents)
  72. {
  73. if ( condition_S4_tr0(Collection<Event> occuredEvents) ) {
  74. actions_S4_tr0();
  75. }
  76. else {
  77. }
  78. }
  79. public void init() {
  80. activeStates.add(S1);
  81. }
  82. protected abstract Collection<Event> getOccuredEvents();
  83. public void raiseEvent(DataType event) {
  84. getOccuredEvents().add(Event.valueOf(event.getName()));
  85. }
  86. public boolean eventOccured(DataType event) {
  87. return getOccuredEvents().contains(Event.valueOf(event.getName()));
  88. }
  89. public boolean eventOccured() {
  90. return !getOccuredEvents().isEmpty();
  91. }
  92. public void runCycle(Collection<Event> events) {
  93. for (State state : activeStates) {
  94. switch (state) {
  95. case S1:
  96. cycle_S1(events);
  97. break;
  98. case S2:
  99. cycle_S2(events);
  100. break;
  101. case S3:
  102. cycle_S3(events);
  103. break;
  104. case S4:
  105. cycle_S4(events);
  106. break;
  107. default:
  108. // no state found
  109. }
  110. }
  111. }
  112. }