From 93e099f101907d6fa0166f1c278c93a992809fa6 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 7 Nov 2017 07:40:31 +0100 Subject: [PATCH] [New] Adding value changes to actions on execution --- .../execution/policy/ReservationExection.java | 17 +++++++++++++---- .../execution/policy/SimpleExecution.java | 16 +++++++++++++++- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/li.strolch.service/src/main/java/li/strolch/execution/policy/ReservationExection.java b/li.strolch.service/src/main/java/li/strolch/execution/policy/ReservationExection.java index 8f6cc2e59..ae24041b8 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/policy/ReservationExection.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/policy/ReservationExection.java @@ -7,6 +7,8 @@ import li.strolch.model.Resource; import li.strolch.model.State; import li.strolch.model.activity.Action; import li.strolch.model.parameter.BooleanParameter; +import li.strolch.model.timevalue.impl.FloatValue; +import li.strolch.model.timevalue.impl.ValueChange; import li.strolch.persistence.api.StrolchTransaction; /** @@ -70,8 +72,10 @@ public class ReservationExection extends DurationExecution { tx().lock(getResource(action)); - // only do if reserve - if (!action.getType().equals(TYPE_RESERVE) && !action.getType().equals(TYPE_RELEASE)) { + // only do if reserve or release + boolean isReserve = action.getType().equals(TYPE_RESERVE); + boolean isRelease = action.getType().equals(TYPE_RELEASE); + if (!isReserve && !isRelease) { // otherwise delegate to super class super.toExecution(action); @@ -92,8 +96,10 @@ public class ReservationExection extends DurationExecution { tx().lock(getResource(action)); - // only do if release - if (!action.getType().equals(TYPE_RESERVE) && !action.getType().equals(TYPE_RELEASE)) { + // only do if reserve or release + boolean isReserve = action.getType().equals(TYPE_RESERVE); + boolean isRelease = action.getType().equals(TYPE_RELEASE); + if (!isReserve && !isRelease) { // otherwise delegate to super class super.toExecuted(action); @@ -102,6 +108,9 @@ public class ReservationExection extends DurationExecution { setReservation(action); setActionState(action, State.EXECUTED); + + FloatValue value = new FloatValue(isReserve ? 1.0D : 0.0D); + action.addChange(new ValueChange<>(System.currentTimeMillis(), value, "")); } public void setReservation(Action action) { diff --git a/li.strolch.service/src/main/java/li/strolch/execution/policy/SimpleExecution.java b/li.strolch.service/src/main/java/li/strolch/execution/policy/SimpleExecution.java index c3b5b2b8b..4c9d95b1e 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/policy/SimpleExecution.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/policy/SimpleExecution.java @@ -5,13 +5,15 @@ import li.strolch.handler.operationslog.LogMessage; import li.strolch.handler.operationslog.OperationsLog; import li.strolch.model.State; import li.strolch.model.activity.Action; +import li.strolch.model.timevalue.impl.FloatValue; +import li.strolch.model.timevalue.impl.ValueChange; import li.strolch.persistence.api.StrolchTransaction; /** *

* Simple Execution Policy which sets the state of the action depending on the method called. *

- * + * * @author Robert von Burg */ public class SimpleExecution extends ExecutionPolicy { @@ -23,6 +25,9 @@ public class SimpleExecution extends ExecutionPolicy { @Override public void toExecution(Action action) { setActionState(action, State.EXECUTION); + + FloatValue value = new FloatValue(1.0D); + action.addChange(new ValueChange<>(System.currentTimeMillis(), value, "")); } @Override @@ -33,18 +38,27 @@ public class SimpleExecution extends ExecutionPolicy { @Override public void toExecuted(Action action) { setActionState(action, State.EXECUTED); + + FloatValue value = new FloatValue(0.0D); + action.addChange(new ValueChange<>(System.currentTimeMillis(), value, "")); } @Override public void toStopped(Action action) { getDelayedExecutionTimer().cancel(action.getLocator()); setActionState(action, State.STOPPED); + + FloatValue value = new FloatValue(0.0D); + action.addChange(new ValueChange<>(System.currentTimeMillis(), value, "")); } @Override public void toError(Action action) { getDelayedExecutionTimer().cancel(action.getLocator()); setActionState(action, State.ERROR); + + FloatValue value = new FloatValue(0.0D); + action.addChange(new ValueChange<>(System.currentTimeMillis(), value, "")); } protected void addMessage(LogMessage message) {