[Major] Added StrolchPolicy.undo()

- and from now on we don't use interfaces anymore. We use abstract
classes with StrolchPolicy as the super class.
- it would be lovely if Java would get rid of interfaces and abstract
classes. We only need one: abstract classes.
This commit is contained in:
Robert von Burg 2015-08-22 21:16:43 +02:00
parent 01a86ca9f7
commit cde640d511
7 changed files with 50 additions and 12 deletions

View File

@ -73,4 +73,9 @@ public abstract class StrolchPolicy {
protected StrolchTransaction tx() { protected StrolchTransaction tx() {
return this.tx; return this.tx;
} }
/**
* @see Command#undo()
*/
protected abstract void undo();
} }

View File

@ -15,12 +15,19 @@
*/ */
package li.strolch.policytest; package li.strolch.policytest;
import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.activity.Action; import li.strolch.model.activity.Action;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
*/ */
public interface TestConfirmationPolicy { public abstract class TestConfirmationPolicy extends StrolchPolicy {
public void confirm(Action action); public TestConfirmationPolicy(ComponentContainer container, StrolchTransaction tx) {
super(container, tx);
}
public abstract void confirm(Action action);
} }

View File

@ -15,12 +15,19 @@
*/ */
package li.strolch.policytest; package li.strolch.policytest;
import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.activity.Action; import li.strolch.model.activity.Action;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
*/ */
public interface TestExecutionPolicy { public abstract class TestExecutionPolicy extends StrolchPolicy {
public void execute(Action action); public TestExecutionPolicy(ComponentContainer container, StrolchTransaction tx) {
super(container, tx);
}
public abstract void execute(Action action);
} }

View File

@ -19,12 +19,11 @@ import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.State; import li.strolch.model.State;
import li.strolch.model.activity.Action; import li.strolch.model.activity.Action;
import li.strolch.persistence.api.StrolchTransaction; import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
*/ */
public class TestNoConfirmationPolicy extends StrolchPolicy implements TestConfirmationPolicy { public class TestNoConfirmationPolicy extends TestConfirmationPolicy {
public TestNoConfirmationPolicy(ComponentContainer container, StrolchTransaction tx) { public TestNoConfirmationPolicy(ComponentContainer container, StrolchTransaction tx) {
super(container, tx); super(container, tx);
@ -34,4 +33,9 @@ public class TestNoConfirmationPolicy extends StrolchPolicy implements TestConfi
public void confirm(Action action) { public void confirm(Action action) {
action.setState(State.CLOSED); action.setState(State.CLOSED);
} }
@Override
protected void undo() {
// do nothing
}
} }

View File

@ -15,12 +15,19 @@
*/ */
package li.strolch.policytest; package li.strolch.policytest;
import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.activity.Action; import li.strolch.model.activity.Action;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
*/ */
public interface TestPlanningPolicy { public abstract class TestPlanningPolicy extends StrolchPolicy {
public void plan(Action action); public TestPlanningPolicy(ComponentContainer container, StrolchTransaction tx) {
super(container, tx);
}
public abstract void plan(Action action);
} }

View File

@ -19,12 +19,11 @@ import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.State; import li.strolch.model.State;
import li.strolch.model.activity.Action; import li.strolch.model.activity.Action;
import li.strolch.persistence.api.StrolchTransaction; import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
*/ */
public class TestSimplePlanningPolicy extends StrolchPolicy implements TestPlanningPolicy { public class TestSimplePlanningPolicy extends TestPlanningPolicy {
public TestSimplePlanningPolicy(ComponentContainer container, StrolchTransaction tx) { public TestSimplePlanningPolicy(ComponentContainer container, StrolchTransaction tx) {
super(container, tx); super(container, tx);
@ -34,4 +33,9 @@ public class TestSimplePlanningPolicy extends StrolchPolicy implements TestPlann
public void plan(Action action) { public void plan(Action action) {
action.setState(State.PLANNED); action.setState(State.PLANNED);
} }
@Override
protected void undo() {
// do nothing
}
} }

View File

@ -19,12 +19,11 @@ import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.State; import li.strolch.model.State;
import li.strolch.model.activity.Action; import li.strolch.model.activity.Action;
import li.strolch.persistence.api.StrolchTransaction; import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
*/ */
public class TestSimulatedExecutionPolicy extends StrolchPolicy implements TestExecutionPolicy { public class TestSimulatedExecutionPolicy extends TestExecutionPolicy {
public TestSimulatedExecutionPolicy(ComponentContainer container, StrolchTransaction tx) { public TestSimulatedExecutionPolicy(ComponentContainer container, StrolchTransaction tx) {
super(container, tx); super(container, tx);
@ -34,4 +33,9 @@ public class TestSimulatedExecutionPolicy extends StrolchPolicy implements TestE
public void execute(Action action) { public void execute(Action action) {
action.setState(State.EXECUTION); action.setState(State.EXECUTION);
} }
@Override
protected void undo() {
// do nothing
}
} }