X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.simulator.toolkit%2Fsrc%2Forg%2Fsimantics%2Fsimulator%2Ftoolkit%2FStandardExperimentStates.java;fp=bundles%2Forg.simantics.simulator.toolkit%2Fsrc%2Forg%2Fsimantics%2Fsimulator%2Ftoolkit%2FStandardExperimentStates.java;h=c314643db42bb4fa8e5778cff35a7cc62f220f11;hb=14a4f7a9d486fba5be815e511fb2a497fca4eb70;hp=0000000000000000000000000000000000000000;hpb=751ee12501d220832b672dd433655a4d65806fd9;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/StandardExperimentStates.java b/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/StandardExperimentStates.java new file mode 100644 index 000000000..c314643db --- /dev/null +++ b/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/StandardExperimentStates.java @@ -0,0 +1,124 @@ +package org.simantics.simulator.toolkit; + +import org.simantics.simulator.ExperimentState; + +/** + * @author Antti Villberg + * @since 1.34.0 + */ +public class StandardExperimentStates implements ExperimentState { + + /** + * The experiment context has been created. + * + *

+ * Allowed successor states: {@link Instantiated}, {@link ToBeDisposed} + */ + public interface Created extends ExperimentState {} + + /** + * The experiment context has been instantiated, i.e. underlying experimentation + * resources have been acquired. Some experiment setup (e.g. setting certain + * values) can be done in this state that cannot be touched once the experiment + * is initialized. + * + *

+ * Allowed successor states: {@link Initializing}, {@link ToBeDisposed} + */ + public interface Instantiated extends ExperimentState {} + + /** + * The experiment context is in the process of being initialized. This means + * that any initial conditions or related data is being loaded into the + * simulator/solver/what ever system that runs the experiment. + * + * If the initialization fails due to an irrecoverable system error, the + * experiment shall move to {@link Failure} state. If the initialization fails + * due to a recoverable error in user input, the experiment shall move to + * {@link Instantiated} state. + * + *

+ * Allowed successor states: {@link Initialized}, {@link Instantiated}, + * {@link Failure} + */ + public interface Initializing extends ExperimentState {} + + /** + * The experiment context has been initialized, i.e. the underlying + * experimentation resources have been both acquired and initialized with a + * specific state. + * + *

+ * Allowed successor states: {@link Stopped}, {@link Running}, + * {@link ToBeDisposed} + */ + public interface Initialized extends ExperimentState {} + + /** + * The experiment shall be ran until it reaches an objective such as + * steady-state or running for a duration or until the state changes to + * {@link Stopped}. + * + *

+ * Allowed successor states: {@link Stopped}, {@link ToBeDisposed} + */ + public interface Running extends ExperimentState {} + + /** + * The experiment shall remain stopped. Everything in the experiment context + * should remain constant while in this state. + * + *

+ * Allowed successor states: {@link Running}, {@link ToBeDisposed} + */ + public interface Stopped extends ExperimentState {} + + /** + * Moving into this state marks the beginning of the disposal of this + * experiment. The imminent disposal is irreversible and cannot be vetoed + * or interrupted. + * + *

+ * Allowed successor states: {@link Disposing} + */ + public interface ToBeDisposed extends ExperimentState {} + + /** + * The experiment context is being disposed, i.e. underlying experimentation + * resources are being freed and disposed of accordingly. + * + *

+ * Allowed successor states: {@link Disposing} + */ + public interface Disposing extends ExperimentState {} + + /** + * The experiment has been completely disposed and cannot any longer be used for + * anything. + * + *

+ * Allowed successor states: none, this is a final state + */ + public interface Disposed extends ExperimentState {} + + /** + * The experiment implementation has ran into a fatal failure. The experiment + * context can still be accessed at this point but the experiment can only move + * into {@link Disposed} state. + * + *

+ * Allowed successor states: {@link Disposed} + */ + public interface Failure extends ExperimentState {} + + public static final ExperimentState CREATED = new Created() {}; + public static final ExperimentState INSTANTIATED = new Instantiated() {}; + public static final ExperimentState INITIALIZING = new Initializing() {}; + public static final ExperimentState INITIALIZED = new Initialized() {}; + public static final ExperimentState RUNNING = new Running() {}; + public static final ExperimentState STOPPED = new Stopped() {}; + public static final ExperimentState TO_BE_DISPOSED = new ToBeDisposed() {}; + public static final ExperimentState DISPOSING = new Disposing() {}; + public static final ExperimentState DISPOSED = new Disposed() {}; + +} \ No newline at end of file