From 24b7f1d2bc7d7205722417620391c485fdc0a188 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Sun, 14 May 2017 15:33:23 +0200 Subject: [PATCH] [New] Update the order state of activity by Type and Id reference --- .../src/main/java/li/strolch/model/State.java | 38 ++++++++++++++++--- .../command/ExecuteActivityCommand.java | 8 +++- .../execution/command/ExecutionCommand.java | 20 ++++++++++ .../command/SetActionToErrorCommand.java | 8 +++- .../command/SetActionToExecutedCommand.java | 8 +++- .../command/SetActionToStoppedCommand.java | 8 +++- .../command/SetActionToWarningCommand.java | 8 +++- 7 files changed, 88 insertions(+), 10 deletions(-) diff --git a/li.strolch.model/src/main/java/li/strolch/model/State.java b/li.strolch.model/src/main/java/li/strolch/model/State.java index e72f4ff8b..d5074e527 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/State.java +++ b/li.strolch.model/src/main/java/li/strolch/model/State.java @@ -90,17 +90,45 @@ public enum State { } /** - * @return true if the state is {@link #CLOSED} + * @return true if the state is {@link #CREATED} */ - public boolean isClosed() { - return this == CLOSED; + public boolean isCreated() { + return this == State.CREATED; + } + + /** + * @return true if the state is {@link #PLANNING} + */ + public boolean isInPlanning() { + return this == State.PLANNING; + } + + /** + * @return true if the state is {@link #PLANNED} + */ + public boolean isInPlanned() { + return this == State.PLANNED; + } + + /** + * @return true if the state is {@link #EXECUTION} + */ + public boolean isInExecution() { + return this == State.EXECUTION; + } + + /** + * @return true if the state is {@link #EXECUTED} + */ + public boolean isExecuted() { + return this == EXECUTED; } /** * @return true if the state is {@link #CLOSED} */ - public boolean isExecuted() { - return this == EXECUTED; + public boolean isClosed() { + return this == CLOSED; } /** diff --git a/li.strolch.service/src/main/java/li/strolch/execution/command/ExecuteActivityCommand.java b/li.strolch.service/src/main/java/li/strolch/execution/command/ExecuteActivityCommand.java index acf166833..1eb1890b7 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/command/ExecuteActivityCommand.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/command/ExecuteActivityCommand.java @@ -1,6 +1,7 @@ package li.strolch.execution.command; import li.strolch.agent.api.ComponentContainer; +import li.strolch.model.State; import li.strolch.model.activity.Activity; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.utils.dbc.DBC; @@ -24,8 +25,13 @@ public class ExecuteActivityCommand extends ExecutionCommand { @Override public void doCommand() { - tx().lock(this.activity.getRootElement()); + Activity rootElement = this.activity.getRootElement(); + tx().lock(rootElement); + + State currentState = rootElement.getState(); this.activity.accept(this); + + updateOrderState(rootElement, currentState, rootElement.getState()); } @Override diff --git a/li.strolch.service/src/main/java/li/strolch/execution/command/ExecutionCommand.java b/li.strolch.service/src/main/java/li/strolch/execution/command/ExecutionCommand.java index 25d38e5b0..abb1ad310 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/command/ExecutionCommand.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/command/ExecutionCommand.java @@ -7,9 +7,11 @@ import java.util.Map.Entry; import li.strolch.agent.api.ComponentContainer; import li.strolch.command.UpdateActivityCommand; +import li.strolch.command.UpdateOrderCommand; import li.strolch.exception.StrolchException; import li.strolch.execution.policy.ConfirmationPolicy; import li.strolch.execution.policy.ExecutionPolicy; +import li.strolch.model.Order; import li.strolch.model.Resource; import li.strolch.model.State; import li.strolch.model.activity.Action; @@ -41,6 +43,24 @@ public abstract class ExecutionCommand extends Command implements TimeOrderingVi return resource; } + protected void updateOrderState(Activity rootElement, State currentState, State newState) { + if (currentState == newState) + return; + + String type = rootElement.getType(); + String id = rootElement.getId(); + + Order order = tx().getOrderBy(type, id); + if (order == null) + return; + + order.setState(rootElement.getState()); + + UpdateOrderCommand cmd = new UpdateOrderCommand(getContainer(), tx()); + cmd.setOrder(order); + cmd.doCommand(); + } + protected ExecutionPolicy getExecutionPolicy(Action action) { Resource resource = getResource(tx(), action); PolicyDef executionPolicyDef = resource.getPolicyDefs().getPolicyDef(ExecutionPolicy.class.getSimpleName()); diff --git a/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToErrorCommand.java b/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToErrorCommand.java index ff6259479..64edb717d 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToErrorCommand.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToErrorCommand.java @@ -6,6 +6,7 @@ import li.strolch.agent.api.ComponentContainer; import li.strolch.exception.StrolchException; import li.strolch.model.State; import li.strolch.model.activity.Action; +import li.strolch.model.activity.Activity; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.utils.dbc.DBC; @@ -34,10 +35,15 @@ public class SetActionToErrorCommand extends ExecutionCommand { @Override public void doCommand() { - tx().lock(this.action.getRootElement()); + Activity rootElement = this.action.getRootElement(); + tx().lock(rootElement); + + State currentState = rootElement.getState(); getExecutionPolicy(this.action).toError(this.action); getConfirmationPolicy(this.action).toError(this.action); + + updateOrderState(rootElement, currentState, rootElement.getState()); } @Override diff --git a/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToExecutedCommand.java b/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToExecutedCommand.java index 4789d583a..b7d124ede 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToExecutedCommand.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToExecutedCommand.java @@ -6,6 +6,7 @@ import li.strolch.agent.api.ComponentContainer; import li.strolch.exception.StrolchException; import li.strolch.model.State; import li.strolch.model.activity.Action; +import li.strolch.model.activity.Activity; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.utils.dbc.DBC; @@ -34,10 +35,15 @@ public class SetActionToExecutedCommand extends ExecutionCommand { @Override public void doCommand() { - tx().lock(this.action.getRootElement()); + Activity rootElement = this.action.getRootElement(); + tx().lock(rootElement); + + State currentState = rootElement.getState(); getExecutionPolicy(this.action).toExecuted(this.action); getConfirmationPolicy(this.action).toExecuted(this.action); + + updateOrderState(rootElement, currentState, rootElement.getState()); } @Override diff --git a/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToStoppedCommand.java b/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToStoppedCommand.java index 3e476ff78..ba045ca86 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToStoppedCommand.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToStoppedCommand.java @@ -6,6 +6,7 @@ import li.strolch.agent.api.ComponentContainer; import li.strolch.exception.StrolchException; import li.strolch.model.State; import li.strolch.model.activity.Action; +import li.strolch.model.activity.Activity; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.utils.dbc.DBC; @@ -34,10 +35,15 @@ public class SetActionToStoppedCommand extends ExecutionCommand { @Override public void doCommand() { - tx().lock(this.action.getRootElement()); + Activity rootElement = this.action.getRootElement(); + tx().lock(rootElement); + + State currentState = rootElement.getState(); getExecutionPolicy(this.action).toStopped(this.action); getConfirmationPolicy(this.action).toStopped(this.action); + + updateOrderState(rootElement, currentState, rootElement.getState()); } @Override diff --git a/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToWarningCommand.java b/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToWarningCommand.java index f95db57ee..cf93d9497 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToWarningCommand.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/command/SetActionToWarningCommand.java @@ -6,6 +6,7 @@ import li.strolch.agent.api.ComponentContainer; import li.strolch.exception.StrolchException; import li.strolch.model.State; import li.strolch.model.activity.Action; +import li.strolch.model.activity.Activity; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.utils.dbc.DBC; @@ -34,10 +35,15 @@ public class SetActionToWarningCommand extends ExecutionCommand { @Override public void doCommand() { - tx().lock(this.action.getRootElement()); + Activity rootElement = this.action.getRootElement(); + tx().lock(rootElement); + + State currentState = rootElement.getState(); getExecutionPolicy(this.action).toWarning(this.action); getConfirmationPolicy(this.action).toWarning(this.action); + + updateOrderState(rootElement, currentState, rootElement.getState()); } @Override