Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate')
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/And.java26
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanExpression.java25
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanOperator.java25
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/ElapsedTimeTest.java83
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/False.java23
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicate.java31
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicateExpression.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiableTest.java22
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/NaryBooleanOperator.java31
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Not.java26
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Or.java25
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Predicate.java59
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateExpression.java39
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateFactory.java122
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicatePackage.java1141
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateReference.java38
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Test.java26
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/TimeTest.java26
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/True.java23
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/UnaryBooleanOperator.java39
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/AndImpl.java66
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanExpressionImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanOperatorImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/ElapsedTimeTestImpl.java374
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/FalseImpl.java57
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateExpressionImpl.java270
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateImpl.java75
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiableTestImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NaryBooleanOperatorImpl.java155
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NotImpl.java58
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/OrImpl.java68
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateExpressionImpl.java196
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateFactoryImpl.java199
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateImpl.java70
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicatePackageImpl.java708
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateReferenceImpl.java175
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TestImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TimeTestImpl.java48
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TrueImpl.java57
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/UnaryBooleanOperatorImpl.java181
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/AndItemProvider.java123
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanExpressionItemProvider.java102
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanOperatorItemProvider.java102
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/ElapsedTimeTestItemProvider.java159
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/FalseItemProvider.java124
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateExpressionItemProvider.java283
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateItemProvider.java115
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiableTestItemProvider.java107
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NaryBooleanOperatorItemProvider.java246
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NotItemProvider.java123
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/OrItemProvider.java124
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateExpressionItemProvider.java279
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProvider.java145
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProviderAdapterFactory.java441
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateReferenceItemProvider.java153
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TestItemProvider.java113
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TimeTestItemProvider.java101
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TrueItemProvider.java124
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/UnaryBooleanOperatorItemProvider.java245
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateAdapterFactory.java506
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateSwitch.java606
61 files changed, 9120 insertions, 0 deletions
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/And.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/And.java
new file mode 100644
index 000000000..94a278062
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/And.java
@@ -0,0 +1,26 @@
+// And.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * <code>And</code> is a {@link NaryBooleanOperator} whose value is
+ * <code>true</code> only if the values of all of its operands are
+ * <code>true</code>.
+ *
+ * @see Or
+ * @see Not
+ * @model
+ */
+public interface And extends NaryBooleanOperator {
+ // Nothing
+} // And \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanExpression.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanExpression.java
new file mode 100644
index 000000000..3920be469
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanExpression.java
@@ -0,0 +1,25 @@
+// BooleanExpression.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * A <code>BooleanExpression</code> is a {@link Predicate} whose value is the
+ * result of evaluating a logical (boolean) expression.
+ *
+ * @see Test
+ * @see PredicateReference
+ * @model abstract="true"
+ */
+public interface BooleanExpression extends Predicate {
+ // Nothing
+} // BooleanExpression \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanOperator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanOperator.java
new file mode 100644
index 000000000..76942103b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanOperator.java
@@ -0,0 +1,25 @@
+// BooleanOperator.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * A <code>BooleanOperator</code> is a {@link BooleanExpression} whose value is
+ * the result of evaluating a boolean operator.
+ *
+ * @see UnaryBooleanOperator
+ * @see NaryBooleanOperator
+ * @model abstract="true"
+ */
+public interface BooleanOperator extends BooleanExpression {
+ // Nothing
+} // BooleanOperator \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/ElapsedTimeTest.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/ElapsedTimeTest.java
new file mode 100644
index 000000000..412cff708
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/ElapsedTimeTest.java
@@ -0,0 +1,83 @@
+// ElapsedTimeTest.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * A <code>ElapsedTimeTest</code> is a {@link TimeTest} that returns a boolean
+ * value depending upon the difference between the first time value passed to
+ * {@link #evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)}
+ * and subsequent values.
+ *
+ * @model
+ */
+public interface ElapsedTimeTest extends TimeTest {
+
+ /**
+ * @return the time value used for comparison purposes.
+ * @model containment="true"
+ */
+ STEMTime getReferenceTime();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#getReferenceTime <em>Reference Time</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Reference Time</em>' containment reference.
+ * @see #getReferenceTime()
+ * @generated
+ */
+ void setReferenceTime(STEMTime value);
+
+ /**
+ * @return <code>true</code> if the reference time has been set
+ * @model default="false"
+ */
+ boolean isReferenceTimeValid();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#isReferenceTimeValid <em>Reference Time Valid</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Reference Time Valid</em>' attribute.
+ * @see #isReferenceTimeValid()
+ * @generated
+ */
+ void setReferenceTimeValid(boolean value);
+
+ /**
+ * @return the number of milliseconds of elapsed time to be used for
+ * comparison between the reference time and the current time.
+ * @model transient="true" changeable="false"
+ */
+ long getElapsedMilliseconds();
+
+ /**
+ * @return the number of days of elapsed time to be used for the comparison
+ * between the reference time and the current time.
+ * @model default="0"
+ */
+ int getNumberofDays();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#getNumberofDays <em>Numberof Days</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Numberof Days</em>' attribute.
+ * @see #getNumberofDays()
+ * @generated
+ */
+ void setNumberofDays(int value);
+
+} // ElapsedTimeTest \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/False.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/False.java
new file mode 100644
index 000000000..5489f4dff
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/False.java
@@ -0,0 +1,23 @@
+// False.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * <code>False</code> is a {@link Test} whose value is always <code>false</code>.
+ *
+ * @see True
+ * @model
+ */
+public interface False extends Test {
+ // Nothing
+} // False \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicate.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicate.java
new file mode 100644
index 000000000..f6ee5aeb2
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicate.java
@@ -0,0 +1,31 @@
+// IdentifiablePredicate.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.common.Identifiable;
+
+/**
+ * A <code>IdentifiablePredicate</code> represents a testable condition that is
+ * Identifiable.
+ *
+ * @model abstract="true"
+ */
+public interface IdentifiablePredicate extends Identifiable, Predicate {
+
+ /**
+ * This is the segment of the type {@link URI} that prefixes all other segments in a
+ * predicate {@link URI}s.
+ */
+ String URI_TYPE_PREDICATE_SEGMENT = "predicate";
+} // IdentifiablePredicate \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicateExpression.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicateExpression.java
new file mode 100644
index 000000000..f482b7db5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicateExpression.java
@@ -0,0 +1,24 @@
+// IdentifiablePredicateExpression.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * An <code>IdentifiablePredicateExpression</code> is a PredicateExpression that
+ * is Identifiable.
+ *
+ * @model
+ */
+public interface IdentifiablePredicateExpression extends IdentifiablePredicate,
+ PredicateExpression {
+ // Nothing
+} // IdentifiablePredicateExpression \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiableTest.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiableTest.java
new file mode 100644
index 000000000..70b133a04
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiableTest.java
@@ -0,0 +1,22 @@
+// IdentifiableTest.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * A <code>IdentifiableTest<code> is a <code>IdentifiablePredicate</code> represents a testable condition.
+ *
+ * @model abstract="true"
+ */
+public interface IdentifiableTest extends IdentifiablePredicate, Test {
+ // Nothing
+} // IdentifiableTest \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/NaryBooleanOperator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/NaryBooleanOperator.java
new file mode 100644
index 000000000..82758cceb
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/NaryBooleanOperator.java
@@ -0,0 +1,31 @@
+// NaryBooleanOperator.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * A <code>NaryBooleanOperator</code> is a {@link BooleanOperator} whose value
+ * is the result of evaluating a boolean operator that takes one or (usually)
+ * more operands.
+ *
+ * @see UnaryBooleanOperator
+ * @model abstract="true"
+ */
+public interface NaryBooleanOperator extends BooleanOperator {
+ /**
+ * @return the collection of operands to this operator
+ * @model type="Predicate" containment="true"
+ */
+ EList<Predicate> getOperands();
+} // NaryBooleanOperator \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Not.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Not.java
new file mode 100644
index 000000000..f868c6c2a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Not.java
@@ -0,0 +1,26 @@
+// Not.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * <code>Not</code> is a {@link UnaryBooleanOperator} whose value is
+ * <code>true</code> if the value of its operand is <code>false</code>,
+ * otherwise it is <code>false</code>.
+ *
+ * @see And
+ * @see Or
+ * @model
+ */
+public interface Not extends UnaryBooleanOperator {
+ // Nothing
+} // Not \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Or.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Or.java
new file mode 100644
index 000000000..462246b72
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Or.java
@@ -0,0 +1,25 @@
+// Or.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * An <code>Or</code> is a {@link NaryBooleanOperator} whose value is
+ * <code>true</code> if any of the values of its operands are <code>true</code>.
+ *
+ * @see And
+ * @see Not
+ * @model
+ */
+public interface Or extends NaryBooleanOperator {
+ // Nothing
+} // Or \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Predicate.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Predicate.java
new file mode 100644
index 000000000..3cf51bd48
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Predicate.java
@@ -0,0 +1,59 @@
+// Predicate.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.trigger.Trigger;
+
+/**
+ * A <code>Predicate</code> represents a testable condition. Instances of
+ * <code>Predicate</code> are referenced by {@link Trigger}s that use the value
+ * returned by {@link #evaluate(STEMTime, long, Decorator)} to control the
+ * execution of another {@link Decorator} called the {@link Trigger}'s "action".
+ * <p>
+ * This interface definition is also an "Annotated Java Interface" that defines
+ * one class in a <a href="http://www.uml.org/">UML</a> "model". The UML class
+ * diagram for the model is in the <code>documentation</code> folder of the
+ * project. This file and the other interfaces in this Java package are
+ * processed by the Eclipse Modeling Framework (aka EMF <a
+ * href="http://org.eclipse/emf">http://org.eclipse/emf</a>). to automatically
+ * generate an implementation of the model. EMF is documented in the book <a
+ * href="http://www.awprofessional.com/bookstore/product.asp?isbn=0131425420&rl=1">Eclipse
+ * Modeling Framework </a> by Budinsky, et al.
+ * </p>
+ * @see Trigger
+ * @see Modifier
+ * @model abstract="true"
+ */
+public interface Predicate extends EObject {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean evaluate(STEMTime time, long timerPeriod, Graph graph);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void reset();
+
+} // Predicate \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateExpression.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateExpression.java
new file mode 100644
index 000000000..7bfd001c8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateExpression.java
@@ -0,0 +1,39 @@
+// PredicateExpression.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * A <code>PredicateExpression</code> is a {@link BooleanExpression} whose value
+ * is the result of evaluating a {@link Predicate}.
+ *
+ * @model
+ */
+public interface PredicateExpression extends BooleanExpression {
+
+ /**
+ * @return the {@link Predicate} that determines the value of this
+ * expression.
+ * @model containment="true"
+ */
+ Predicate getPredicate();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.PredicateExpression#getPredicate <em>Predicate</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Predicate</em>' containment reference.
+ * @see #getPredicate()
+ * @generated
+ */
+ void setPredicate(Predicate value);
+} // PredicateExpression \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateFactory.java
new file mode 100644
index 000000000..4e9f058b8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateFactory.java
@@ -0,0 +1,122 @@
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.PredicatePackage
+ * @generated
+ */
+public interface PredicateFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ PredicateFactory eINSTANCE = org.eclipse.stem.core.predicate.impl.PredicateFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>And</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>And</em>'.
+ * @generated
+ */
+ And createAnd();
+
+ /**
+ * Returns a new object of class '<em>False</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>False</em>'.
+ * @generated
+ */
+ False createFalse();
+
+ /**
+ * Returns a new object of class '<em>Not</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Not</em>'.
+ * @generated
+ */
+ Not createNot();
+
+ /**
+ * Returns a new object of class '<em>Or</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Or</em>'.
+ * @generated
+ */
+ Or createOr();
+
+ /**
+ * Returns a new object of class '<em>Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Reference</em>'.
+ * @generated
+ */
+ PredicateReference createPredicateReference();
+
+ /**
+ * Returns a new object of class '<em>True</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>True</em>'.
+ * @generated
+ */
+ True createTrue();
+
+ /**
+ * Returns a new object of class '<em>Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Expression</em>'.
+ * @generated
+ */
+ PredicateExpression createPredicateExpression();
+
+ /**
+ * Returns a new object of class '<em>Identifiable Predicate Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Identifiable Predicate Expression</em>'.
+ * @generated
+ */
+ IdentifiablePredicateExpression createIdentifiablePredicateExpression();
+
+ /**
+ * Returns a new object of class '<em>Elapsed Time Test</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Elapsed Time Test</em>'.
+ * @generated
+ */
+ ElapsedTimeTest createElapsedTimeTest();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ PredicatePackage getPredicatePackage();
+
+} //PredicateFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicatePackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicatePackage.java
new file mode 100644
index 000000000..96a421153
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicatePackage.java
@@ -0,0 +1,1141 @@
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.common.CommonPackage;
+
+//import org.eclipse.stem.core.common.CommonPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.PredicateFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface PredicatePackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "predicate"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/core/predicate.ecore"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.predicate"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ PredicatePackage eINSTANCE = org.eclipse.stem.core.predicate.impl.PredicatePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.PredicateImpl <em>Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicate()
+ * @generated
+ */
+ int PREDICATE = 7;
+
+ /**
+ * The number of structural features of the '<em>Predicate</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.BooleanExpressionImpl <em>Boolean Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.BooleanExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getBooleanExpression()
+ * @generated
+ */
+ int BOOLEAN_EXPRESSION = 1;
+
+ /**
+ * The number of structural features of the '<em>Boolean Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_EXPRESSION_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.BooleanOperatorImpl <em>Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.BooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getBooleanOperator()
+ * @generated
+ */
+ int BOOLEAN_OPERATOR = 2;
+
+ /**
+ * The number of structural features of the '<em>Boolean Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_OPERATOR_FEATURE_COUNT = BOOLEAN_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.NaryBooleanOperatorImpl <em>Nary Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.NaryBooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getNaryBooleanOperator()
+ * @generated
+ */
+ int NARY_BOOLEAN_OPERATOR = 4;
+
+ /**
+ * The feature id for the '<em><b>Operands</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NARY_BOOLEAN_OPERATOR__OPERANDS = BOOLEAN_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Nary Boolean Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NARY_BOOLEAN_OPERATOR_FEATURE_COUNT = BOOLEAN_OPERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.AndImpl <em>And</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.AndImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getAnd()
+ * @generated
+ */
+ int AND = 0;
+
+ /**
+ * The feature id for the '<em><b>Operands</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND__OPERANDS = NARY_BOOLEAN_OPERATOR__OPERANDS;
+
+ /**
+ * The number of structural features of the '<em>And</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_FEATURE_COUNT = NARY_BOOLEAN_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.TestImpl <em>Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTest()
+ * @generated
+ */
+ int TEST = 9;
+
+ /**
+ * The number of structural features of the '<em>Test</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TEST_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.FalseImpl <em>False</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.FalseImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getFalse()
+ * @generated
+ */
+ int FALSE = 3;
+
+ /**
+ * The number of structural features of the '<em>False</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FALSE_FEATURE_COUNT = TEST_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.UnaryBooleanOperatorImpl <em>Unary Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.UnaryBooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getUnaryBooleanOperator()
+ * @generated
+ */
+ int UNARY_BOOLEAN_OPERATOR = 11;
+
+ /**
+ * The feature id for the '<em><b>Operand</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNARY_BOOLEAN_OPERATOR__OPERAND = BOOLEAN_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Unary Boolean Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNARY_BOOLEAN_OPERATOR_FEATURE_COUNT = BOOLEAN_OPERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.NotImpl <em>Not</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.NotImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getNot()
+ * @generated
+ */
+ int NOT = 5;
+
+ /**
+ * The feature id for the '<em><b>Operand</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOT__OPERAND = UNARY_BOOLEAN_OPERATOR__OPERAND;
+
+ /**
+ * The number of structural features of the '<em>Not</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOT_FEATURE_COUNT = UNARY_BOOLEAN_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.OrImpl <em>Or</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.OrImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getOr()
+ * @generated
+ */
+ int OR = 6;
+
+ /**
+ * The feature id for the '<em><b>Operands</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR__OPERANDS = NARY_BOOLEAN_OPERATOR__OPERANDS;
+
+ /**
+ * The number of structural features of the '<em>Or</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR_FEATURE_COUNT = NARY_BOOLEAN_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.PredicateReferenceImpl <em>Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateReferenceImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicateReference()
+ * @generated
+ */
+ int PREDICATE_REFERENCE = 8;
+
+ /**
+ * The feature id for the '<em><b>Predicate</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_REFERENCE__PREDICATE = PREDICATE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_REFERENCE_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.TrueImpl <em>True</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TrueImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTrue()
+ * @generated
+ */
+ int TRUE = 10;
+
+ /**
+ * The number of structural features of the '<em>True</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRUE_FEATURE_COUNT = TEST_FEATURE_COUNT + 0;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.PredicateExpressionImpl <em>Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicateExpression()
+ * @generated
+ */
+ int PREDICATE_EXPRESSION = 12;
+
+ /**
+ * The feature id for the '<em><b>Predicate</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_EXPRESSION__PREDICATE = BOOLEAN_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_EXPRESSION_FEATURE_COUNT = BOOLEAN_EXPRESSION_FEATURE_COUNT + 1;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiablePredicateImpl <em>Identifiable Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiablePredicateImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiablePredicate()
+ * @generated
+ */
+ int IDENTIFIABLE_PREDICATE = 13;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The number of structural features of the '<em>Identifiable Predicate</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiablePredicateExpressionImpl <em>Identifiable Predicate Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiablePredicateExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiablePredicateExpression()
+ * @generated
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION = 14;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION__URI = IDENTIFIABLE_PREDICATE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION__TYPE_URI = IDENTIFIABLE_PREDICATE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION__DUBLIN_CORE = IDENTIFIABLE_PREDICATE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Predicate</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE = IDENTIFIABLE_PREDICATE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Identifiable Predicate Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION_FEATURE_COUNT = IDENTIFIABLE_PREDICATE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiableTestImpl <em>Identifiable Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiableTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiableTest()
+ * @generated
+ */
+ int IDENTIFIABLE_TEST = 15;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_TEST__URI = IDENTIFIABLE_PREDICATE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_TEST__TYPE_URI = IDENTIFIABLE_PREDICATE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_TEST__DUBLIN_CORE = IDENTIFIABLE_PREDICATE__DUBLIN_CORE;
+
+ /**
+ * The number of structural features of the '<em>Identifiable Test</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_TEST_FEATURE_COUNT = IDENTIFIABLE_PREDICATE_FEATURE_COUNT + 0;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.TimeTestImpl <em>Time Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TimeTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTimeTest()
+ * @generated
+ */
+ int TIME_TEST = 16;
+
+ /**
+ * The number of structural features of the '<em>Time Test</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TIME_TEST_FEATURE_COUNT = TEST_FEATURE_COUNT + 0;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl <em>Elapsed Time Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getElapsedTimeTest()
+ * @generated
+ */
+ int ELAPSED_TIME_TEST = 17;
+
+ /**
+ * The feature id for the '<em><b>Reference Time Valid</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELAPSED_TIME_TEST__REFERENCE_TIME_VALID = TIME_TEST_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Elapsed Milliseconds</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELAPSED_TIME_TEST__ELAPSED_MILLISECONDS = TIME_TEST_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Numberof Days</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELAPSED_TIME_TEST__NUMBEROF_DAYS = TIME_TEST_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Reference Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELAPSED_TIME_TEST__REFERENCE_TIME = TIME_TEST_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Elapsed Time Test</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELAPSED_TIME_TEST_FEATURE_COUNT = TIME_TEST_FEATURE_COUNT + 4;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.And <em>And</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>And</em>'.
+ * @see org.eclipse.stem.core.predicate.And
+ * @generated
+ */
+ EClass getAnd();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.BooleanExpression <em>Boolean Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Boolean Expression</em>'.
+ * @see org.eclipse.stem.core.predicate.BooleanExpression
+ * @generated
+ */
+ EClass getBooleanExpression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.BooleanOperator <em>Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Boolean Operator</em>'.
+ * @see org.eclipse.stem.core.predicate.BooleanOperator
+ * @generated
+ */
+ EClass getBooleanOperator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.False <em>False</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>False</em>'.
+ * @see org.eclipse.stem.core.predicate.False
+ * @generated
+ */
+ EClass getFalse();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.NaryBooleanOperator <em>Nary Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Nary Boolean Operator</em>'.
+ * @see org.eclipse.stem.core.predicate.NaryBooleanOperator
+ * @generated
+ */
+ EClass getNaryBooleanOperator();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.core.predicate.NaryBooleanOperator#getOperands <em>Operands</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Operands</em>'.
+ * @see org.eclipse.stem.core.predicate.NaryBooleanOperator#getOperands()
+ * @see #getNaryBooleanOperator()
+ * @generated
+ */
+ EReference getNaryBooleanOperator_Operands();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.Not <em>Not</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Not</em>'.
+ * @see org.eclipse.stem.core.predicate.Not
+ * @generated
+ */
+ EClass getNot();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.Or <em>Or</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Or</em>'.
+ * @see org.eclipse.stem.core.predicate.Or
+ * @generated
+ */
+ EClass getOr();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.Predicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Predicate</em>'.
+ * @see org.eclipse.stem.core.predicate.Predicate
+ * @generated
+ */
+ EClass getPredicate();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.PredicateReference <em>Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Reference</em>'.
+ * @see org.eclipse.stem.core.predicate.PredicateReference
+ * @generated
+ */
+ EClass getPredicateReference();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.predicate.PredicateReference#getPredicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Predicate</em>'.
+ * @see org.eclipse.stem.core.predicate.PredicateReference#getPredicate()
+ * @see #getPredicateReference()
+ * @generated
+ */
+ EReference getPredicateReference_Predicate();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.Test <em>Test</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Test</em>'.
+ * @see org.eclipse.stem.core.predicate.Test
+ * @generated
+ */
+ EClass getTest();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.True <em>True</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>True</em>'.
+ * @see org.eclipse.stem.core.predicate.True
+ * @generated
+ */
+ EClass getTrue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.UnaryBooleanOperator <em>Unary Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Unary Boolean Operator</em>'.
+ * @see org.eclipse.stem.core.predicate.UnaryBooleanOperator
+ * @generated
+ */
+ EClass getUnaryBooleanOperator();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.predicate.UnaryBooleanOperator#getOperand <em>Operand</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Operand</em>'.
+ * @see org.eclipse.stem.core.predicate.UnaryBooleanOperator#getOperand()
+ * @see #getUnaryBooleanOperator()
+ * @generated
+ */
+ EReference getUnaryBooleanOperator_Operand();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.PredicateExpression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Expression</em>'.
+ * @see org.eclipse.stem.core.predicate.PredicateExpression
+ * @generated
+ */
+ EClass getPredicateExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.predicate.PredicateExpression#getPredicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Predicate</em>'.
+ * @see org.eclipse.stem.core.predicate.PredicateExpression#getPredicate()
+ * @see #getPredicateExpression()
+ * @generated
+ */
+ EReference getPredicateExpression_Predicate();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.IdentifiablePredicate <em>Identifiable Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Identifiable Predicate</em>'.
+ * @see org.eclipse.stem.core.predicate.IdentifiablePredicate
+ * @generated
+ */
+ EClass getIdentifiablePredicate();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.IdentifiablePredicateExpression <em>Identifiable Predicate Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Identifiable Predicate Expression</em>'.
+ * @see org.eclipse.stem.core.predicate.IdentifiablePredicateExpression
+ * @generated
+ */
+ EClass getIdentifiablePredicateExpression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.IdentifiableTest <em>Identifiable Test</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Identifiable Test</em>'.
+ * @see org.eclipse.stem.core.predicate.IdentifiableTest
+ * @generated
+ */
+ EClass getIdentifiableTest();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.TimeTest <em>Time Test</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Time Test</em>'.
+ * @see org.eclipse.stem.core.predicate.TimeTest
+ * @generated
+ */
+ EClass getTimeTest();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest <em>Elapsed Time Test</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Elapsed Time Test</em>'.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest
+ * @generated
+ */
+ EClass getElapsedTimeTest();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#isReferenceTimeValid <em>Reference Time Valid</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Reference Time Valid</em>'.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest#isReferenceTimeValid()
+ * @see #getElapsedTimeTest()
+ * @generated
+ */
+ EAttribute getElapsedTimeTest_ReferenceTimeValid();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#getElapsedMilliseconds <em>Elapsed Milliseconds</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Elapsed Milliseconds</em>'.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest#getElapsedMilliseconds()
+ * @see #getElapsedTimeTest()
+ * @generated
+ */
+ EAttribute getElapsedTimeTest_ElapsedMilliseconds();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#getNumberofDays <em>Numberof Days</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Numberof Days</em>'.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest#getNumberofDays()
+ * @see #getElapsedTimeTest()
+ * @generated
+ */
+ EAttribute getElapsedTimeTest_NumberofDays();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#getReferenceTime <em>Reference Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Reference Time</em>'.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest#getReferenceTime()
+ * @see #getElapsedTimeTest()
+ * @generated
+ */
+ EReference getElapsedTimeTest_ReferenceTime();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ PredicateFactory getPredicateFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.AndImpl <em>And</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.AndImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getAnd()
+ * @generated
+ */
+ EClass AND = eINSTANCE.getAnd();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.BooleanExpressionImpl <em>Boolean Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.BooleanExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getBooleanExpression()
+ * @generated
+ */
+ EClass BOOLEAN_EXPRESSION = eINSTANCE.getBooleanExpression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.BooleanOperatorImpl <em>Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.BooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getBooleanOperator()
+ * @generated
+ */
+ EClass BOOLEAN_OPERATOR = eINSTANCE.getBooleanOperator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.FalseImpl <em>False</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.FalseImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getFalse()
+ * @generated
+ */
+ EClass FALSE = eINSTANCE.getFalse();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.NaryBooleanOperatorImpl <em>Nary Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.NaryBooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getNaryBooleanOperator()
+ * @generated
+ */
+ EClass NARY_BOOLEAN_OPERATOR = eINSTANCE.getNaryBooleanOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Operands</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NARY_BOOLEAN_OPERATOR__OPERANDS = eINSTANCE.getNaryBooleanOperator_Operands();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.NotImpl <em>Not</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.NotImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getNot()
+ * @generated
+ */
+ EClass NOT = eINSTANCE.getNot();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.OrImpl <em>Or</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.OrImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getOr()
+ * @generated
+ */
+ EClass OR = eINSTANCE.getOr();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.PredicateImpl <em>Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicate()
+ * @generated
+ */
+ EClass PREDICATE = eINSTANCE.getPredicate();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.PredicateReferenceImpl <em>Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateReferenceImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicateReference()
+ * @generated
+ */
+ EClass PREDICATE_REFERENCE = eINSTANCE.getPredicateReference();
+
+ /**
+ * The meta object literal for the '<em><b>Predicate</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PREDICATE_REFERENCE__PREDICATE = eINSTANCE.getPredicateReference_Predicate();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.TestImpl <em>Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTest()
+ * @generated
+ */
+ EClass TEST = eINSTANCE.getTest();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.TrueImpl <em>True</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TrueImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTrue()
+ * @generated
+ */
+ EClass TRUE = eINSTANCE.getTrue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.UnaryBooleanOperatorImpl <em>Unary Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.UnaryBooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getUnaryBooleanOperator()
+ * @generated
+ */
+ EClass UNARY_BOOLEAN_OPERATOR = eINSTANCE.getUnaryBooleanOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Operand</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference UNARY_BOOLEAN_OPERATOR__OPERAND = eINSTANCE.getUnaryBooleanOperator_Operand();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.PredicateExpressionImpl <em>Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicateExpression()
+ * @generated
+ */
+ EClass PREDICATE_EXPRESSION = eINSTANCE.getPredicateExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Predicate</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PREDICATE_EXPRESSION__PREDICATE = eINSTANCE.getPredicateExpression_Predicate();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiablePredicateImpl <em>Identifiable Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiablePredicateImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiablePredicate()
+ * @generated
+ */
+ EClass IDENTIFIABLE_PREDICATE = eINSTANCE.getIdentifiablePredicate();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiablePredicateExpressionImpl <em>Identifiable Predicate Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiablePredicateExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiablePredicateExpression()
+ * @generated
+ */
+ EClass IDENTIFIABLE_PREDICATE_EXPRESSION = eINSTANCE.getIdentifiablePredicateExpression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiableTestImpl <em>Identifiable Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiableTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiableTest()
+ * @generated
+ */
+ EClass IDENTIFIABLE_TEST = eINSTANCE.getIdentifiableTest();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.TimeTestImpl <em>Time Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TimeTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTimeTest()
+ * @generated
+ */
+ EClass TIME_TEST = eINSTANCE.getTimeTest();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl <em>Elapsed Time Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getElapsedTimeTest()
+ * @generated
+ */
+ EClass ELAPSED_TIME_TEST = eINSTANCE.getElapsedTimeTest();
+
+ /**
+ * The meta object literal for the '<em><b>Reference Time Valid</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ELAPSED_TIME_TEST__REFERENCE_TIME_VALID = eINSTANCE.getElapsedTimeTest_ReferenceTimeValid();
+
+ /**
+ * The meta object literal for the '<em><b>Elapsed Milliseconds</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ELAPSED_TIME_TEST__ELAPSED_MILLISECONDS = eINSTANCE.getElapsedTimeTest_ElapsedMilliseconds();
+
+ /**
+ * The meta object literal for the '<em><b>Numberof Days</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ELAPSED_TIME_TEST__NUMBEROF_DAYS = eINSTANCE.getElapsedTimeTest_NumberofDays();
+
+ /**
+ * The meta object literal for the '<em><b>Reference Time</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ELAPSED_TIME_TEST__REFERENCE_TIME = eINSTANCE.getElapsedTimeTest_ReferenceTime();
+
+ }
+
+} //PredicatePackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateReference.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateReference.java
new file mode 100644
index 000000000..09f76f718
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateReference.java
@@ -0,0 +1,38 @@
+// PredicateReference.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * An <code>PredicateReference</code> is a {@link Predicate} whose value is the
+ * result of evaluating a referenced (i.e., non-containment) {@link Predicate}.
+ *
+ * @see Test
+ * @see BooleanExpression
+ * @model
+ */
+public interface PredicateReference extends Predicate {
+ /**
+ * @model containment="false"
+ */
+ Predicate getPredicate();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.PredicateReference#getPredicate <em>Predicate</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Predicate</em>' reference.
+ * @see #getPredicate()
+ * @generated
+ */
+ void setPredicate(Predicate value);
+} // PredicateReference \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Test.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Test.java
new file mode 100644
index 000000000..9c5f0ce23
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Test.java
@@ -0,0 +1,26 @@
+// Test.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * A <code>Test</code> is a {@link Predicate} whose value is the result of
+ * executing underlying code rather than from the evaluation of some boolean
+ * expression.
+ *
+ * @see BooleanExpression
+ * @see PredicateReference
+ * @model abstract="true"
+ */
+public interface Test extends Predicate {
+ // Nothing
+} // Test \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/TimeTest.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/TimeTest.java
new file mode 100644
index 000000000..67914e3be
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/TimeTest.java
@@ -0,0 +1,26 @@
+// TimeTest.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+
+/**
+ * A <code>TimeTest</code> is a <code>Test</code> that returns a boolean value
+ * depending upon the comparison of the time values passed to
+ * {@link #evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)}
+ * and a reference time value.
+ *
+ * @model abstract="true"
+ */
+public interface TimeTest extends Test {
+ // Nothing
+} // TimeTest \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/True.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/True.java
new file mode 100644
index 000000000..a0412ad9d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/True.java
@@ -0,0 +1,23 @@
+// True.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * <code>True</code> is a {@link Test} whose value is always <code>true</code>.
+ *
+ * @see False
+ * @model
+ */
+public interface True extends Test {
+ // Nothing
+} // True \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/UnaryBooleanOperator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/UnaryBooleanOperator.java
new file mode 100644
index 000000000..4b9a582c1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/UnaryBooleanOperator.java
@@ -0,0 +1,39 @@
+// UnaryBooleanOperator.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * An <code>UnaryBooleanOperator</code> is a {@link BooleanOperator} whose value
+ * is the result of evaluating a boolean operator that takes only a single
+ * operand.
+ *
+ * @see NaryBooleanOperator
+ * @model abstract="true"
+ */
+public interface UnaryBooleanOperator extends BooleanOperator {
+ /**
+ * @return the operand of the operator
+ * @model containment="true"
+ */
+ Predicate getOperand();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.UnaryBooleanOperator#getOperand <em>Operand</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Operand</em>' containment reference.
+ * @see #getOperand()
+ * @generated
+ */
+ void setOperand(Predicate value);
+} // UnaryBooleanOperator \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/AndImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/AndImpl.java
new file mode 100644
index 000000000..1f38560bc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/AndImpl.java
@@ -0,0 +1,66 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.And;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>And</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AndImpl extends NaryBooleanOperatorImpl implements And {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AndImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.AND;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ boolean retValue = true;
+ for (Predicate predicate : getOperands()) {
+ retValue = predicate.evaluate(time, timerPeriod, graph);
+ // Is it false
+ if (!retValue) {
+ // Yes
+ break;
+ } // if
+ } // for each Predicate
+ return retValue;
+ } // evaluate
+} //AndImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanExpressionImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanExpressionImpl.java
new file mode 100644
index 000000000..db9745a95
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanExpressionImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.predicate.BooleanExpression;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class BooleanExpressionImpl extends PredicateImpl implements BooleanExpression {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.BOOLEAN_EXPRESSION;
+ }
+
+} //BooleanExpressionImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanOperatorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanOperatorImpl.java
new file mode 100644
index 000000000..b872cdd9a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanOperatorImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.predicate.BooleanOperator;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class BooleanOperatorImpl extends BooleanExpressionImpl implements BooleanOperator {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.BOOLEAN_OPERATOR;
+ }
+
+} //BooleanOperatorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/ElapsedTimeTestImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/ElapsedTimeTestImpl.java
new file mode 100644
index 000000000..2f5fea038
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/ElapsedTimeTestImpl.java
@@ -0,0 +1,374 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Elapsed Time Test</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl#isReferenceTimeValid <em>Reference Time Valid</em>}</li>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl#getElapsedMilliseconds <em>Elapsed Milliseconds</em>}</li>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl#getNumberofDays <em>Numberof Days</em>}</li>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl#getReferenceTime <em>Reference Time</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ElapsedTimeTestImpl extends TimeTestImpl implements ElapsedTimeTest {
+ /**
+ * The default value of the '{@link #isReferenceTimeValid() <em>Reference Time Valid</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isReferenceTimeValid()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean REFERENCE_TIME_VALID_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isReferenceTimeValid() <em>Reference Time Valid</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isReferenceTimeValid()
+ * @generated
+ * @ordered
+ */
+ protected boolean referenceTimeValid = REFERENCE_TIME_VALID_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getElapsedMilliseconds() <em>Elapsed Milliseconds</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElapsedMilliseconds()
+ * @generated
+ * @ordered
+ */
+ protected static final long ELAPSED_MILLISECONDS_EDEFAULT = 0L;
+
+ /**
+ * The cached value of the '{@link #getElapsedMilliseconds() <em>Elapsed Milliseconds</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElapsedMilliseconds()
+ * @generated
+ * @ordered
+ */
+ protected long elapsedMilliseconds = ELAPSED_MILLISECONDS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNumberofDays() <em>Numberof Days</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumberofDays()
+ * @generated
+ * @ordered
+ */
+ protected static final int NUMBEROF_DAYS_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getNumberofDays() <em>Numberof Days</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumberofDays()
+ * @generated
+ * @ordered
+ */
+ protected int numberofDays = NUMBEROF_DAYS_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getReferenceTime() <em>Reference Time</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReferenceTime()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime referenceTime;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected ElapsedTimeTestImpl() {
+ super();
+ setReferenceTime(ModelFactory.eINSTANCE.createSTEMTime());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.ELAPSED_TIME_TEST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isReferenceTimeValid() {
+ return referenceTimeValid;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setReferenceTimeValid(boolean newReferenceTimeValid) {
+ boolean oldReferenceTimeValid = referenceTimeValid;
+ referenceTimeValid = newReferenceTimeValid;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME_VALID, oldReferenceTimeValid, referenceTimeValid));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public long getElapsedMilliseconds() {
+ return elapsedMilliseconds;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getNumberofDays() {
+ return numberofDays;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setNumberofDays(int newNumberofDays) {
+ int oldNumberofDays = getNumberofDays();
+ numberofDays = newNumberofDays;
+
+ elapsedMilliseconds = getNumberofDays() * STEMTime.Units.DAY.getMilliseconds();
+
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS, oldNumberofDays, numberofDays));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime getReferenceTime() {
+ return referenceTime;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetReferenceTime(STEMTime newReferenceTime, NotificationChain msgs) {
+ STEMTime oldReferenceTime = referenceTime;
+ referenceTime = newReferenceTime;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME, oldReferenceTime, newReferenceTime);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setReferenceTime(STEMTime newReferenceTime) {
+ if (newReferenceTime != referenceTime) {
+ NotificationChain msgs = null;
+ if (referenceTime != null)
+ msgs = ((InternalEObject)referenceTime).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME, null, msgs);
+ if (newReferenceTime != null)
+ msgs = ((InternalEObject)newReferenceTime).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME, null, msgs);
+ msgs = basicSetReferenceTime(newReferenceTime, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME, newReferenceTime, newReferenceTime));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME:
+ return basicSetReferenceTime(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME_VALID:
+ return isReferenceTimeValid();
+ case PredicatePackage.ELAPSED_TIME_TEST__ELAPSED_MILLISECONDS:
+ return getElapsedMilliseconds();
+ case PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS:
+ return getNumberofDays();
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME:
+ return getReferenceTime();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME_VALID:
+ setReferenceTimeValid((Boolean)newValue);
+ return;
+ case PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS:
+ setNumberofDays((Integer)newValue);
+ return;
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME:
+ setReferenceTime((STEMTime)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME_VALID:
+ setReferenceTimeValid(REFERENCE_TIME_VALID_EDEFAULT);
+ return;
+ case PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS:
+ setNumberofDays(NUMBEROF_DAYS_EDEFAULT);
+ return;
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME:
+ setReferenceTime((STEMTime)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME_VALID:
+ return referenceTimeValid != REFERENCE_TIME_VALID_EDEFAULT;
+ case PredicatePackage.ELAPSED_TIME_TEST__ELAPSED_MILLISECONDS:
+ return elapsedMilliseconds != ELAPSED_MILLISECONDS_EDEFAULT;
+ case PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS:
+ return numberofDays != NUMBEROF_DAYS_EDEFAULT;
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME:
+ return referenceTime != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (referenceTimeValid: "); //$NON-NLS-1$
+ result.append(referenceTimeValid);
+ result.append(", elapsedMilliseconds: "); //$NON-NLS-1$
+ result.append(elapsedMilliseconds);
+ result.append(", numberofDays: "); //$NON-NLS-1$
+ result.append(numberofDays);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ boolean retValue = false;
+ // Is the reference time valid?
+ if (isReferenceTimeValid()) {
+ // Yes
+ final long elapsedTimeMS = time.getTime().getTime() - getReferenceTime().getTime().getTime();
+ // Has enough time gone by?
+ retValue = elapsedTimeMS >= getElapsedMilliseconds();
+ } // if reference time valid?
+ else {
+ // No
+ // This must be the first time this has been called so this must be
+ // the start of the simulation. Remember the time value passed in as
+ // the reference value.
+
+ STEMTime newTime = (STEMTime)EcoreUtil.copy(time);
+ newTime = newTime.addIncrement(-timerPeriod); // Substract one time period
+ setReferenceTime(newTime);
+ setReferenceTimeValid(true);
+ } // else
+
+ return retValue;
+ } // evaluate
+
+} //ElapsedTimeTestImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/FalseImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/FalseImpl.java
new file mode 100644
index 000000000..cbcf787a5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/FalseImpl.java
@@ -0,0 +1,57 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.False;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>False</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FalseImpl extends TestImpl implements False {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FalseImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.FALSE;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ return false;
+ }
+
+} //FalseImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateExpressionImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateExpressionImpl.java
new file mode 100644
index 000000000..90e2715f0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateExpressionImpl.java
@@ -0,0 +1,270 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.BooleanExpression;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Identifiable Predicate Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.IdentifiablePredicateExpressionImpl#getPredicate <em>Predicate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IdentifiablePredicateExpressionImpl extends IdentifiablePredicateImpl implements IdentifiablePredicateExpression {
+ /**
+ * The cached value of the '{@link #getPredicate() <em>Predicate</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPredicate()
+ * @generated
+ * @ordered
+ */
+ protected Predicate predicate;
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IdentifiablePredicateExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void reset() {
+ if(this.getPredicate() != null)
+ this.getPredicate().reset();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.IDENTIFIABLE_PREDICATE_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate getPredicate() {
+ return predicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPredicate(Predicate newPredicate, NotificationChain msgs) {
+ Predicate oldPredicate = predicate;
+ predicate = newPredicate;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE, oldPredicate, newPredicate);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPredicate(Predicate newPredicate) {
+ if (newPredicate != predicate) {
+ NotificationChain msgs = null;
+ if (predicate != null)
+ msgs = ((InternalEObject)predicate).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE, null, msgs);
+ if (newPredicate != null)
+ msgs = ((InternalEObject)newPredicate).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE, null, msgs);
+ msgs = basicSetPredicate(newPredicate, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE, newPredicate, newPredicate));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ return basicSetPredicate(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ return getPredicate();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ setPredicate((Predicate)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ setPredicate((Predicate)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ return predicate != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == BooleanExpression.class) {
+ switch (derivedFeatureID) {
+ default: return -1;
+ }
+ }
+ if (baseClass == PredicateExpression.class) {
+ switch (derivedFeatureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE: return PredicatePackage.PREDICATE_EXPRESSION__PREDICATE;
+ default: return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == BooleanExpression.class) {
+ switch (baseFeatureID) {
+ default: return -1;
+ }
+ }
+ if (baseClass == PredicateExpression.class) {
+ switch (baseFeatureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE: return PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE;
+ default: return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * @see Identifiable#compareTo(Identifiable)
+ */
+ @Override
+ public int compareTo(Identifiable o) {
+ final ComposedAdapterFactory itemProviderFactory = new ComposedAdapterFactory(
+ ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ final IItemLabelProvider lp1 = (IItemLabelProvider) itemProviderFactory.adapt(
+ this, IItemLabelProvider.class);
+ final IItemLabelProvider lp2 = (IItemLabelProvider) itemProviderFactory.adapt(o,
+ IItemLabelProvider.class);
+ return lp1.getText(this).compareTo(lp2.getText(o));
+ } // compareTo
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiablePredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ boolean retValue = false;
+ final Predicate predicate = getPredicate();
+ // Was a predicate supplied?
+ if (predicate != null) {
+ // Yes
+ retValue = predicate.evaluate(time, timerPeriod, graph);
+ }
+ return retValue;
+ } // evaluate
+
+} //IdentifiablePredicateExpressionImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateImpl.java
new file mode 100644
index 000000000..319a5f5ee
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateImpl.java
@@ -0,0 +1,75 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.IdentifiablePredicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Identifiable Predicate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class IdentifiablePredicateImpl extends IdentifiableImpl implements IdentifiablePredicate {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected IdentifiablePredicateImpl() {
+ super();
+ setURI(STEMURI.createURI(URI_TYPE_PREDICATE_SEGMENT + "/"
+ + STEMURI.generateUniquePart()));
+ setTypeURI(STEMURI.PREDICATE_TYPE_URI);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.IDENTIFIABLE_PREDICATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void reset() {
+ // Nothing, override in subclass
+ }
+
+} //IdentifiablePredicateImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiableTestImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiableTestImpl.java
new file mode 100644
index 000000000..df837a013
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiableTestImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.predicate.IdentifiableTest;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Identifiable Test</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class IdentifiableTestImpl extends IdentifiablePredicateImpl implements IdentifiableTest {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IdentifiableTestImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.IDENTIFIABLE_TEST;
+ }
+
+} //IdentifiableTestImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NaryBooleanOperatorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NaryBooleanOperatorImpl.java
new file mode 100644
index 000000000..5ee604ec4
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NaryBooleanOperatorImpl.java
@@ -0,0 +1,155 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.core.predicate.NaryBooleanOperator;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Nary Boolean Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.NaryBooleanOperatorImpl#getOperands <em>Operands</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class NaryBooleanOperatorImpl extends BooleanOperatorImpl implements NaryBooleanOperator {
+ /**
+ * The cached value of the '{@link #getOperands() <em>Operands</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperands()
+ * @generated
+ * @ordered
+ */
+ protected EList<Predicate> operands;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NaryBooleanOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Predicate> getOperands() {
+ if (operands == null) {
+ operands = new EObjectContainmentEList<Predicate>(Predicate.class, this, PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS);
+ }
+ return operands;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ return ((InternalEList<?>)getOperands()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ return getOperands();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ getOperands().clear();
+ getOperands().addAll((Collection<? extends Predicate>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ getOperands().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ return operands != null && !operands.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //NaryBooleanOperatorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NotImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NotImpl.java
new file mode 100644
index 000000000..89d4e3bb6
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NotImpl.java
@@ -0,0 +1,58 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.Not;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Not</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NotImpl extends UnaryBooleanOperatorImpl implements Not {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NotImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.NOT;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ return !getOperand().evaluate(time, timerPeriod, graph);
+ }
+
+
+} //NotImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/OrImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/OrImpl.java
new file mode 100644
index 000000000..91ffc9c01
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/OrImpl.java
@@ -0,0 +1,68 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.Or;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Or</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class OrImpl extends NaryBooleanOperatorImpl implements Or {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OrImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.OR;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ boolean retValue = false;
+ for (Predicate predicate : getOperands()) {
+ retValue = predicate.evaluate(time, timerPeriod, graph);
+ // One is true?
+ if (retValue) {
+ // Yes
+ break;
+ } // if
+ } // for each Predicate
+ return retValue;
+ } // evaluate
+
+
+} //OrImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateExpressionImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateExpressionImpl.java
new file mode 100644
index 000000000..281b9d1aa
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateExpressionImpl.java
@@ -0,0 +1,196 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.PredicateExpressionImpl#getPredicate <em>Predicate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PredicateExpressionImpl extends BooleanExpressionImpl implements PredicateExpression {
+ /**
+ * The cached value of the '{@link #getPredicate() <em>Predicate</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPredicate()
+ * @generated
+ * @ordered
+ */
+ protected Predicate predicate;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.PREDICATE_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate getPredicate() {
+ return predicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPredicate(Predicate newPredicate, NotificationChain msgs) {
+ Predicate oldPredicate = predicate;
+ predicate = newPredicate;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PredicatePackage.PREDICATE_EXPRESSION__PREDICATE, oldPredicate, newPredicate);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPredicate(Predicate newPredicate) {
+ if (newPredicate != predicate) {
+ NotificationChain msgs = null;
+ if (predicate != null)
+ msgs = ((InternalEObject)predicate).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.PREDICATE_EXPRESSION__PREDICATE, null, msgs);
+ if (newPredicate != null)
+ msgs = ((InternalEObject)newPredicate).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.PREDICATE_EXPRESSION__PREDICATE, null, msgs);
+ msgs = basicSetPredicate(newPredicate, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.PREDICATE_EXPRESSION__PREDICATE, newPredicate, newPredicate));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ return basicSetPredicate(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ return getPredicate();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ setPredicate((Predicate)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ setPredicate((Predicate)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ return predicate != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ try {
+ return getPredicate().evaluate(time, timerPeriod, graph);
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+} //PredicateExpressionImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateFactoryImpl.java
new file mode 100644
index 000000000..b8f163b4d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateFactoryImpl.java
@@ -0,0 +1,199 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.predicate.And;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.False;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.Not;
+import org.eclipse.stem.core.predicate.Or;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+import org.eclipse.stem.core.predicate.True;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicateFactoryImpl extends EFactoryImpl implements PredicateFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PredicateFactory init() {
+ try {
+ PredicateFactory thePredicateFactory = (PredicateFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/core/predicate.ecore"); //$NON-NLS-1$
+ if (thePredicateFactory != null) {
+ return thePredicateFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new PredicateFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case PredicatePackage.AND: return createAnd();
+ case PredicatePackage.FALSE: return createFalse();
+ case PredicatePackage.NOT: return createNot();
+ case PredicatePackage.OR: return createOr();
+ case PredicatePackage.PREDICATE_REFERENCE: return createPredicateReference();
+ case PredicatePackage.TRUE: return createTrue();
+ case PredicatePackage.PREDICATE_EXPRESSION: return createPredicateExpression();
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION: return createIdentifiablePredicateExpression();
+ case PredicatePackage.ELAPSED_TIME_TEST: return createElapsedTimeTest();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public And createAnd() {
+ AndImpl and = new AndImpl();
+ return and;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public False createFalse() {
+ FalseImpl false_ = new FalseImpl();
+ return false_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Not createNot() {
+ NotImpl not = new NotImpl();
+ return not;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Or createOr() {
+ OrImpl or = new OrImpl();
+ return or;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateReference createPredicateReference() {
+ PredicateReferenceImpl predicateReference = new PredicateReferenceImpl();
+ return predicateReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public True createTrue() {
+ TrueImpl true_ = new TrueImpl();
+ return true_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateExpression createPredicateExpression() {
+ PredicateExpressionImpl predicateExpression = new PredicateExpressionImpl();
+ return predicateExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiablePredicateExpression createIdentifiablePredicateExpression() {
+ IdentifiablePredicateExpressionImpl identifiablePredicateExpression = new IdentifiablePredicateExpressionImpl();
+ return identifiablePredicateExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ElapsedTimeTest createElapsedTimeTest() {
+ ElapsedTimeTestImpl elapsedTimeTest = new ElapsedTimeTestImpl();
+ return elapsedTimeTest;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicatePackage getPredicatePackage() {
+ return (PredicatePackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static PredicatePackage getPackage() {
+ return PredicatePackage.eINSTANCE;
+ }
+
+} //PredicateFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateImpl.java
new file mode 100644
index 000000000..03f5f9a5a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateImpl.java
@@ -0,0 +1,70 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Predicate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class PredicateImpl extends EObjectImpl implements Predicate {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.PREDICATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void reset() {
+ // Subclasses overrides if necessary
+ }
+
+} //PredicateImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicatePackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicatePackageImpl.java
new file mode 100644
index 000000000..7d8c696c1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicatePackageImpl.java
@@ -0,0 +1,708 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.And;
+import org.eclipse.stem.core.predicate.BooleanExpression;
+import org.eclipse.stem.core.predicate.BooleanOperator;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.False;
+import org.eclipse.stem.core.predicate.IdentifiablePredicate;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.IdentifiableTest;
+import org.eclipse.stem.core.predicate.NaryBooleanOperator;
+import org.eclipse.stem.core.predicate.Not;
+import org.eclipse.stem.core.predicate.Or;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+import org.eclipse.stem.core.predicate.Test;
+import org.eclipse.stem.core.predicate.TimeTest;
+import org.eclipse.stem.core.predicate.True;
+import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicatePackageImpl extends EPackageImpl implements PredicatePackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass andEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass booleanExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass booleanOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass falseEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass naryBooleanOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass notEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass orEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass predicateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass predicateReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass testEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass trueEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass unaryBooleanOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass predicateExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass identifiablePredicateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass identifiablePredicateExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass identifiableTestEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass timeTestEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass elapsedTimeTestEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.predicate.PredicatePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private PredicatePackageImpl() {
+ super(eNS_URI, PredicateFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link PredicatePackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static PredicatePackage init() {
+ if (isInited) return (PredicatePackage)EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI);
+
+ // Obtain or create and register package
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new PredicatePackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ thePredicatePackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ thePredicatePackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ thePredicatePackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(PredicatePackage.eNS_URI, thePredicatePackage);
+ return thePredicatePackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAnd() {
+ return andEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBooleanExpression() {
+ return booleanExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBooleanOperator() {
+ return booleanOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFalse() {
+ return falseEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNaryBooleanOperator() {
+ return naryBooleanOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNaryBooleanOperator_Operands() {
+ return (EReference)naryBooleanOperatorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNot() {
+ return notEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOr() {
+ return orEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPredicate() {
+ return predicateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPredicateReference() {
+ return predicateReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPredicateReference_Predicate() {
+ return (EReference)predicateReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTest() {
+ return testEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTrue() {
+ return trueEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getUnaryBooleanOperator() {
+ return unaryBooleanOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUnaryBooleanOperator_Operand() {
+ return (EReference)unaryBooleanOperatorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPredicateExpression() {
+ return predicateExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPredicateExpression_Predicate() {
+ return (EReference)predicateExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIdentifiablePredicate() {
+ return identifiablePredicateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIdentifiablePredicateExpression() {
+ return identifiablePredicateExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIdentifiableTest() {
+ return identifiableTestEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTimeTest() {
+ return timeTestEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getElapsedTimeTest() {
+ return elapsedTimeTestEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getElapsedTimeTest_ReferenceTimeValid() {
+ return (EAttribute)elapsedTimeTestEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getElapsedTimeTest_ElapsedMilliseconds() {
+ return (EAttribute)elapsedTimeTestEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getElapsedTimeTest_NumberofDays() {
+ return (EAttribute)elapsedTimeTestEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getElapsedTimeTest_ReferenceTime() {
+ return (EReference)elapsedTimeTestEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateFactory getPredicateFactory() {
+ return (PredicateFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ andEClass = createEClass(AND);
+
+ booleanExpressionEClass = createEClass(BOOLEAN_EXPRESSION);
+
+ booleanOperatorEClass = createEClass(BOOLEAN_OPERATOR);
+
+ falseEClass = createEClass(FALSE);
+
+ naryBooleanOperatorEClass = createEClass(NARY_BOOLEAN_OPERATOR);
+ createEReference(naryBooleanOperatorEClass, NARY_BOOLEAN_OPERATOR__OPERANDS);
+
+ notEClass = createEClass(NOT);
+
+ orEClass = createEClass(OR);
+
+ predicateEClass = createEClass(PREDICATE);
+
+ predicateReferenceEClass = createEClass(PREDICATE_REFERENCE);
+ createEReference(predicateReferenceEClass, PREDICATE_REFERENCE__PREDICATE);
+
+ testEClass = createEClass(TEST);
+
+ trueEClass = createEClass(TRUE);
+
+ unaryBooleanOperatorEClass = createEClass(UNARY_BOOLEAN_OPERATOR);
+ createEReference(unaryBooleanOperatorEClass, UNARY_BOOLEAN_OPERATOR__OPERAND);
+
+ predicateExpressionEClass = createEClass(PREDICATE_EXPRESSION);
+ createEReference(predicateExpressionEClass, PREDICATE_EXPRESSION__PREDICATE);
+
+ identifiablePredicateEClass = createEClass(IDENTIFIABLE_PREDICATE);
+
+ identifiablePredicateExpressionEClass = createEClass(IDENTIFIABLE_PREDICATE_EXPRESSION);
+
+ identifiableTestEClass = createEClass(IDENTIFIABLE_TEST);
+
+ timeTestEClass = createEClass(TIME_TEST);
+
+ elapsedTimeTestEClass = createEClass(ELAPSED_TIME_TEST);
+ createEAttribute(elapsedTimeTestEClass, ELAPSED_TIME_TEST__REFERENCE_TIME_VALID);
+ createEAttribute(elapsedTimeTestEClass, ELAPSED_TIME_TEST__ELAPSED_MILLISECONDS);
+ createEAttribute(elapsedTimeTestEClass, ELAPSED_TIME_TEST__NUMBEROF_DAYS);
+ createEReference(elapsedTimeTestEClass, ELAPSED_TIME_TEST__REFERENCE_TIME);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ ModelPackage theModelPackage = (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);
+ GraphPackage theGraphPackage = (GraphPackage)EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI);
+ CommonPackage theCommonPackage = (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ andEClass.getESuperTypes().add(this.getNaryBooleanOperator());
+ booleanExpressionEClass.getESuperTypes().add(this.getPredicate());
+ booleanOperatorEClass.getESuperTypes().add(this.getBooleanExpression());
+ falseEClass.getESuperTypes().add(this.getTest());
+ naryBooleanOperatorEClass.getESuperTypes().add(this.getBooleanOperator());
+ notEClass.getESuperTypes().add(this.getUnaryBooleanOperator());
+ orEClass.getESuperTypes().add(this.getNaryBooleanOperator());
+ predicateReferenceEClass.getESuperTypes().add(this.getPredicate());
+ testEClass.getESuperTypes().add(this.getPredicate());
+ trueEClass.getESuperTypes().add(this.getTest());
+ unaryBooleanOperatorEClass.getESuperTypes().add(this.getBooleanOperator());
+ predicateExpressionEClass.getESuperTypes().add(this.getBooleanExpression());
+ identifiablePredicateEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+ identifiablePredicateEClass.getESuperTypes().add(this.getPredicate());
+ identifiablePredicateExpressionEClass.getESuperTypes().add(this.getIdentifiablePredicate());
+ identifiablePredicateExpressionEClass.getESuperTypes().add(this.getPredicateExpression());
+ identifiableTestEClass.getESuperTypes().add(this.getIdentifiablePredicate());
+ identifiableTestEClass.getESuperTypes().add(this.getTest());
+ timeTestEClass.getESuperTypes().add(this.getTest());
+ elapsedTimeTestEClass.getESuperTypes().add(this.getTimeTest());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(andEClass, And.class, "And", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(booleanExpressionEClass, BooleanExpression.class, "BooleanExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(booleanOperatorEClass, BooleanOperator.class, "BooleanOperator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(falseEClass, False.class, "False", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(naryBooleanOperatorEClass, NaryBooleanOperator.class, "NaryBooleanOperator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getNaryBooleanOperator_Operands(), this.getPredicate(), null, "operands", null, 0, -1, NaryBooleanOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(notEClass, Not.class, "Not", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(orEClass, Or.class, "Or", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(predicateEClass, Predicate.class, "Predicate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ EOperation op = addEOperation(predicateEClass, ecorePackage.getEBoolean(), "evaluate", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theModelPackage.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, ecorePackage.getELong(), "timerPeriod", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theGraphPackage.getGraph(), "graph", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(predicateEClass, null, "reset", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(predicateReferenceEClass, PredicateReference.class, "PredicateReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getPredicateReference_Predicate(), this.getPredicate(), null, "predicate", null, 0, 1, PredicateReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(testEClass, Test.class, "Test", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(trueEClass, True.class, "True", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(unaryBooleanOperatorEClass, UnaryBooleanOperator.class, "UnaryBooleanOperator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getUnaryBooleanOperator_Operand(), this.getPredicate(), null, "operand", null, 0, 1, UnaryBooleanOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(predicateExpressionEClass, PredicateExpression.class, "PredicateExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getPredicateExpression_Predicate(), this.getPredicate(), null, "predicate", null, 0, 1, PredicateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(identifiablePredicateEClass, IdentifiablePredicate.class, "IdentifiablePredicate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(identifiablePredicateExpressionEClass, IdentifiablePredicateExpression.class, "IdentifiablePredicateExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(identifiableTestEClass, IdentifiableTest.class, "IdentifiableTest", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(timeTestEClass, TimeTest.class, "TimeTest", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(elapsedTimeTestEClass, ElapsedTimeTest.class, "ElapsedTimeTest", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getElapsedTimeTest_ReferenceTimeValid(), ecorePackage.getEBoolean(), "referenceTimeValid", "false", 0, 1, ElapsedTimeTest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getElapsedTimeTest_ElapsedMilliseconds(), ecorePackage.getELong(), "elapsedMilliseconds", null, 0, 1, ElapsedTimeTest.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getElapsedTimeTest_NumberofDays(), ecorePackage.getEInt(), "numberofDays", "0", 0, 1, ElapsedTimeTest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEReference(getElapsedTimeTest_ReferenceTime(), theModelPackage.getSTEMTime(), null, "referenceTime", null, 0, 1, ElapsedTimeTest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //PredicatePackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateReferenceImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateReferenceImpl.java
new file mode 100644
index 000000000..c7a641098
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateReferenceImpl.java
@@ -0,0 +1,175 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.PredicateReferenceImpl#getPredicate <em>Predicate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PredicateReferenceImpl extends PredicateImpl implements PredicateReference {
+ /**
+ * The cached value of the '{@link #getPredicate() <em>Predicate</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPredicate()
+ * @generated
+ * @ordered
+ */
+ protected Predicate predicate;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateReferenceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.PREDICATE_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate getPredicate() {
+ if (predicate != null && predicate.eIsProxy()) {
+ InternalEObject oldPredicate = (InternalEObject)predicate;
+ predicate = (Predicate)eResolveProxy(oldPredicate);
+ if (predicate != oldPredicate) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, PredicatePackage.PREDICATE_REFERENCE__PREDICATE, oldPredicate, predicate));
+ }
+ }
+ return predicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate basicGetPredicate() {
+ return predicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPredicate(Predicate newPredicate) {
+ Predicate oldPredicate = predicate;
+ predicate = newPredicate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.PREDICATE_REFERENCE__PREDICATE, oldPredicate, predicate));
+ }
+
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ return getPredicate().evaluate(time, timerPeriod, graph);
+ } // evaluate
+
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_REFERENCE__PREDICATE:
+ if (resolve) return getPredicate();
+ return basicGetPredicate();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_REFERENCE__PREDICATE:
+ setPredicate((Predicate)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_REFERENCE__PREDICATE:
+ setPredicate((Predicate)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_REFERENCE__PREDICATE:
+ return predicate != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //PredicateReferenceImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TestImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TestImpl.java
new file mode 100644
index 000000000..1376b6f49
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TestImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.Test;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Test</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TestImpl extends PredicateImpl implements Test {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TestImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.TEST;
+ }
+
+} //TestImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TimeTestImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TimeTestImpl.java
new file mode 100644
index 000000000..67add7128
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TimeTestImpl.java
@@ -0,0 +1,48 @@
+// TimeTestImpl.java
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.TimeTest;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Time Test</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TimeTestImpl extends TestImpl implements TimeTest {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TimeTestImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.TIME_TEST;
+ }
+
+} //TimeTestImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TrueImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TrueImpl.java
new file mode 100644
index 000000000..a77faea3a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TrueImpl.java
@@ -0,0 +1,57 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.True;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>True</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TrueImpl extends TestImpl implements True {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TrueImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.TRUE;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ return true;
+ }
+
+} //TrueImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/UnaryBooleanOperatorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/UnaryBooleanOperatorImpl.java
new file mode 100644
index 000000000..2a838f73a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/UnaryBooleanOperatorImpl.java
@@ -0,0 +1,181 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Unary Boolean Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.UnaryBooleanOperatorImpl#getOperand <em>Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class UnaryBooleanOperatorImpl extends BooleanOperatorImpl implements UnaryBooleanOperator {
+ /**
+ * The cached value of the '{@link #getOperand() <em>Operand</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperand()
+ * @generated
+ * @ordered
+ */
+ protected Predicate operand;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected UnaryBooleanOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate getOperand() {
+ return operand;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOperand(Predicate newOperand, NotificationChain msgs) {
+ Predicate oldOperand = operand;
+ operand = newOperand;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND, oldOperand, newOperand);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOperand(Predicate newOperand) {
+ if (newOperand != operand) {
+ NotificationChain msgs = null;
+ if (operand != null)
+ msgs = ((InternalEObject)operand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND, null, msgs);
+ if (newOperand != null)
+ msgs = ((InternalEObject)newOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND, null, msgs);
+ msgs = basicSetOperand(newOperand, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND, newOperand, newOperand));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ return basicSetOperand(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ return getOperand();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ setOperand((Predicate)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ setOperand((Predicate)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ return operand != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //UnaryBooleanOperatorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/AndItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/AndItemProvider.java
new file mode 100644
index 000000000..094a62695
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/AndItemProvider.java
@@ -0,0 +1,123 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.And} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AndItemProvider
+ extends NaryBooleanOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AndItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns And.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/And.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return "&";
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+// @Override
+ public String getTextGen(Object object) {
+ return getString("_UI_And_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanExpressionItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanExpressionItemProvider.java
new file mode 100644
index 000000000..7382b526d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanExpressionItemProvider.java
@@ -0,0 +1,102 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.BooleanExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BooleanExpressionItemProvider
+ extends PredicateItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanExpressionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_BooleanExpression_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanOperatorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanOperatorItemProvider.java
new file mode 100644
index 000000000..93dd1eaf5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanOperatorItemProvider.java
@@ -0,0 +1,102 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.BooleanOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BooleanOperatorItemProvider
+ extends BooleanExpressionItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_BooleanOperator_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/ElapsedTimeTestItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/ElapsedTimeTestItemProvider.java
new file mode 100644
index 000000000..28681eadc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/ElapsedTimeTestItemProvider.java
@@ -0,0 +1,159 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.ElapsedTimeTest} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ElapsedTimeTestItemProvider
+ extends TimeTestItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ElapsedTimeTestItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNumberofDaysPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Numberof Days feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNumberofDaysPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ElapsedTimeTest_numberofDays_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ElapsedTimeTest_numberofDays_feature", "_UI_ElapsedTimeTest_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PredicatePackage.Literals.ELAPSED_TIME_TEST__NUMBEROF_DAYS,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns ElapsedTimeTest.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/ElapsedTimeTest.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ final ElapsedTimeTest ett = (ElapsedTimeTest)object;
+ return "After " + ett.getNumberofDays() + " days";
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ ElapsedTimeTest elapsedTimeTest = (ElapsedTimeTest)object;
+ return getString("_UI_ElapsedTimeTest_type") + " " + elapsedTimeTest.isReferenceTimeValid(); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(ElapsedTimeTest.class)) {
+ case PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+} // ElapsedTimeTestItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/FalseItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/FalseItemProvider.java
new file mode 100644
index 000000000..00cd2b7af
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/FalseItemProvider.java
@@ -0,0 +1,124 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.False} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FalseItemProvider
+ extends TestItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FalseItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns False.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/False")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return "False";
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ return getString("_UI_False_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateExpressionItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateExpressionItemProvider.java
new file mode 100644
index 000000000..061090d74
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateExpressionItemProvider.java
@@ -0,0 +1,283 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.IdentifiablePredicateExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IdentifiablePredicateExpressionItemProvider
+ extends IdentifiablePredicateItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiablePredicateExpressionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Predicate.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Predicate"));
+ }
+
+ /**
+ * This returns IdentifiablePredicateExpression.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getImageGen(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/IdentifiablePredicateExpression")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see IdentifiableItemProvider#getText(Object)
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((IdentifiablePredicateExpression)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IdentifiablePredicateExpression_type") : //$NON-NLS-1$
+ getString("_UI_IdentifiablePredicateExpression_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(IdentifiablePredicateExpression.class)) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createOr()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+// PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+// PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ protected void collectNewChildDescriptorsGen(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createOr()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateItemProvider.java
new file mode 100644
index 000000000..6da0a2af2
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateItemProvider.java
@@ -0,0 +1,115 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.IdentifiablePredicate} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IdentifiablePredicateItemProvider
+ extends IdentifiableItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiablePredicateItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return ((IChildCreationExtender)adapterFactory).getResourceLocator();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiableTestItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiableTestItemProvider.java
new file mode 100644
index 000000000..bdd6ac16c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiableTestItemProvider.java
@@ -0,0 +1,107 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.predicate.IdentifiableTest;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.IdentifiableTest} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IdentifiableTestItemProvider
+ extends IdentifiablePredicateItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiableTestItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((IdentifiableTest)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IdentifiableTest_type") : //$NON-NLS-1$
+ getString("_UI_IdentifiableTest_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NaryBooleanOperatorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NaryBooleanOperatorItemProvider.java
new file mode 100644
index 000000000..b82d9b8c5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NaryBooleanOperatorItemProvider.java
@@ -0,0 +1,246 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.predicate.NaryBooleanOperator;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.NaryBooleanOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NaryBooleanOperatorItemProvider
+ extends BooleanOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NaryBooleanOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_NaryBooleanOperator_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(NaryBooleanOperator.class)) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createOr()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+// PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+// PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ } // collectNewChildDescriptors
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ protected void collectNewChildDescriptorsGen(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createOr()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ }
+
+
+} // NaryBooleanOperatorItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NotItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NotItemProvider.java
new file mode 100644
index 000000000..32b03f08d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NotItemProvider.java
@@ -0,0 +1,123 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.Not} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NotItemProvider
+ extends UnaryBooleanOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Not.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Not.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return "!";
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ return getString("_UI_Not_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/OrItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/OrItemProvider.java
new file mode 100644
index 000000000..4063fa090
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/OrItemProvider.java
@@ -0,0 +1,124 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.Or} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OrItemProvider
+ extends NaryBooleanOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OrItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Or.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Or.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_Or_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ return getString("_UI_Or_type"); //$NON-NLS-1$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateExpressionItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateExpressionItemProvider.java
new file mode 100644
index 000000000..024f8eadb
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateExpressionItemProvider.java
@@ -0,0 +1,279 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.PredicateExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicateExpressionItemProvider
+ extends BooleanExpressionItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateExpressionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns PredicateExpression.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Predicate"));
+ }
+
+ /**
+ * This returns PredicateExpression.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImageGen(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PredicateExpression")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return "()";
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ return getString("_UI_PredicateExpression_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(PredicateExpression.class)) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createOr()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+// PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+// PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+
+ } // collectNewChildDescriptors
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ protected void collectNewChildDescriptorsGen(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createOr()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ }
+
+} // PredicateExpressionItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProvider.java
new file mode 100644
index 000000000..9b0c03f9c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProvider.java
@@ -0,0 +1,145 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.Predicate} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicateItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Predicate.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Predicate"));
+ }
+
+ /**
+ * This returns Predicate.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getImageGen(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Predicate")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_Predicate_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return ((IChildCreationExtender)adapterFactory).getResourceLocator();
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#isWrappingNeeded(java.lang.Object)
+ */
+ @Override
+ protected boolean isWrappingNeeded(Object object) {
+ return true;
+ }
+
+
+} //
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProviderAdapterFactory.java
new file mode 100644
index 000000000..f56307345
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProviderAdapterFactory.java
@@ -0,0 +1,441 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ChildCreationExtenderManager;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.util.PredicateAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicateItemProviderAdapterFactory extends PredicateAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This helps manage the child creation extenders.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(CoreEditPlugin.INSTANCE, PredicatePackage.eNS_URI);
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.And} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AndItemProvider andItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.And}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createAndAdapter() {
+ if (andItemProvider == null) {
+ andItemProvider = new AndItemProvider(this);
+ }
+
+ return andItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.False} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FalseItemProvider falseItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.False}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFalseAdapter() {
+ if (falseItemProvider == null) {
+ falseItemProvider = new FalseItemProvider(this);
+ }
+
+ return falseItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.Not} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NotItemProvider notItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.Not}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createNotAdapter() {
+ if (notItemProvider == null) {
+ notItemProvider = new NotItemProvider(this);
+ }
+
+ return notItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.Or} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OrItemProvider orItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.Or}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createOrAdapter() {
+ if (orItemProvider == null) {
+ orItemProvider = new OrItemProvider(this);
+ }
+
+ return orItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.PredicateReference} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateReferenceItemProvider predicateReferenceItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.PredicateReference}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPredicateReferenceAdapter() {
+ if (predicateReferenceItemProvider == null) {
+ predicateReferenceItemProvider = new PredicateReferenceItemProvider(this);
+ }
+
+ return predicateReferenceItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.True} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TrueItemProvider trueItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.True}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTrueAdapter() {
+ if (trueItemProvider == null) {
+ trueItemProvider = new TrueItemProvider(this);
+ }
+
+ return trueItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.PredicateExpression} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateExpressionItemProvider predicateExpressionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.PredicateExpression}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPredicateExpressionAdapter() {
+ if (predicateExpressionItemProvider == null) {
+ predicateExpressionItemProvider = new PredicateExpressionItemProvider(this);
+ }
+
+ return predicateExpressionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.IdentifiablePredicateExpression} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IdentifiablePredicateExpressionItemProvider identifiablePredicateExpressionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.IdentifiablePredicateExpression}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIdentifiablePredicateExpressionAdapter() {
+ if (identifiablePredicateExpressionItemProvider == null) {
+ identifiablePredicateExpressionItemProvider = new IdentifiablePredicateExpressionItemProvider(this);
+ }
+
+ return identifiablePredicateExpressionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.ElapsedTimeTest} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ElapsedTimeTestItemProvider elapsedTimeTestItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.ElapsedTimeTest}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createElapsedTimeTestAdapter() {
+ if (elapsedTimeTestItemProvider == null) {
+ elapsedTimeTestItemProvider = new ElapsedTimeTestItemProvider(this);
+ }
+
+ return elapsedTimeTestItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List<IChildCreationExtender> getChildCreationExtenders() {
+ return childCreationExtenderManager.getChildCreationExtenders();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+ return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ResourceLocator getResourceLocator() {
+ return childCreationExtenderManager;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (andItemProvider != null) andItemProvider.dispose();
+ if (falseItemProvider != null) falseItemProvider.dispose();
+ if (notItemProvider != null) notItemProvider.dispose();
+ if (orItemProvider != null) orItemProvider.dispose();
+ if (predicateReferenceItemProvider != null) predicateReferenceItemProvider.dispose();
+ if (trueItemProvider != null) trueItemProvider.dispose();
+ if (predicateExpressionItemProvider != null) predicateExpressionItemProvider.dispose();
+ if (identifiablePredicateExpressionItemProvider != null) identifiablePredicateExpressionItemProvider.dispose();
+ if (elapsedTimeTestItemProvider != null) elapsedTimeTestItemProvider.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateReferenceItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateReferenceItemProvider.java
new file mode 100644
index 000000000..0b85b58d6
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateReferenceItemProvider.java
@@ -0,0 +1,153 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.PredicateReference} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicateReferenceItemProvider
+ extends PredicateItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateReferenceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(PredicatePackage.Literals.PREDICATE_REFERENCE__PREDICATE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns PredicateReference.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PredicateReference")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_PredicateReference_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(PredicateReference.class)) {
+ case PredicatePackage.PREDICATE_REFERENCE__PREDICATE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TestItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TestItemProvider.java
new file mode 100644
index 000000000..3e8d8a995
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TestItemProvider.java
@@ -0,0 +1,113 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.Test} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TestItemProvider
+ extends PredicateItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TestItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Test.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Test")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_Test_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TimeTestItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TimeTestItemProvider.java
new file mode 100644
index 000000000..c60fcd4e3
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TimeTestItemProvider.java
@@ -0,0 +1,101 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.TimeTest} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TimeTestItemProvider
+ extends TestItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TimeTestItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_TimeTest_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TrueItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TrueItemProvider.java
new file mode 100644
index 000000000..825d7765d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TrueItemProvider.java
@@ -0,0 +1,124 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.True} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrueItemProvider
+ extends TestItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrueItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns True.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/True")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return "True";
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ return getString("_UI_True_type"); //$NON-NLS-1$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/UnaryBooleanOperatorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/UnaryBooleanOperatorItemProvider.java
new file mode 100644
index 000000000..35f3088c0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/UnaryBooleanOperatorItemProvider.java
@@ -0,0 +1,245 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.UnaryBooleanOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UnaryBooleanOperatorItemProvider
+ extends BooleanOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UnaryBooleanOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_UnaryBooleanOperator_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(UnaryBooleanOperator.class)) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createOr()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+// PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+// PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ } // collectNewChildDescriptors
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ protected void collectNewChildDescriptorsGen(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createOr()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ }
+
+} // UnaryBooleanOperatorItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateAdapterFactory.java
new file mode 100644
index 000000000..72391a294
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateAdapterFactory.java
@@ -0,0 +1,506 @@
+package org.eclipse.stem.core.predicate.util;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.predicate.And;
+import org.eclipse.stem.core.predicate.BooleanExpression;
+import org.eclipse.stem.core.predicate.BooleanOperator;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.False;
+import org.eclipse.stem.core.predicate.IdentifiablePredicate;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.IdentifiableTest;
+import org.eclipse.stem.core.predicate.NaryBooleanOperator;
+import org.eclipse.stem.core.predicate.Not;
+import org.eclipse.stem.core.predicate.Or;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+import org.eclipse.stem.core.predicate.Test;
+import org.eclipse.stem.core.predicate.TimeTest;
+import org.eclipse.stem.core.predicate.True;
+import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.PredicatePackage
+ * @generated
+ */
+public class PredicateAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static PredicatePackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = PredicatePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateSwitch<Adapter> modelSwitch =
+ new PredicateSwitch<Adapter>() {
+ @Override
+ public Adapter caseAnd(And object) {
+ return createAndAdapter();
+ }
+ @Override
+ public Adapter caseBooleanExpression(BooleanExpression object) {
+ return createBooleanExpressionAdapter();
+ }
+ @Override
+ public Adapter caseBooleanOperator(BooleanOperator object) {
+ return createBooleanOperatorAdapter();
+ }
+ @Override
+ public Adapter caseFalse(False object) {
+ return createFalseAdapter();
+ }
+ @Override
+ public Adapter caseNaryBooleanOperator(NaryBooleanOperator object) {
+ return createNaryBooleanOperatorAdapter();
+ }
+ @Override
+ public Adapter caseNot(Not object) {
+ return createNotAdapter();
+ }
+ @Override
+ public Adapter caseOr(Or object) {
+ return createOrAdapter();
+ }
+ @Override
+ public Adapter casePredicate(Predicate object) {
+ return createPredicateAdapter();
+ }
+ @Override
+ public Adapter casePredicateReference(PredicateReference object) {
+ return createPredicateReferenceAdapter();
+ }
+ @Override
+ public Adapter caseTest(Test object) {
+ return createTestAdapter();
+ }
+ @Override
+ public Adapter caseTrue(True object) {
+ return createTrueAdapter();
+ }
+ @Override
+ public Adapter caseUnaryBooleanOperator(UnaryBooleanOperator object) {
+ return createUnaryBooleanOperatorAdapter();
+ }
+ @Override
+ public Adapter casePredicateExpression(PredicateExpression object) {
+ return createPredicateExpressionAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiablePredicate(IdentifiablePredicate object) {
+ return createIdentifiablePredicateAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiablePredicateExpression(IdentifiablePredicateExpression object) {
+ return createIdentifiablePredicateExpressionAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiableTest(IdentifiableTest object) {
+ return createIdentifiableTestAdapter();
+ }
+ @Override
+ public Adapter caseTimeTest(TimeTest object) {
+ return createTimeTestAdapter();
+ }
+ @Override
+ public Adapter caseElapsedTimeTest(ElapsedTimeTest object) {
+ return createElapsedTimeTestAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.And <em>And</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.And
+ * @generated
+ */
+ public Adapter createAndAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.BooleanExpression <em>Boolean Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.BooleanExpression
+ * @generated
+ */
+ public Adapter createBooleanExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.BooleanOperator <em>Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.BooleanOperator
+ * @generated
+ */
+ public Adapter createBooleanOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.False <em>False</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.False
+ * @generated
+ */
+ public Adapter createFalseAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.NaryBooleanOperator <em>Nary Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.NaryBooleanOperator
+ * @generated
+ */
+ public Adapter createNaryBooleanOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.Not <em>Not</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.Not
+ * @generated
+ */
+ public Adapter createNotAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.Or <em>Or</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.Or
+ * @generated
+ */
+ public Adapter createOrAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.Predicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.Predicate
+ * @generated
+ */
+ public Adapter createPredicateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.PredicateReference <em>Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.PredicateReference
+ * @generated
+ */
+ public Adapter createPredicateReferenceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.Test <em>Test</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.Test
+ * @generated
+ */
+ public Adapter createTestAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.True <em>True</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.True
+ * @generated
+ */
+ public Adapter createTrueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.UnaryBooleanOperator <em>Unary Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.UnaryBooleanOperator
+ * @generated
+ */
+ public Adapter createUnaryBooleanOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.PredicateExpression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.PredicateExpression
+ * @generated
+ */
+ public Adapter createPredicateExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.IdentifiablePredicate <em>Identifiable Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.IdentifiablePredicate
+ * @generated
+ */
+ public Adapter createIdentifiablePredicateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.IdentifiablePredicateExpression <em>Identifiable Predicate Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.IdentifiablePredicateExpression
+ * @generated
+ */
+ public Adapter createIdentifiablePredicateExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.IdentifiableTest <em>Identifiable Test</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.IdentifiableTest
+ * @generated
+ */
+ public Adapter createIdentifiableTestAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.TimeTest <em>Time Test</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.TimeTest
+ * @generated
+ */
+ public Adapter createTimeTestAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest <em>Elapsed Time Test</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest
+ * @generated
+ */
+ public Adapter createElapsedTimeTestAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //PredicateAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateSwitch.java
new file mode 100644
index 000000000..518a58be5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateSwitch.java
@@ -0,0 +1,606 @@
+package org.eclipse.stem.core.predicate.util;
+
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.predicate.And;
+import org.eclipse.stem.core.predicate.BooleanExpression;
+import org.eclipse.stem.core.predicate.BooleanOperator;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.False;
+import org.eclipse.stem.core.predicate.IdentifiablePredicate;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.IdentifiableTest;
+import org.eclipse.stem.core.predicate.NaryBooleanOperator;
+import org.eclipse.stem.core.predicate.Not;
+import org.eclipse.stem.core.predicate.Or;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+import org.eclipse.stem.core.predicate.Test;
+import org.eclipse.stem.core.predicate.TimeTest;
+import org.eclipse.stem.core.predicate.True;
+import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.PredicatePackage
+ * @generated
+ */
+public class PredicateSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static PredicatePackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateSwitch() {
+ if (modelPackage == null) {
+ modelPackage = PredicatePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case PredicatePackage.AND: {
+ And and = (And)theEObject;
+ T1 result = caseAnd(and);
+ if (result == null) result = caseNaryBooleanOperator(and);
+ if (result == null) result = caseBooleanOperator(and);
+ if (result == null) result = caseBooleanExpression(and);
+ if (result == null) result = casePredicate(and);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.BOOLEAN_EXPRESSION: {
+ BooleanExpression booleanExpression = (BooleanExpression)theEObject;
+ T1 result = caseBooleanExpression(booleanExpression);
+ if (result == null) result = casePredicate(booleanExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.BOOLEAN_OPERATOR: {
+ BooleanOperator booleanOperator = (BooleanOperator)theEObject;
+ T1 result = caseBooleanOperator(booleanOperator);
+ if (result == null) result = caseBooleanExpression(booleanOperator);
+ if (result == null) result = casePredicate(booleanOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.FALSE: {
+ False false_ = (False)theEObject;
+ T1 result = caseFalse(false_);
+ if (result == null) result = caseTest(false_);
+ if (result == null) result = casePredicate(false_);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR: {
+ NaryBooleanOperator naryBooleanOperator = (NaryBooleanOperator)theEObject;
+ T1 result = caseNaryBooleanOperator(naryBooleanOperator);
+ if (result == null) result = caseBooleanOperator(naryBooleanOperator);
+ if (result == null) result = caseBooleanExpression(naryBooleanOperator);
+ if (result == null) result = casePredicate(naryBooleanOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.NOT: {
+ Not not = (Not)theEObject;
+ T1 result = caseNot(not);
+ if (result == null) result = caseUnaryBooleanOperator(not);
+ if (result == null) result = caseBooleanOperator(not);
+ if (result == null) result = caseBooleanExpression(not);
+ if (result == null) result = casePredicate(not);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.OR: {
+ Or or = (Or)theEObject;
+ T1 result = caseOr(or);
+ if (result == null) result = caseNaryBooleanOperator(or);
+ if (result == null) result = caseBooleanOperator(or);
+ if (result == null) result = caseBooleanExpression(or);
+ if (result == null) result = casePredicate(or);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.PREDICATE: {
+ Predicate predicate = (Predicate)theEObject;
+ T1 result = casePredicate(predicate);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.PREDICATE_REFERENCE: {
+ PredicateReference predicateReference = (PredicateReference)theEObject;
+ T1 result = casePredicateReference(predicateReference);
+ if (result == null) result = casePredicate(predicateReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.TEST: {
+ Test test = (Test)theEObject;
+ T1 result = caseTest(test);
+ if (result == null) result = casePredicate(test);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.TRUE: {
+ True true_ = (True)theEObject;
+ T1 result = caseTrue(true_);
+ if (result == null) result = caseTest(true_);
+ if (result == null) result = casePredicate(true_);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR: {
+ UnaryBooleanOperator unaryBooleanOperator = (UnaryBooleanOperator)theEObject;
+ T1 result = caseUnaryBooleanOperator(unaryBooleanOperator);
+ if (result == null) result = caseBooleanOperator(unaryBooleanOperator);
+ if (result == null) result = caseBooleanExpression(unaryBooleanOperator);
+ if (result == null) result = casePredicate(unaryBooleanOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.PREDICATE_EXPRESSION: {
+ PredicateExpression predicateExpression = (PredicateExpression)theEObject;
+ T1 result = casePredicateExpression(predicateExpression);
+ if (result == null) result = caseBooleanExpression(predicateExpression);
+ if (result == null) result = casePredicate(predicateExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.IDENTIFIABLE_PREDICATE: {
+ IdentifiablePredicate identifiablePredicate = (IdentifiablePredicate)theEObject;
+ T1 result = caseIdentifiablePredicate(identifiablePredicate);
+ if (result == null) result = caseIdentifiable(identifiablePredicate);
+ if (result == null) result = casePredicate(identifiablePredicate);
+ if (result == null) result = caseComparable(identifiablePredicate);
+ if (result == null) result = caseSanityChecker(identifiablePredicate);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION: {
+ IdentifiablePredicateExpression identifiablePredicateExpression = (IdentifiablePredicateExpression)theEObject;
+ T1 result = caseIdentifiablePredicateExpression(identifiablePredicateExpression);
+ if (result == null) result = caseIdentifiablePredicate(identifiablePredicateExpression);
+ if (result == null) result = casePredicateExpression(identifiablePredicateExpression);
+ if (result == null) result = caseIdentifiable(identifiablePredicateExpression);
+ if (result == null) result = caseBooleanExpression(identifiablePredicateExpression);
+ if (result == null) result = caseComparable(identifiablePredicateExpression);
+ if (result == null) result = caseSanityChecker(identifiablePredicateExpression);
+ if (result == null) result = casePredicate(identifiablePredicateExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.IDENTIFIABLE_TEST: {
+ IdentifiableTest identifiableTest = (IdentifiableTest)theEObject;
+ T1 result = caseIdentifiableTest(identifiableTest);
+ if (result == null) result = caseIdentifiablePredicate(identifiableTest);
+ if (result == null) result = caseTest(identifiableTest);
+ if (result == null) result = caseIdentifiable(identifiableTest);
+ if (result == null) result = casePredicate(identifiableTest);
+ if (result == null) result = caseComparable(identifiableTest);
+ if (result == null) result = caseSanityChecker(identifiableTest);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.TIME_TEST: {
+ TimeTest timeTest = (TimeTest)theEObject;
+ T1 result = caseTimeTest(timeTest);
+ if (result == null) result = caseTest(timeTest);
+ if (result == null) result = casePredicate(timeTest);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.ELAPSED_TIME_TEST: {
+ ElapsedTimeTest elapsedTimeTest = (ElapsedTimeTest)theEObject;
+ T1 result = caseElapsedTimeTest(elapsedTimeTest);
+ if (result == null) result = caseTimeTest(elapsedTimeTest);
+ if (result == null) result = caseTest(elapsedTimeTest);
+ if (result == null) result = casePredicate(elapsedTimeTest);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>And</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>And</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseAnd(And object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Boolean Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Boolean Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseBooleanExpression(BooleanExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Boolean Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Boolean Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseBooleanOperator(BooleanOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>False</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>False</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseFalse(False object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Nary Boolean Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Nary Boolean Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseNaryBooleanOperator(NaryBooleanOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Not</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Not</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseNot(Not object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Or</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Or</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseOr(Or object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Predicate</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Predicate</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 casePredicate(Predicate object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 casePredicateReference(PredicateReference object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Test</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Test</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseTest(Test object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>True</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>True</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseTrue(True object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Unary Boolean Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Unary Boolean Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseUnaryBooleanOperator(UnaryBooleanOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 casePredicateExpression(PredicateExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable Predicate</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable Predicate</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiablePredicate(IdentifiablePredicate object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable Predicate Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable Predicate Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiablePredicateExpression(IdentifiablePredicateExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable Test</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable Test</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiableTest(IdentifiableTest object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Time Test</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Time Test</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseTimeTest(TimeTest object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Elapsed Time Test</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Elapsed Time Test</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseElapsedTimeTest(ElapsedTimeTest object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //PredicateSwitch

Back to the top