Skip to content
This repository was archived by the owner on May 22, 2021. It is now read-only.

Commit de57f2d

Browse files
committed
added delay support
1 parent 26817b8 commit de57f2d

File tree

5 files changed

+22
-11
lines changed

5 files changed

+22
-11
lines changed

src/main/java/stateMachine/Caller.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import java.lang.reflect.InvocationTargetException;
44
import java.lang.reflect.Method;
55

6+
import static java.lang.Thread.sleep;
7+
68
/**
79
* Created by Rami on 12/03/2017.
810
*/
@@ -11,23 +13,30 @@ public class Caller implements Callable {
1113
Object calledObject;
1214
Method calledMethod;
1315
Object[] args;
16+
int delay;
1417

1518
public Caller(){
1619
}
1720

18-
public Caller(Object calledObject, Method calledMethod){
21+
public Caller(Object calledObject, Method calledMethod, int delay){
1922
this.calledMethod = calledMethod;
2023
this.calledObject = calledObject;
24+
this.delay = 0;
2125
}
2226

23-
public Caller(Object calledObject, Method calledMethod, Object[] args){
24-
this(calledObject, calledMethod);
27+
public Caller(Object calledObject, Method calledMethod, Object[] args, int delay){
28+
this(calledObject, calledMethod, delay);
2529
this.args = args;
2630
}
2731

2832
public void call(){
2933
new Thread(new Runnable(){
3034
public void run(){
35+
try {
36+
sleep(delay);
37+
} catch (InterruptedException e) {
38+
e.printStackTrace();
39+
}
3140
try {
3241
if(args==null){
3342
calledMethod.invoke(calledObject);

src/main/java/stateMachine/EventSender.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
*/
66
public class EventSender extends Caller {
77

8-
public EventSender(String event, AbstractStateMachine stateMachine){
8+
public EventSender(String event, AbstractStateMachine stateMachine, int delay){
99
super.calledObject = stateMachine;
1010
super.args = new String[] {event};
11+
super.delay = delay;
1112
try {
1213
super.calledMethod = super.calledObject.getClass().getMethod("notifyEvent", String.class);
1314
} catch (NoSuchMethodException e) {

src/main/java/stateMachine/GStateMachine.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
public class GStateMachine extends AbstractStateMachine{
66
public GStateMachine(){
77
super();
8-
super.stateList.add( new State().setId("State_1").setIsInit(false).addTransition(new Transition().setTo(new State("State_2")).addTriggerEvent("Transition_9")));
9-
super.stateList.add( new State().setId("State_2").setIsInit(false).addOnEntry(new Event("aezge").addCallable(new EventSender("aezge", this))).addOnExit(new Event("zerzer").addCallable(new EventSender("zerzer", this))));
10-
super.stateList.add( new State().setId("State_4").setIsInit(false));
118
super.linkStates();
129
super.init();
1310
}}

src/main/java/stateMachine/SCXMLToJava.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,9 @@ private String parseSend(Element e, String methSuffix){
9999
Element element = (Element)tNode;
100100
if(element.getTagName().equals("send")) {
101101
String eventName = element.getAttribute("event");
102-
result += ".add"+ methSuffix +"(new Event(\"" + eventName + "\").addCallable(new EventSender(\""+ eventName+"\", this)))";
102+
String delay = element.getAttribute("delay");
103+
delay = (delay=="")?"0":delay;
104+
result += ".add"+ methSuffix +"(new Event(\"" + eventName + "\").addCallable(new EventSender(\""+ eventName+"\", this,"+delay+")))";
103105
}
104106
}
105107
}
@@ -136,7 +138,9 @@ private String parseSentEvents(Element e) {
136138
Element element = (Element)tNode;
137139
if(element.getTagName().equals("send")) {
138140
String eventName = element.getAttribute("event");
139-
result += ".addTriggeredEvent(new Event(\"" + eventName + "\").addCallable(new EventSender(\""+ eventName+"\", this)))";
141+
String delay = element.getAttribute("delay");
142+
delay = (delay=="")?"0":delay;
143+
result += ".addTriggeredEvent(new Event(\"" + eventName + "\").addCallable(new EventSender(\""+ eventName+"\", this,"+delay+")))";
140144
}
141145
}
142146
}

src/main/java/stateMachine/Transition.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,15 @@ public boolean hasSentEvent(String name){
8383
public void connectToEvent(String eventName, Object object, Method method) {
8484
for(Event e : sentEvents){
8585
if(e.getName().equals(eventName)){
86-
e.addCallable(new Caller(object, method));
86+
e.addCallable(new Caller(object, method, 0));
8787
}
8888
}
8989
}
9090

9191
public void connectToEvent(String eventName, Object object, Method method, Object[] args){
9292
for(Event e : sentEvents){
9393
if(e.getName().equals(eventName)){
94-
e.addCallable(new Caller(object, method, args));
94+
e.addCallable(new Caller(object, method, args, 0));
9595
}
9696
}
9797
}

0 commit comments

Comments
 (0)