|
|
@ -3,6 +3,10 @@ import com.my.graphiteDigesterBg.diframe.model.DiMdbTaskExecution; |
|
|
|
import com.my.graphiteDigesterBg.diframe.model.DiMdbUser; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
abstract public class DiTaskBase implements DiTask { |
|
|
|
// logger |
|
|
@ -19,6 +23,8 @@ abstract public class DiTaskBase implements DiTask { |
|
|
|
private DiMdbUser user; |
|
|
|
// execution |
|
|
|
private final DiMdbTaskExecution execution; |
|
|
|
// action results |
|
|
|
private final Map<String, DiTaskAction> actions = new HashMap<>(); |
|
|
|
|
|
|
|
// constructor |
|
|
|
public DiTaskBase() { |
|
|
@ -143,4 +149,26 @@ abstract public class DiTaskBase implements DiTask { |
|
|
|
DiActuator actuator = this.getDevice().getActuators().get(actuatorKey); |
|
|
|
return clazz.cast(actuator); |
|
|
|
} |
|
|
|
|
|
|
|
// wait for action |
|
|
|
public DiTaskAction waitAction(String name) { |
|
|
|
var action = new DiTaskAction(); |
|
|
|
action.name = name; |
|
|
|
this.actions.put(name, action); |
|
|
|
|
|
|
|
var waitAction = this.actions.get(name); |
|
|
|
synchronized (waitAction) { |
|
|
|
try { |
|
|
|
waitAction.wait(); |
|
|
|
} catch (InterruptedException e) { |
|
|
|
throw new RuntimeException(e); |
|
|
|
} |
|
|
|
} |
|
|
|
return waitAction; |
|
|
|
} |
|
|
|
|
|
|
|
// get action |
|
|
|
public DiTaskAction getAction(String name) { |
|
|
|
return this.actions.get(name); |
|
|
|
} |
|
|
|
} |