[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() {
return this.tx;
}
/**
* @see Command#undo()
*/
protected abstract void undo();
}

View File

@ -15,12 +15,19 @@
*/
package li.strolch.policytest;
import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.activity.Action;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/**
* @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;
import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.activity.Action;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/**
* @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.activity.Action;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/**
* @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) {
super(container, tx);
@ -34,4 +33,9 @@ public class TestNoConfirmationPolicy extends StrolchPolicy implements TestConfi
public void confirm(Action action) {
action.setState(State.CLOSED);
}
@Override
protected void undo() {
// do nothing
}
}

View File

@ -15,12 +15,19 @@
*/
package li.strolch.policytest;
import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.activity.Action;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/**
* @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.activity.Action;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/**
* @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) {
super(container, tx);
@ -34,4 +33,9 @@ public class TestSimplePlanningPolicy extends StrolchPolicy implements TestPlann
public void plan(Action action) {
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.activity.Action;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.StrolchPolicy;
/**
* @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) {
super(container, tx);
@ -34,4 +33,9 @@ public class TestSimulatedExecutionPolicy extends StrolchPolicy implements TestE
public void execute(Action action) {
action.setState(State.EXECUTION);
}
@Override
protected void undo() {
// do nothing
}
}