[262874] ODA Data Filtering Specification model - Initial cut of Experimental API
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.datatools.connectivity.oda.design.ui/META-INF/MANIFEST.MF
index 43443a7..e9eba46 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design.ui/META-INF/MANIFEST.MF
@@ -16,9 +16,9 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.datatools.connectivity.ui;bundle-version="[1.1.0,2.0.0)";visibility:=reexport,
- org.eclipse.datatools.connectivity.oda;bundle-version="[3.1.2,4.0.0)";visibility:=reexport,
+ org.eclipse.datatools.connectivity.oda;bundle-version="[3.2.0,4.0.0)";visibility:=reexport,
  org.eclipse.datatools.connectivity.oda.profile;bundle-version="[3.0.6,4.0.0)";visibility:=reexport,
- org.eclipse.datatools.connectivity.oda.design;bundle-version="[3.0.4,4.0.0)";visibility:=reexport,
+ org.eclipse.datatools.connectivity.oda.design;bundle-version="[3.1.0,4.0.0)";visibility:=reexport,
  org.eclipse.datatools.connectivity.oda.consumer;bundle-version="[3.1.1,4.0.0)",
  org.eclipse.ui.navigator;bundle-version="[3.3.0,4.0.0)"
 Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design.ui/src/org/eclipse/datatools/connectivity/oda/design/ui/designsession/DesignSessionUtil.java b/plugins/org.eclipse.datatools.connectivity.oda.design.ui/src/org/eclipse/datatools/connectivity/oda/design/ui/designsession/DesignSessionUtil.java
index d9f0b00..736972b 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design.ui/src/org/eclipse/datatools/connectivity/oda/design/ui/designsession/DesignSessionUtil.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design.ui/src/org/eclipse/datatools/connectivity/oda/design/ui/designsession/DesignSessionUtil.java
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- * Copyright (c) 2006, 2008 Actuate Corporation.
+ * Copyright (c) 2006, 2009 Actuate Corporation.
  * 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
@@ -24,6 +24,7 @@
 import org.eclipse.datatools.connectivity.oda.IResultSetMetaData;
 import org.eclipse.datatools.connectivity.oda.OdaException;
 import org.eclipse.datatools.connectivity.oda.design.ColumnDefinition;
+import org.eclipse.datatools.connectivity.oda.design.CustomExpression;
 import org.eclipse.datatools.connectivity.oda.design.DataElementAttributes;
 import org.eclipse.datatools.connectivity.oda.design.DataSetParameters;
 import org.eclipse.datatools.connectivity.oda.design.DataSourceDesign;
@@ -42,6 +43,8 @@
 import org.eclipse.datatools.connectivity.oda.design.internal.designsession.DesignerLogger;
 import org.eclipse.datatools.connectivity.oda.design.ui.manifest.UIManifestExplorer;
 import org.eclipse.datatools.connectivity.oda.design.ui.nls.Messages;
+import org.eclipse.datatools.connectivity.oda.filter.manifest.ExpressionDefinition;
+import org.eclipse.datatools.connectivity.oda.filter.manifest.FilterExpressionExplorer;
 import org.eclipse.datatools.connectivity.oda.profile.OdaProfileExplorer;
 
 /**
@@ -691,4 +694,44 @@
         }
     }
     
+    /**
+     * <strong>EXPERIMENTAL</strong>.
+     * An utility method to look up the definition of the specified custom filter expression.
+     * @param customExpr    a custom filter expression specified in a data set design's filter specification 
+     * @return  an instance of {@link ExpressionDefinition}, or null if no matching definition is found
+     * @since DTP 1.7
+     */
+    public static ExpressionDefinition getExtensionCustomDefinition( CustomExpression customExpr )
+    {
+        if( customExpr == null )
+            return null;
+        return getExtensionCustomDefinition( customExpr.getDeclaringExtensionId(), customExpr.getId() );
+    }
+    
+    /**
+     * <strong>EXPERIMENTAL</strong>.
+     * An utility method to look up the definition of the specified custom filter expression
+     * declared by the specified extension.
+     * @param extensionId   id of an extension that implements the filterExpressions extension point
+     * @param exprId    id of a custom filter expression 
+     * @return  an instance of {@link ExpressionDefinition}, or null if no matching definition is found
+     * @since DTP 1.7
+     */
+    public static ExpressionDefinition getExtensionCustomDefinition( String extensionId, String exprId )
+    {
+        try
+        {
+            return FilterExpressionExplorer.getInstance().getExtensionDefinition( extensionId, exprId );
+        }
+        catch( IllegalArgumentException ex )
+        {
+            // ignore exception
+        }
+        catch( OdaException ex )
+        {
+            // ignore exception
+        }
+        return null;
+    }
+    
 }
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design.ui/src/org/eclipse/datatools/connectivity/oda/design/ui/manifest/UIManifestExplorer.java b/plugins/org.eclipse.datatools.connectivity.oda.design.ui/src/org/eclipse/datatools/connectivity/oda/design/ui/manifest/UIManifestExplorer.java
index 6191261..6180b70 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design.ui/src/org/eclipse/datatools/connectivity/oda/design/ui/manifest/UIManifestExplorer.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design.ui/src/org/eclipse/datatools/connectivity/oda/design/ui/manifest/UIManifestExplorer.java
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- * Copyright (c) 2006 Actuate Corporation.
+ * Copyright (c) 2006, 2009 Actuate Corporation.
  * 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
@@ -430,7 +430,7 @@
             String elementName ) 
         throws OdaException
     {
-        return ManifestUtil.getNamedElement( extension, elementName );
+        return ManifestUtil.getNamedElement( extension, elementName, "id" ); //$NON-NLS-1$
     }
     
     /**
@@ -445,7 +445,7 @@
                                             String elementName ) 
         throws OdaException
     {
-        return ManifestUtil.getNamedElements( extension, elementName );
+        return ManifestUtil.getNamedElements( extension, elementName, "id" ); //$NON-NLS-1$
     }
 
 }
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/META-INF/MANIFEST.MF b/plugins/org.eclipse.datatools.connectivity.oda.design/META-INF/MANIFEST.MF
index 6c35a17..132c21a 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.datatools.connectivity.oda.design; singleton:=true
-Bundle-Version: 3.0.8.qualifier
+Bundle-Version: 3.1.0.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.datatools.connectivity.oda.design,
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/model/DesignXML.xsd b/plugins/org.eclipse.datatools.connectivity.oda.design/model/DesignXML.xsd
index 29bac9a..62fed54 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/model/DesignXML.xsd
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/model/DesignXML.xsd
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema targetNamespace="http://www.eclipse.org/datatools/connectivity/oda/design" xmlns:design="http://www.eclipse.org/datatools/connectivity/oda/design" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<xsd:schema xmlns:design="http://www.eclipse.org/datatools/connectivity/oda/design" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.eclipse.org/datatools/connectivity/oda/design">
   <xsd:simpleType name="AxisType">
     <xsd:annotation>
       <xsd:documentation>Axis type of a result set column.</xsd:documentation>
@@ -20,6 +20,16 @@
       <xsd:enumeration value="NotNullable"/>
     </xsd:restriction>
   </xsd:simpleType>
+  <xsd:simpleType name="FilterVariableType">
+    <xsd:annotation>
+      <xsd:documentation>The type of a filter expression variable.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName">
+      <xsd:enumeration value="ResultSetColumn"/>
+      <xsd:enumeration value="InstanceOf"/>
+      <xsd:enumeration value="QueryExpression"/>
+    </xsd:restriction>
+  </xsd:simpleType>
   <xsd:simpleType name="HorizontalAlignment">
     <xsd:annotation>
       <xsd:documentation>Horizontal display alignment of the data value.</xsd:documentation>
@@ -109,6 +119,37 @@
       <xsd:enumeration value="Word"/>
     </xsd:restriction>
   </xsd:simpleType>
+  <xsd:complexType name="AndExpression">
+    <xsd:annotation>
+      <xsd:documentation>A built-in composite filter expression whose child expressions are combined by the And boolean operator.  The composite expression is evaluated to be true only if all its child expressions are evaluated as true.  </xsd:documentation>
+    </xsd:annotation>
+    <xsd:complexContent>
+      <xsd:extension base="design:CompositeFilterExpression"/>
+    </xsd:complexContent>
+  </xsd:complexType>
+  <xsd:element name="AndExpression" type="design:AndExpression">
+    <xsd:annotation>
+      <xsd:documentation>A built-in composite filter expression whose child expressions are combined by the And boolean operator.  The composite expression is evaluated to be true only if all its child expressions are evaluated as true.  </xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:complexType name="AtomicExpressionContext">
+    <xsd:annotation>
+      <xsd:documentation>The context within a basic, indivisible unit of filter expression that can be evaluated by itself.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element maxOccurs="1" minOccurs="0" name="variable" type="design:FilterExpressionVariable"/>
+      <xsd:element maxOccurs="1" minOccurs="0" name="arguments" type="design:FilterExpressionArguments">
+        <xsd:annotation>
+          <xsd:documentation>Defines the expression's argument(s) and each of its associated value.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:element name="AtomicExpressionContext" type="design:AtomicExpressionContext">
+    <xsd:annotation>
+      <xsd:documentation>The context within a basic, indivisible unit of filter expression that can be evaluated by itself.</xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
   <xsd:complexType name="AxisAttributes">
     <xsd:annotation>
       <xsd:documentation>Multi-dimensional attributes of a data element, such as a result set column.</xsd:documentation>
@@ -148,6 +189,50 @@
       <xsd:documentation>Definition of a result set column.</xsd:documentation>
     </xsd:annotation>
   </xsd:element>
+  <xsd:complexType name="CompositeFilterExpression">
+    <xsd:annotation>
+      <xsd:documentation>A composite of one or multiple child filter expressions.  Its child expressions are ordered, but their relationships are not defined.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:complexContent>
+      <xsd:extension base="design:FilterExpression">
+        <xsd:sequence>
+          <xsd:element maxOccurs="unbounded" minOccurs="1" name="children" type="design:FilterExpression"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  <xsd:element name="CompositeFilterExpression" type="design:CompositeFilterExpression">
+    <xsd:annotation>
+      <xsd:documentation>A composite of one or multiple child filter expressions.  Its child expressions are ordered, but their relationships are not defined.</xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:complexType name="CustomExpression">
+    <xsd:annotation>
+      <xsd:documentation>The definition of a custom atomic filter expression contributed by an extension of the org.eclipse.datatools.connectivity.oda.filterExpressions extension point.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:complexContent>
+      <xsd:extension base="design:FilterExpression">
+        <xsd:sequence>
+          <xsd:element maxOccurs="1" minOccurs="1" name="context" type="design:AtomicExpressionContext"/>
+        </xsd:sequence>
+        <xsd:attribute name="declaringExtensionId" type="xsd:string" use="required">
+          <xsd:annotation>
+            <xsd:documentation>The id of the filterExpressions extension that declares this custom expression.</xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="id" type="xsd:string" use="required">
+          <xsd:annotation>
+            <xsd:documentation>An id that uniquely identifies  a custom expression within an ODA filterExpressions extension.</xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  <xsd:element name="CustomExpression" type="design:CustomExpression">
+    <xsd:annotation>
+      <xsd:documentation>The definition of a custom atomic filter expression contributed by an extension of the org.eclipse.datatools.connectivity.oda.filterExpressions extension point.</xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
   <xsd:complexType name="DataAccessDesign">
     <xsd:annotation>
       <xsd:documentation>The design of how to access a data set.  Its model is a design tree that starts with a top-level dataSetDesign, which contains its corresponding dataSourceDesign.  The top-level data set may contain nested data set designs.</xsd:documentation>
@@ -243,6 +328,11 @@
       </xsd:element>
       <xsd:element maxOccurs="1" minOccurs="0" name="resultSets" type="design:ResultSets"/>
       <xsd:element maxOccurs="1" minOccurs="0" name="parameters" type="design:DataSetParameters"/>
+      <xsd:element maxOccurs="1" minOccurs="0" name="filter" type="design:FilterExpression">
+        <xsd:annotation>
+          <xsd:documentation>Pre-defined filter specification  of the data set.  It may be any extended concrete type of FilterExpression.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
     </xsd:sequence>
     <xsd:attribute name="name" type="xsd:string" use="required">
       <xsd:annotation>
@@ -449,12 +539,20 @@
       <xsd:documentation>Defines a design session response to an ODA host designer upon exit of the session.</xsd:documentation>
     </xsd:annotation>
   </xsd:element>
-  <xsd:complexType name="DocumentRoot">
-    <xsd:sequence>
-      <xsd:element maxOccurs="unbounded" minOccurs="0" name="mixed" nillable="true" type="xsd:string"/>
-    </xsd:sequence>
-  </xsd:complexType>
+  <xsd:complexType name="DocumentRoot"/>
   <xsd:element name="DocumentRoot" type="design:DocumentRoot"/>
+  <xsd:complexType name="DynamicExpression">
+    <xsd:annotation>
+      <xsd:documentation>A built-in filter expression designed with a pre-defined variable.  Its specific type of expression(s) to apply and corresponding argument value(s) to collect will be dynamically specified at runtime.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:complexContent>
+      <xsd:extension base="design:FilterExpression">
+        <xsd:sequence>
+          <xsd:element maxOccurs="1" minOccurs="1" name="contextVariable" type="design:FilterExpressionVariable"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
   <xsd:complexType name="DynamicValuesQuery">
     <xsd:annotation>
       <xsd:documentation>A dynamic set of selectable input values to be retrieved at runtime using the query defined in a data set design.</xsd:documentation>
@@ -487,6 +585,85 @@
       <xsd:documentation>A dynamic set of selectable input values to be retrieved at runtime using the query defined in a data set design.</xsd:documentation>
     </xsd:annotation>
   </xsd:element>
+  <xsd:complexType abstract="true" name="FilterExpression">
+    <xsd:annotation>
+      <xsd:documentation>Abstract base class for all filter expressions defined by an ODA designer.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute default="false" name="negatable" type="xsd:string">
+      <xsd:annotation>
+        <xsd:documentation>Indicates whether the expression can be negated, i.e. applied with a NotExpression.  Default is false.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+  </xsd:complexType>
+  <xsd:complexType name="FilterExpressionArguments">
+    <xsd:annotation>
+      <xsd:documentation>Definition of a filter expression's argument(s).</xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element maxOccurs="1" minOccurs="1" name="filterParameters" type="design:FilterParameters">
+        <xsd:annotation>
+          <xsd:documentation>A collection of parameters used for collecting a filter expression's argument values.  Each parameter may define either a static value, or an input parameter to dynamically collect user input value.  An input parameter definiiton may be a nested new instance, or may reference one of the existing DataSetParameters.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:element name="FilterExpressionArguments" type="design:FilterExpressionArguments">
+    <xsd:annotation>
+      <xsd:documentation>Definition of a filter expression's argument(s).</xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:complexType name="FilterExpressionVariable">
+    <xsd:annotation>
+      <xsd:documentation>Definition of a filter expression's variable.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute default="ResultSetColumn" name="type" type="design:FilterVariableType">
+      <xsd:annotation>
+        <xsd:documentation>The type of variable.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="identifier" type="xsd:string" use="required">
+      <xsd:annotation>
+        <xsd:documentation>A name or expression that identifies the variable used to evaluate a filter expression.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="nativeDataTypeCode" type="xsd:string">
+      <xsd:annotation>
+        <xsd:documentation>Native data type code of the identified variable.  If none or unknown value (0) is specified, the data element is mapped to an ODA String data type by default.  The native type code value is implementation-specific to individual ODA driver, which must support its mapping to one or more ODA data types.  The supported native-ODA data type mapping must be defined in the ODA dataSource extension.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+  </xsd:complexType>
+  <xsd:element name="FilterExpressionVariable" type="design:FilterExpressionVariable">
+    <xsd:annotation>
+      <xsd:documentation>Definition of a filter expression's variable.</xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:complexType name="FilterParameterDefinition">
+    <xsd:annotation>
+      <xsd:documentation>The definition of a parameter for the value of a filter expression's argument.  A filter parameter design may define either a static value, or an input parameter to dynamically collect user input value.  An input parameter definiiton may be a nested new instance, or may reference one of the existing DataSetParameters.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element maxOccurs="1" minOccurs="0" name="dynamicInputParameter" type="design:ParameterDefinition"/>
+    </xsd:sequence>
+    <xsd:attribute name="staticValue" type="xsd:string"/>
+  </xsd:complexType>
+  <xsd:element name="FilterParameterDefinition" type="design:FilterParameterDefinition">
+    <xsd:annotation>
+      <xsd:documentation>The definition of a parameter for the value of a filter expression's argument.  A filter parameter design may define either a static value, or an input parameter to dynamically collect user input value.  An input parameter definiiton may be a nested new instance, or may reference one of the existing DataSetParameters.</xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:complexType name="FilterParameters">
+    <xsd:annotation>
+      <xsd:documentation>A collection of parameters used for collecting a filter expression's argument values.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element maxOccurs="unbounded" minOccurs="1" name="parameterDefinitions" type="design:FilterParameterDefinition"/>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:element name="FilterParameters" type="design:FilterParameters">
+    <xsd:annotation>
+      <xsd:documentation>A collection of parameters used for collecting a filter expression's argument values.</xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
   <xsd:complexType name="InputElementAttributes">
     <xsd:annotation>
       <xsd:documentation>Common attributes for a data element defined with the input mode.</xsd:documentation>
@@ -531,6 +708,12 @@
         <xsd:documentation>Defaults to TextField if no static and dynamic value choices are defined; otherwise, defaults to SelectableList.</xsd:documentation>
       </xsd:annotation>
     </xsd:attribute>
+    <xsd:attribute default="1" name="autoSuggestThreshold" type="xsd:string">
+      <xsd:annotation>
+        <xsd:documentation>The number of characters after which auto suggest will kick in.  It is applicable only where an user can input a value, e.g. when a SelectableListWithTextField promptStyle and a DynamicValuesQuery is used.
+</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
   </xsd:complexType>
   <xsd:element name="InputElementUIHints" type="design:InputElementUIHints">
     <xsd:annotation>
@@ -603,6 +786,23 @@
       <xsd:documentation>A pair of name and corresponding value.</xsd:documentation>
     </xsd:annotation>
   </xsd:element>
+  <xsd:complexType name="NotExpression">
+    <xsd:annotation>
+      <xsd:documentation>A built-in negated filter expression.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:complexContent>
+      <xsd:extension base="design:FilterExpression">
+        <xsd:sequence>
+          <xsd:element maxOccurs="1" minOccurs="1" name="negatingExpression" type="design:FilterExpression"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  <xsd:element name="NotExpression" type="design:NotExpression">
+    <xsd:annotation>
+      <xsd:documentation>A built-in negated filter expression.</xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
   <xsd:complexType name="OdaDesignSession">
     <xsd:annotation>
       <xsd:documentation>Definition of an ODA design session on a Data Access Design.</xsd:documentation>
@@ -617,6 +817,19 @@
       <xsd:documentation>Definition of an ODA design session on a Data Access Design.</xsd:documentation>
     </xsd:annotation>
   </xsd:element>
+  <xsd:complexType name="OrExpression">
+    <xsd:annotation>
+      <xsd:documentation>A built-in composite filter expression whose child expressions are combined by the Or boolean operator.  The composite expression is evaluated to be true if any of its child expressions is evaluated as true.  </xsd:documentation>
+    </xsd:annotation>
+    <xsd:complexContent>
+      <xsd:extension base="design:CompositeFilterExpression"/>
+    </xsd:complexContent>
+  </xsd:complexType>
+  <xsd:element name="OrExpression" type="design:OrExpression">
+    <xsd:annotation>
+      <xsd:documentation>A built-in composite filter expression whose child expressions are combined by the Or boolean operator.  The composite expression is evaluated to be true if any of its child expressions is evaluated as true.  </xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
   <xsd:complexType name="OutputElementAttributes">
     <xsd:annotation>
       <xsd:documentation>Common attributes for a data element defined with the output mode.</xsd:documentation>
@@ -642,7 +855,7 @@
   </xsd:element>
   <xsd:complexType name="ParameterDefinition">
     <xsd:annotation>
-      <xsd:documentation>Top-level parameter definition.  Parameter could be scalar or complex type.</xsd:documentation>
+      <xsd:documentation>Top-level parameter definition; may be input and/or output mode.  Parameter may be of scalar or complex type.</xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
       <xsd:element maxOccurs="1" minOccurs="1" name="attributes" type="design:DataElementAttributes">
@@ -670,7 +883,7 @@
   </xsd:complexType>
   <xsd:element name="ParameterDefinition" type="design:ParameterDefinition">
     <xsd:annotation>
-      <xsd:documentation>Top-level parameter definition.  Parameter could be scalar or complex type.</xsd:documentation>
+      <xsd:documentation>Top-level parameter definition; may be input and/or output mode.  Parameter may be of scalar or complex type.</xsd:documentation>
     </xsd:annotation>
   </xsd:element>
   <xsd:complexType name="ParameterFieldDefinition">
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/model/odaDesignSession.genmodel b/plugins/org.eclipse.datatools.connectivity.oda.design/model/odaDesignSession.genmodel
index 456970f..f2420b7 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/model/odaDesignSession.genmodel
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/model/odaDesignSession.genmodel
@@ -1,14 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <genmodel:GenModel xmi:version="2.0"

     xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"

-    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2005, 2007 Actuate Corporation"

+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2005, 2009 Actuate Corporation"

     modelDirectory="/org.eclipse.datatools.connectivity.oda.design/src" editDirectory="/org.eclipse.datatools.connectivity.oda.design.edit/src"

     editorDirectory="/org.eclipse.datatools.connectivity.oda.design.editor/src" modelPluginID="org.eclipse.datatools.connectivity.oda.design"

     templateDirectory="/org.eclipse.datatools.connectivity.oda.design/src/templates"

     runtimeJar="true" dynamicTemplates="true" modelName="OdaDesignSession" editPluginClass="org.eclipse.datatools.connectivity.oda.design.provider.OdaDesignSessionEditPlugin"

     editorPluginClass="org.eclipse.datatools.connectivity.oda.design.presentation.OdaDesignSessionEditorPlugin"

-    generateSchema="true" nonNLSMarkers="true" codeFormatting="true" importerID="org.eclipse.xsd.ecore.importer">

-  <foreignModel>file:/E:/lchan/doc/DSRepository/ODA/func/odaDesignSession307.xsd</foreignModel>

+    generateSchema="true" nonNLSMarkers="true" runtimeCompatibility="true" codeFormatting="true"

+    importerID="org.eclipse.xsd.ecore.importer" complianceLevel="5.0">

+  <foreignModel>file:/E:/lchan/doc/DSRepository/ODA/func/odaDesignSession31.xsd</foreignModel>

   <genPackages prefix="Design" basePackage="org.eclipse.datatools.connectivity.oda"

       resource="XML" ecorePackage="org.eclipse.datatools.connectivity.oda.design.ecore#/">

     <genEnums ecoreEnum="org.eclipse.datatools.connectivity.oda.design.ecore#//AxisType">

@@ -21,6 +22,11 @@
       <genEnumLiterals ecoreEnumLiteral="org.eclipse.datatools.connectivity.oda.design.ecore#//ElementNullability/Nullable"/>

       <genEnumLiterals ecoreEnumLiteral="org.eclipse.datatools.connectivity.oda.design.ecore#//ElementNullability/NotNullable"/>

     </genEnums>

+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="org.eclipse.datatools.connectivity.oda.design.ecore#//FilterVariableType">

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.datatools.connectivity.oda.design.ecore#//FilterVariableType/ResultSetColumn"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.datatools.connectivity.oda.design.ecore#//FilterVariableType/InstanceOf"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.datatools.connectivity.oda.design.ecore#//FilterVariableType/QueryExpression"/>

+    </genEnums>

     <genEnums ecoreEnum="org.eclipse.datatools.connectivity.oda.design.ecore#//HorizontalAlignment">

       <genEnumLiterals ecoreEnumLiteral="org.eclipse.datatools.connectivity.oda.design.ecore#//HorizontalAlignment/Automatic"/>

       <genEnumLiterals ecoreEnumLiteral="org.eclipse.datatools.connectivity.oda.design.ecore#//HorizontalAlignment/Left"/>

@@ -72,6 +78,7 @@
     </genEnums>

     <genDataTypes ecoreDataType="org.eclipse.datatools.connectivity.oda.design.ecore#//AxisTypeObject"/>

     <genDataTypes ecoreDataType="org.eclipse.datatools.connectivity.oda.design.ecore#//ElementNullabilityObject"/>

+    <genDataTypes ecoreDataType="org.eclipse.datatools.connectivity.oda.design.ecore#//FilterVariableTypeObject"/>

     <genDataTypes ecoreDataType="org.eclipse.datatools.connectivity.oda.design.ecore#//HorizontalAlignmentObject"/>

     <genDataTypes ecoreDataType="org.eclipse.datatools.connectivity.oda.design.ecore#//InputPromptControlStyleObject"/>

     <genDataTypes ecoreDataType="org.eclipse.datatools.connectivity.oda.design.ecore#//OdaComplexDataTypeObject"/>

@@ -80,6 +87,11 @@
     <genDataTypes ecoreDataType="org.eclipse.datatools.connectivity.oda.design.ecore#//SessionStatusObject"/>

     <genDataTypes ecoreDataType="org.eclipse.datatools.connectivity.oda.design.ecore#//TextFormatTypeObject"/>

     <genDataTypes ecoreDataType="org.eclipse.datatools.connectivity.oda.design.ecore#//TextWrapTypeObject"/>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//AndExpression"/>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//AtomicExpressionContext">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//AtomicExpressionContext/variable"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//AtomicExpressionContext/arguments"/>

+    </genClasses>

     <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//AxisAttributes">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//AxisAttributes/axisType"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//AxisAttributes/onColumnLayout"/>

@@ -89,6 +101,14 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//ColumnDefinition/usageHints"/>

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//ColumnDefinition/multiDimensionAttributes"/>

     </genClasses>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//CompositeFilterExpression">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//CompositeFilterExpression/children"/>

+    </genClasses>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//CustomExpression">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//CustomExpression/declaringExtensionId"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//CustomExpression/id"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//CustomExpression/context"/>

+    </genClasses>

     <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//DataAccessDesign">

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//DataAccessDesign/dataSetDesign"/>

     </genClasses>

@@ -116,6 +136,7 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//DataSetDesign/resultSets"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//DataSetDesign/primaryResultSetName"/>

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//DataSetDesign/parameters"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//DataSetDesign/filter"/>

     </genClasses>

     <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//DataSetParameters">

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//DataSetParameters/parameterDefinitions"/>

@@ -160,12 +181,33 @@
       <genFeatures property="None" notify="false" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//DocumentRoot/xSISchemaLocation"/>

       <genFeatures property="None" notify="false" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//DocumentRoot/odaDesignSession"/>

     </genClasses>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//DynamicExpression">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//DynamicExpression/contextVariable"/>

+    </genClasses>

     <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//DynamicValuesQuery">

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//DynamicValuesQuery/dataSetDesign"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//DynamicValuesQuery/enabled"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//DynamicValuesQuery/valueColumn"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//DynamicValuesQuery/displayNameColumn"/>

     </genClasses>

+    <genClasses image="false" ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//FilterExpression">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//FilterExpression/negatable"/>

+    </genClasses>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//FilterExpressionArguments">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//FilterExpressionArguments/filterParameters"/>

+    </genClasses>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//FilterExpressionVariable">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//FilterExpressionVariable/type"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//FilterExpressionVariable/identifier"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//FilterExpressionVariable/nativeDataTypeCode"/>

+    </genClasses>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//FilterParameterDefinition">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//FilterParameterDefinition/staticValue"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//FilterParameterDefinition/dynamicInputParameter"/>

+    </genClasses>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//FilterParameters">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//FilterParameters/parameterDefinitions"/>

+    </genClasses>

     <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//InputElementAttributes">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//InputElementAttributes/defaultScalarValue"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//InputElementAttributes/editable"/>

@@ -177,6 +219,7 @@
     </genClasses>

     <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//InputElementUIHints">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//InputElementUIHints/promptStyle"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//InputElementUIHints/autoSuggestThreshold"/>

     </genClasses>

     <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//InputParameterAttributes">

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//InputParameterAttributes/elementAttributes"/>

@@ -194,10 +237,14 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//NameValuePair/name"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//NameValuePair/value"/>

     </genClasses>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//NotExpression">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//NotExpression/negatingExpression"/>

+    </genClasses>

     <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//OdaDesignSession">

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//OdaDesignSession/request"/>

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//OdaDesignSession/response"/>

     </genClasses>

+    <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//OrExpression"/>

     <genClasses ecoreClass="org.eclipse.datatools.connectivity.oda.design.ecore#//OutputElementAttributes">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.datatools.connectivity.oda.design.ecore#//OutputElementAttributes/label"/>

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.datatools.connectivity.oda.design.ecore#//OutputElementAttributes/formattingHints"/>

diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/model/org.eclipse.datatools.connectivity.oda.design.ecore b/plugins/org.eclipse.datatools.connectivity.oda.design/model/org.eclipse.datatools.connectivity.oda.design.ecore
index c399b5b..ab0a0af 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/model/org.eclipse.datatools.connectivity.oda.design.ecore
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/model/org.eclipse.datatools.connectivity.oda.design.ecore
@@ -3,6 +3,43 @@
     xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

     xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="design"

     nsURI="http://www.eclipse.org/datatools/connectivity/oda/design" nsPrefix="design">

+  <eClassifiers xsi:type="ecore:EClass" name="AndExpression" eSuperTypes="#//CompositeFilterExpression">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="A built-in composite filter expression whose child expressions are combined by the And boolean operator.  The composite expression is evaluated to be true only if all its child expressions are evaluated as true.  "/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="AndExpression"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="AtomicExpressionContext">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="The context within a basic, indivisible unit of filter expression that can be evaluated by itself."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="AtomicExpressionContext"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="variable" eType="#//FilterExpressionVariable"

+        containment="true" resolveProxies="false">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="variable"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" eType="#//FilterExpressionArguments"

+        containment="true" resolveProxies="false">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="Defines the expression's argument(s) and each of its associated value."/>

+      </eAnnotations>

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="arguments"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="AxisAttributes">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

       <details key="documentation" value="Multi-dimensional attributes of a data element, such as a result set column."/>

@@ -11,8 +48,8 @@
       <details key="name" value="AxisAttributes"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="axisType" unique="false"

-        lowerBound="1" eType="#//AxisType" defaultValueLiteral="Measure" unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="axisType" eType="#//AxisType"

+        defaultValueLiteral="Measure" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The axis type of the data element.  This provides hints to a consumer application on how the column should be used."/>

       </eAnnotations>

@@ -22,8 +59,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="onColumnLayout" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="onColumnLayout" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

         defaultValueLiteral="true" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="A hint on how the dimension data element should be layout on column or row.  It is normally used by presentation element such as a crosstab to design a default layout."/>

@@ -46,7 +82,7 @@
     <eLiterals name="DimensionAttribute" value="1"/>

     <eLiterals name="Measure" value="2"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EDataType" name="AxisTypeObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">

+  <eClassifiers xsi:type="ecore:EDataType" name="AxisTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="AxisType:Object"/>

       <details key="baseType" value="AxisType"/>

@@ -88,6 +124,61 @@
       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="CompositeFilterExpression" eSuperTypes="#//FilterExpression">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="A composite of one or multiple child filter expressions.  Its child expressions are ordered, but their relationships are not defined."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="CompositeFilterExpression"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="children" lowerBound="1"

+        upperBound="-1" eType="#//FilterExpression" containment="true" resolveProxies="false">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="children"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="CustomExpression" eSuperTypes="#//FilterExpression">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="The definition of a custom atomic filter expression contributed by an extension of the org.eclipse.datatools.connectivity.oda.filterExpressions extension point."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="CustomExpression"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="declaringExtensionId" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="The id of the filterExpressions extension that declares this custom expression."/>

+      </eAnnotations>

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="declaringExtensionId"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="An id that uniquely identifies  a custom expression within an ODA filterExpressions extension."/>

+      </eAnnotations>

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="id"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="context" lowerBound="1"

+        eType="#//AtomicExpressionContext" containment="true" resolveProxies="false">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="context"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="DataAccessDesign">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

       <details key="documentation" value="The design of how to access a data set.  Its model is a design tree that starts with a top-level dataSetDesign, which contains its corresponding dataSourceDesign.  The top-level data set may contain nested data set designs."/>

@@ -113,8 +204,7 @@
       <details key="name" value="DataElementAttributes"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="A name that uniquely identifies this data element.  If a data element can only be identified by position, this name may be empty."/>

       </eAnnotations>

@@ -124,8 +214,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="position" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//UnsignedShort"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="position" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//UnsignedShort"

         unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The 1-based index position (left-to-right order) within a collection of data elements.  The position is defined per the underlying data source, and is not necessarily sequential.  For example, a query may access 3 columns in a result set, but the data access design may choose to expose only column 2.  In this case, only one column element with postion 2 is defined in the result set definition."/>

@@ -136,9 +225,8 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nativeDataTypeCode" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int" defaultValueLiteral="0"

-        unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nativeDataTypeCode" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"

+        defaultValueLiteral="0" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Native data type code of the data element.  If none or unknown value (0) is specified, the data element is mapped to an ODA String data type by default.  The native type code value is implementation-specific to individual ODA driver, which must support its mapping to one or more ODA data types.  The supported native-ODA data type mapping must be defined in the ODA extension's plugin.xml ."/>

       </eAnnotations>

@@ -148,9 +236,8 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="precision" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int" defaultValueLiteral="-1"

-        unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="precision" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"

+        defaultValueLiteral="-1" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Maximum number of decimal digits in a numeric value, or the length of a non-numeric value.  A value of -1 indicates this attribute is not applicable."/>

       </eAnnotations>

@@ -160,7 +247,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="scale" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="scale" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"

         defaultValueLiteral="-1" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Maximum number of digits to the right of the decimal point.  A value of -1 indicates this attribute is not applicable."/>

@@ -171,8 +258,8 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nullability" unique="false"

-        eType="#//ElementNullability" defaultValueLiteral="Unknown" unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nullability" eType="#//ElementNullability"

+        defaultValueLiteral="Unknown" unsettable="true">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="element"/>

         <details key="name" value="nullability"/>

@@ -196,8 +283,7 @@
       <details key="name" value="DataElementUIHints"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Business name of the data element.  Could be localized."/>

       </eAnnotations>

@@ -207,8 +293,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="More extensive description of the data element."/>

       </eAnnotations>

@@ -227,8 +312,7 @@
       <details key="name" value="DataSetDesign"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The unique name that identifies an instance of dataSetDesign."/>

       </eAnnotations>

@@ -239,7 +323,7 @@
       </eAnnotations>

     </eStructuralFeatures>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="odaExtensionDataSetId"

-        unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The dataSet element ID defined in an ODA extension plugin manifest.  It identifies the type of data set design supported by the ODA extension.  Optional if only one dataSet element is defined in the manifest."/>

       </eAnnotations>

@@ -268,8 +352,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="element"/>

         <details key="name" value="displayName"/>

@@ -306,8 +389,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="primaryResultSetName" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="primaryResultSetName" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Identifies the primary result set if more than one result sets are available, and can be identified by name.  If results sets are identified by sequence, the first result set is the primary one."/>

       </eAnnotations>

@@ -325,6 +407,17 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="filter" eType="#//FilterExpression"

+        containment="true" resolveProxies="false">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="Pre-defined filter specification  of the data set.  It may be any extended concrete type of FilterExpression."/>

+      </eAnnotations>

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="filter"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="DataSetParameters">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

@@ -342,8 +435,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="derivedMetaData" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="derivedMetaData" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

         defaultValueLiteral="true" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="If the metadata can be derived, i.e. can be obtained by an ODA driver in each design session, an ODA host designer is not required to include the derived metadata in the next design session request.  An ODA designer may ignore such metadata in a Request."/>

@@ -362,8 +454,8 @@
       <details key="name" value="DataSetQuery"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="queryText" unique="false"

-        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="queryText" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The query command text to execute at runtime to retrieve data for this data set.  Retrieved data could be for one or more result sets and/or output parameters, as defined in this data set design.  The query syntax is specific to a data source; could be an empty string."/>

       </eAnnotations>

@@ -382,8 +474,7 @@
       <details key="name" value="DataSourceDesign"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The unique name that identifies an instance of dataSourceDesign."/>

       </eAnnotations>

@@ -393,8 +484,8 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="odaExtensionId" unique="false"

-        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="odaExtensionId" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The extension ID defined in an ODA extension plugin manifest.  It identifies the supporting ODA driver's extension plug-in that implements the ODA run-time extension point."/>

       </eAnnotations>

@@ -405,7 +496,7 @@
       </eAnnotations>

     </eStructuralFeatures>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="odaExtensionDataSourceId"

-        unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The data source element ID defined in an ODA extension plugin manifest.  Optional, defaults to be same as the ODA extension id if only one dataSource element is defined in the manifest."/>

       </eAnnotations>

@@ -415,8 +506,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="element"/>

         <details key="name" value="displayName"/>

@@ -445,19 +535,18 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="linkedProfileName" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="linkedProfileName" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="The name of a linked connection profile."/>

+      </eAnnotations>

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="element"/>

         <details key="name" value="linkedProfileName"/>

         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="documentation" value="The name of a linked connection profile."/>

-      </eAnnotations>

     </eStructuralFeatures>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="linkedProfileStoreFilePath"

-        unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The full path name of a linked connection profiles storage file where the linked profile is to be located at run-time.  A null value indicates to use the default DTP profiles storage file."/>

       </eAnnotations>

@@ -487,8 +576,8 @@
       <details key="name" value="DesignerState"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" unique="false"

-        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Version of the designer state's data format."/>

       </eAnnotations>

@@ -518,8 +607,7 @@
       <details key="name" value="DesignerStateContent"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="stateContentAsString" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="stateContentAsString" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="State content in string format."/>

       </eAnnotations>

@@ -529,8 +617,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="stateContentAsBlob" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Base64Binary">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="stateContentAsBlob" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Base64Binary">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="State content in binary format."/>

       </eAnnotations>

@@ -557,8 +644,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="editable" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="editable" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

         defaultValueLiteral="true" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Specifies whether the design session is requested to be in an &quot;editable&quot; or &quot;read-only&quot; mode.  For a read-only design session, the ODA host designer would ignore any changes found in the session response.  It is up to individual ODA designer to honor the requested mode and adjusts its UI behavior."/>

@@ -600,8 +686,8 @@
       <details key="name" value="DesignSessionResponse"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sessionStatus" unique="false"

-        lowerBound="1" eType="#//SessionStatus" defaultValueLiteral="Ok" unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sessionStatus" eType="#//SessionStatus"

+        defaultValueLiteral="Ok" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="ODA design session exit status.  This tells the ODA host designer whether the design session was successful, and how it may consume and save the session response information."/>

       </eAnnotations>

@@ -646,16 +732,16 @@
         <details key="name" value=":mixed"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" unique="false"

-        upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"

+    <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" upperBound="-1"

+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"

         transient="true" containment="true" resolveProxies="false">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="attribute"/>

         <details key="name" value="xmlns:prefix"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" unique="false"

-        upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"

+    <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" upperBound="-1"

+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"

         transient="true" containment="true" resolveProxies="false">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="attribute"/>

@@ -675,6 +761,23 @@
       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="DynamicExpression" eSuperTypes="#//FilterExpression">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="A built-in filter expression designed with a pre-defined variable.  Its specific type of expression(s) to apply and corresponding argument value(s) to collect will be dynamically specified at runtime."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="DynamicExpression"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="contextVariable" lowerBound="1"

+        eType="#//FilterExpressionVariable" containment="true" resolveProxies="false">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="contextVariable"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="DynamicValuesQuery">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

       <details key="documentation" value="A dynamic set of selectable input values to be retrieved at runtime using the query defined in a data set design."/>

@@ -694,8 +797,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="enabled" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="enabled" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

         defaultValueLiteral="true" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="If not enabled, use staticValueChoices if defined."/>

@@ -706,8 +808,8 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="valueColumn" unique="false"

-        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="valueColumn" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The result set column name whose values are retrieved as the value choices.  This attribute must be one of the column names defined in the data set design's primary result set."/>

       </eAnnotations>

@@ -717,8 +819,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayNameColumn" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayNameColumn" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The result set column name whose values are the localized name that describes the corresponding value in the valueColumn on each data row."/>

       </eAnnotations>

@@ -740,12 +841,151 @@
     <eLiterals name="Nullable" value="1"/>

     <eLiterals name="NotNullable" value="2"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EDataType" name="ElementNullabilityObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">

+  <eClassifiers xsi:type="ecore:EDataType" name="ElementNullabilityObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="ElementNullability:Object"/>

       <details key="baseType" value="ElementNullability"/>

     </eAnnotations>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FilterExpression" abstract="true">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="Abstract base class for all filter expressions defined by an ODA designer."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="FilterExpression"/>

+      <details key="kind" value="empty"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="negatable" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

+        defaultValueLiteral="false" unsettable="true">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="Indicates whether the expression can be negated, i.e. applied with a NotExpression.  Default is false."/>

+      </eAnnotations>

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="attribute"/>

+        <details key="name" value="negatable"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FilterExpressionArguments">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="Definition of a filter expression's argument(s)."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="FilterExpressionArguments"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="filterParameters" lowerBound="1"

+        eType="#//FilterParameters" containment="true" resolveProxies="false">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="A collection of parameters used for collecting a filter expression's argument values.  Each parameter may define either a static value, or an input parameter to dynamically collect user input value.  An input parameter definiiton may be a nested new instance, or may reference one of the existing DataSetParameters."/>

+      </eAnnotations>

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="filterParameters"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FilterExpressionVariable">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="Definition of a filter expression's variable."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="FilterExpressionVariable"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//FilterVariableType"

+        defaultValueLiteral="ResultSetColumn" unsettable="true">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="The type of variable."/>

+      </eAnnotations>

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="type"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="identifier" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="A name or expression that identifies the variable used to evaluate a filter expression."/>

+      </eAnnotations>

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="identifier"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nativeDataTypeCode" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"

+        unsettable="true">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="Native data type code of the identified variable.  If none or unknown value (0) is specified, the data element is mapped to an ODA String data type by default.  The native type code value is implementation-specific to individual ODA driver, which must support its mapping to one or more ODA data types.  The supported native-ODA data type mapping must be defined in the ODA dataSource extension."/>

+      </eAnnotations>

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="nativeDataTypeCode"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FilterParameterDefinition">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="The definition of a parameter for the value of a filter expression's argument.  A filter parameter design may define either a static value, or an input parameter to dynamically collect user input value.  An input parameter definiiton may be a nested new instance, or may reference one of the existing DataSetParameters."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="FilterParameterDefinition"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="staticValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//AnySimpleType">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="staticValue"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="dynamicInputParameter"

+        eType="#//ParameterDefinition" containment="true" resolveProxies="false">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="dynamicInputParameter"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FilterParameters">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="A collection of parameters used for collecting a filter expression's argument values."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="FilterParameters"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="parameterDefinitions" lowerBound="1"

+        upperBound="-1" eType="#//FilterParameterDefinition" containment="true" resolveProxies="false">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="parameterDefinitions"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="FilterVariableType">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="The type of a filter expression variable."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="FilterVariableType"/>

+    </eAnnotations>

+    <eLiterals name="ResultSetColumn"/>

+    <eLiterals name="InstanceOf" value="1"/>

+    <eLiterals name="QueryExpression" value="2"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EDataType" name="FilterVariableTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="FilterVariableType:Object"/>

+      <details key="baseType" value="FilterVariableType"/>

+    </eAnnotations>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EEnum" name="HorizontalAlignment">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

       <details key="documentation" value="Horizontal display alignment of the data value."/>

@@ -758,7 +998,7 @@
     <eLiterals name="Center" value="2"/>

     <eLiterals name="Right" value="3"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EDataType" name="HorizontalAlignmentObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">

+  <eClassifiers xsi:type="ecore:EDataType" name="HorizontalAlignmentObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="HorizontalAlignment:Object"/>

       <details key="baseType" value="HorizontalAlignment"/>

@@ -772,8 +1012,7 @@
       <details key="name" value="InputElementAttributes"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultScalarValue" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultScalarValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The literal string value to be used as the data element's default input value. Only applies to a scalar input data element."/>

       </eAnnotations>

@@ -783,8 +1022,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="editable" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="editable" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

         defaultValueLiteral="true" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Indicates whether this element value is editable or read-only in the host designer.  A host designer can further design whether to hide this attribute.  Applicable only if its container is visible, e.g. for public properties and input parameters."/>

@@ -795,8 +1033,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

         defaultValueLiteral="false" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Indicates whether the element requires an input value."/>

@@ -807,8 +1044,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="masksValue" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="masksValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

         defaultValueLiteral="false" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Indicates whether input value should be masked or encrypted in persistent store and any UI display.  Applies to default value as well."/>

@@ -852,8 +1088,8 @@
       <details key="name" value="InputElementUIHints"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="promptStyle" unique="false"

-        eType="#//InputPromptControlStyle" defaultValueLiteral="" unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="promptStyle" eType="#//InputPromptControlStyle"

+        unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Defaults to TextField if no static and dynamic value choices are defined; otherwise, defaults to SelectableList."/>

       </eAnnotations>

@@ -863,6 +1099,17 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="autoSuggestThreshold" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"

+        defaultValueLiteral="1" unsettable="true">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="documentation" value="The number of characters after which auto suggest will kick in.  It is applicable only where an user can input a value, e.g. when a SelectableListWithTextField promptStyle and a DynamicValuesQuery is used.&#xD;&#xA;"/>

+      </eAnnotations>

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="autoSuggestThreshold"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="InputParameterAttributes">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

@@ -898,7 +1145,7 @@
       <details key="kind" value="elementOnly"/>

     </eAnnotations>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="groupPromptDisplayName"

-        unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="For grouping multiple top-level input parameters under the same UI group prompt."/>

       </eAnnotations>

@@ -922,7 +1169,7 @@
     <eLiterals name="CheckBox" value="3"/>

     <eLiterals name="RadioButton" value="4"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EDataType" name="InputPromptControlStyleObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">

+  <eClassifiers xsi:type="ecore:EDataType" name="InputPromptControlStyleObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="InputPromptControlStyle:Object"/>

       <details key="baseType" value="InputPromptControlStyle"/>

@@ -936,8 +1183,7 @@
       <details key="name" value="Locale"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" unique="false"

-        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"

         defaultValueLiteral="en" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="An ISO Language Code; lower-case, two-letter codes as defined by ISO-639."/>

@@ -948,8 +1194,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="country" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="country" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="An ISO Country Code; upper-case, two-letter codes as defined by ISO-3166."/>

       </eAnnotations>

@@ -959,8 +1204,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="variant" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="variant" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="A vendor or browser-specific code."/>

       </eAnnotations>

@@ -979,15 +1223,14 @@
       <details key="name" value="NameValuePair"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="element"/>

         <details key="name" value="name"/>

         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="element"/>

         <details key="name" value="value"/>

@@ -995,6 +1238,23 @@
       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="NotExpression" eSuperTypes="#//FilterExpression">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="A built-in negated filter expression."/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="NotExpression"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="negatingExpression" lowerBound="1"

+        eType="#//FilterExpression" containment="true" resolveProxies="false">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="negatingExpression"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EEnum" name="OdaComplexDataType">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

       <details key="documentation" value="ODA complex data types."/>

@@ -1005,7 +1265,7 @@
     <eLiterals name="Structure"/>

     <eLiterals name="Table" value="1"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EDataType" name="OdaComplexDataTypeObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">

+  <eClassifiers xsi:type="ecore:EDataType" name="OdaComplexDataTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="OdaComplexDataType:Object"/>

       <details key="baseType" value="OdaComplexDataType"/>

@@ -1054,12 +1314,21 @@
     <eLiterals name="Clob" value="8"/>

     <eLiterals name="Boolean" value="9"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EDataType" name="OdaScalarDataTypeObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">

+  <eClassifiers xsi:type="ecore:EDataType" name="OdaScalarDataTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="OdaScalarDataType:Object"/>

       <details key="baseType" value="OdaScalarDataType"/>

     </eAnnotations>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="OrExpression" eSuperTypes="#//CompositeFilterExpression">

+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+      <details key="documentation" value="A built-in composite filter expression whose child expressions are combined by the Or boolean operator.  The composite expression is evaluated to be true if any of its child expressions is evaluated as true.  "/>

+    </eAnnotations>

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="OrExpression"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="OutputElementAttributes">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

       <details key="documentation" value="Common attributes for a data element defined with the output mode."/>

@@ -1068,7 +1337,7 @@
       <details key="name" value="OutputElementAttributes"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="A free-format string used to identify the data element in a heading, such as a column header."/>

       </eAnnotations>

@@ -1086,8 +1355,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="helpText" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="helpText" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Provides additional information to the user about this data element, such as in a balloon help."/>

       </eAnnotations>

@@ -1100,14 +1368,14 @@
   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="ParameterDefinition">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-      <details key="documentation" value="Top-level parameter definition.  Parameter could be scalar or complex type."/>

+      <details key="documentation" value="Top-level parameter definition; may be input and/or output mode.  Parameter may be of scalar or complex type."/>

     </eAnnotations>

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="ParameterDefinition"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="inOutMode" unique="false"

-        lowerBound="1" eType="#//ParameterMode" defaultValueLiteral="In" unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="inOutMode" eType="#//ParameterMode"

+        defaultValueLiteral="In" unsettable="true">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="element"/>

         <details key="name" value="inOutMode"/>

@@ -1213,7 +1481,7 @@
         upperBound="-1" eType="#//ParameterFieldDefinition" containment="true" resolveProxies="false">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="element"/>

-        <details key="name" value="fields"/>

+        <details key="name" value="fieldCollection"/>

         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

@@ -1229,7 +1497,7 @@
     <eLiterals name="Out" value="1"/>

     <eLiterals name="InOut" value="2"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EDataType" name="ParameterModeObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">

+  <eClassifiers xsi:type="ecore:EDataType" name="ParameterModeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="ParameterMode:Object"/>

       <details key="baseType" value="ParameterMode"/>

@@ -1291,8 +1559,7 @@
       <details key="name" value="PropertyAttributes"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="element"/>

         <details key="name" value="displayName"/>

@@ -1307,8 +1574,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="derivedMetaData" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="derivedMetaData" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

         defaultValueLiteral="true" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="If the property metadata can be derived, i.e. can be obtained by an ODA driver in each design session, an ODA host designer is not required to include the derived metadata in the next design session request.  An ODA designer may ignore such metadata in a Request."/>

@@ -1329,7 +1595,7 @@
       <details key="kind" value="elementOnly"/>

     </eAnnotations>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="applResourceBaseURIString"

-        unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The base URI of general purpose resources of an ODA consumer application in string form."/>

       </eAnnotations>

@@ -1340,7 +1606,7 @@
       </eAnnotations>

     </eStructuralFeatures>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="designResourceBaseURIString"

-        unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The base URI of design resources of an ODA consumer application in string form."/>

       </eAnnotations>

@@ -1377,7 +1643,7 @@
       <details key="name" value="ResultSetDefinition"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="A name that uniquely identifies a result set at runtime.  If not specified, a result set is identified by its sequence in the resultSetDefinitions."/>

       </eAnnotations>

@@ -1415,8 +1681,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="derivedMetaData" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="derivedMetaData" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"

         defaultValueLiteral="true" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="If the metadata can be derived, i.e. can be obtained by an ODA driver in each design session, an ODA host designer is not required to include the derived metadata in the next design session request.  An ODA designer may ignore such metadata in a Request."/>

@@ -1452,16 +1717,14 @@
       <details key="name" value="ScalarValueDefinition"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" unique="false" lowerBound="1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

         <details key="kind" value="element"/>

         <details key="name" value="value"/>

         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="A localized name that describes the value."/>

       </eAnnotations>

@@ -1484,7 +1747,7 @@
     <eLiterals name="LoginFailed" value="2"/>

     <eLiterals name="Error" value="3"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EDataType" name="SessionStatusObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">

+  <eClassifiers xsi:type="ecore:EDataType" name="SessionStatusObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="SessionStatus:Object"/>

       <details key="baseType" value="SessionStatus"/>

@@ -1501,7 +1764,7 @@
     <eLiterals name="HTML" value="1"/>

     <eLiterals name="RTF" value="2"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EDataType" name="TextFormatTypeObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">

+  <eClassifiers xsi:type="ecore:EDataType" name="TextFormatTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="TextFormatType:Object"/>

       <details key="baseType" value="TextFormatType"/>

@@ -1517,7 +1780,7 @@
     <eLiterals name="None"/>

     <eLiterals name="Word" value="1"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EDataType" name="TextWrapTypeObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">

+  <eClassifiers xsi:type="ecore:EDataType" name="TextWrapTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="TextWrapType:Object"/>

       <details key="baseType" value="TextWrapType"/>

@@ -1531,9 +1794,8 @@
       <details key="name" value="ValueFormatHints"/>

       <details key="kind" value="elementOnly"/>

     </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displaySize" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int" defaultValueLiteral="-1"

-        unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displaySize" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"

+        defaultValueLiteral="-1" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Default display length of the data value.  A value of -1 means unknown length.  The default value, if not specified, is -1."/>

       </eAnnotations>

@@ -1543,8 +1805,7 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayFormat" unique="false"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayFormat" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The preferred display format of the data value.  It contains a data format mask, e.g. #,###.00, ShortDate, etc."/>

       </eAnnotations>

@@ -1554,8 +1815,8 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="textFormatType" unique="false"

-        eType="#//TextFormatType" defaultValueLiteral="Plain" unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="textFormatType" eType="#//TextFormatType"

+        defaultValueLiteral="Plain" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="The type of text content of the data value, i.e. plain text, HTML or RTF.  It provides a hint on the type of text control to use for displaying the data value, e.g. a Dynamic Text Control."/>

       </eAnnotations>

@@ -1565,8 +1826,8 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="horizontalAlignment" unique="false"

-        eType="#//HorizontalAlignment" defaultValueLiteral="Automatic" unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="horizontalAlignment" eType="#//HorizontalAlignment"

+        defaultValueLiteral="Automatic" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="Horizontal display alignment of the data value.  See valid enum values.  &quot;Automatic&quot; means that it is up to an ODA host designer to determine the alignment based on its default rules."/>

       </eAnnotations>

@@ -1576,8 +1837,8 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="textWrapType" unique="false"

-        eType="#//TextWrapType" defaultValueLiteral="None" unsettable="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="textWrapType" eType="#//TextWrapType"

+        defaultValueLiteral="None" unsettable="true">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

         <details key="documentation" value="A hint on the type of text wrapping on the data value.  It could be in a single line (None), or word-wrapped (Word)."/>

       </eAnnotations>

diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/AndExpression.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/AndExpression.java
new file mode 100644
index 0000000..51a1bbc
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/AndExpression.java
@@ -0,0 +1,45 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>.
+ * </p>
+ * A representation of the model object '<em><b>And Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A built-in composite filter expression whose child expressions are combined by the And boolean operator.  The composite expression is evaluated to be true only if all its child expressions are evaluated as true.  
+ * <!-- end-model-doc -->
+ *
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getAndExpression()
+ * @since 3.2 (DTP 1.7)
+ * @model extendedMetaData="name='AndExpression' kind='elementOnly'"
+ * @generated
+ */
+public interface AndExpression extends CompositeFilterExpression
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+} // AndExpression
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/AtomicExpressionContext.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/AtomicExpressionContext.java
new file mode 100644
index 0000000..94c3428
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/AtomicExpressionContext.java
@@ -0,0 +1,107 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>.
+ * </p>
+ * A representation of the model object '<em><b>Atomic Expression Context</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * The context within a basic, indivisible unit of filter expression that can be evaluated by itself.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext#getVariable <em>Variable</em>}</li>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext#getArguments <em>Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getAtomicExpressionContext()
+ * @since 3.2 (DTP 1.7)
+ * @model extendedMetaData="name='AtomicExpressionContext' kind='elementOnly'"
+ * @generated
+ */
+public interface AtomicExpressionContext extends EObject
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * Returns the value of the '<em><b>Variable</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Variable</em>' containment reference isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Variable</em>' containment reference.
+     * @see #setVariable(FilterExpressionVariable)
+     * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getAtomicExpressionContext_Variable()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='variable' namespace='##targetNamespace'"
+     * @generated
+     */
+    FilterExpressionVariable getVariable();
+
+    /**
+     * Sets the value of the '{@link org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext#getVariable <em>Variable</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Variable</em>' containment reference.
+     * @see #getVariable()
+     * @generated
+     */
+    void setVariable( FilterExpressionVariable value );
+
+    /**
+     * Returns the value of the '<em><b>Arguments</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Defines the expression's argument(s) and each of its associated value.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Arguments</em>' containment reference.
+     * @see #setArguments(FilterExpressionArguments)
+     * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getAtomicExpressionContext_Arguments()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='arguments' namespace='##targetNamespace'"
+     * @generated
+     */
+    FilterExpressionArguments getArguments();
+
+    /**
+     * Sets the value of the '{@link org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext#getArguments <em>Arguments</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Arguments</em>' containment reference.
+     * @see #getArguments()
+     * @generated
+     */
+    void setArguments( FilterExpressionArguments value );
+
+} // AtomicExpressionContext
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/CompositeFilterExpression.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/CompositeFilterExpression.java
new file mode 100644
index 0000000..3fa0b7e
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/CompositeFilterExpression.java
@@ -0,0 +1,77 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>.
+ * </p>
+ * A representation of the model object '<em><b>Composite Filter Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A composite of one or multiple child filter expressions.  Its child expressions are ordered, but their relationships are not defined.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.CompositeFilterExpression#getChildren <em>Children</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getCompositeFilterExpression()
+ * @since 3.2 (DTP 1.7)
+ * @model extendedMetaData="name='CompositeFilterExpression' kind='elementOnly'"
+ * @generated
+ */
+public interface CompositeFilterExpression extends FilterExpression
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * Returns the value of the '<em><b>Children</b></em>' containment reference list.
+     * The list contents are of type {@link org.eclipse.datatools.connectivity.oda.design.FilterExpression}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Children</em>' containment reference list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Children</em>' containment reference list.
+     * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getCompositeFilterExpression_Children()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='children' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList<FilterExpression> getChildren();
+
+    /**
+     * Appends the specified FilterExpression to its '<em><b>Children</b></em>' containment reference list.
+     * @param childExpr a child filter expression
+     * @generated NOT
+     */
+    void add( FilterExpression childExpr );
+    
+} // CompositeFilterExpression
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DataSetDesign.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DataSetDesign.java
index 9d88ba0..070f5ed 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DataSetDesign.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DataSetDesign.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2007 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,7 +11,7 @@
  *  
  *************************************************************************
  *
- * $Id: DataSetDesign.java,v 1.4 2006/03/09 05:09:18 lchan Exp $
+ * $Id: DataSetDesign.java,v 1.5 2007/04/11 02:59:53 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design;
 
@@ -38,6 +38,7 @@
  *   <li>{@link org.eclipse.datatools.connectivity.oda.design.DataSetDesign#getResultSets <em>Result Sets</em>}</li>
  *   <li>{@link org.eclipse.datatools.connectivity.oda.design.DataSetDesign#getPrimaryResultSetName <em>Primary Result Set Name</em>}</li>
  *   <li>{@link org.eclipse.datatools.connectivity.oda.design.DataSetDesign#getParameters <em>Parameters</em>}</li>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.DataSetDesign#getFilter <em>Filter</em>}</li>
  * </ul>
  * </p>
  *
@@ -52,7 +53,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    String copyright = "Copyright (c) 2005, 2007 Actuate Corporation"; //$NON-NLS-1$
+    String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
 
     /**
      * Returns the ODA data source element ID of the
@@ -74,7 +75,7 @@
      * @return the value of the '<em>Name</em>' attribute.
      * @see #setName(String)
      * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getDataSetDesign_Name()
-     * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+     * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
      *        extendedMetaData="kind='element' name='name' namespace='##targetNamespace'"
      * @generated
      */
@@ -100,7 +101,7 @@
      * @return the value of the '<em>Oda Extension Data Set Id</em>' attribute.
      * @see #setOdaExtensionDataSetId(String)
      * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getDataSetDesign_OdaExtensionDataSetId()
-     * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+     * @model dataType="org.eclipse.emf.ecore.xml.type.String"
      *        extendedMetaData="kind='element' name='odaExtensionDataSetId' namespace='##targetNamespace'"
      * @generated
      */
@@ -194,7 +195,7 @@
      * @return the value of the '<em>Display Name</em>' attribute.
      * @see #setDisplayName(String)
      * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getDataSetDesign_DisplayName()
-     * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+     * @model dataType="org.eclipse.emf.ecore.xml.type.String"
      *        extendedMetaData="kind='element' name='displayName' namespace='##targetNamespace'"
      * @generated
      */
@@ -316,7 +317,7 @@
      * @return the value of the '<em>Primary Result Set Name</em>' attribute.
      * @see #setPrimaryResultSetName(String)
      * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getDataSetDesign_PrimaryResultSetName()
-     * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+     * @model dataType="org.eclipse.emf.ecore.xml.type.String"
      *        extendedMetaData="kind='element' name='primaryResultSetName' namespace='##targetNamespace'"
      * @generated
      */
@@ -355,4 +356,34 @@
      */
     void setParameters( DataSetParameters value );
 
+    /**
+     * <strong>EXPERIMENTAL</strong>.
+     * Returns the value of the '<em><b>Filter</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Pre-defined filter specification  of the data set.  It may be any extended concrete type of FilterExpression.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Filter</em>' containment reference.
+     * @see #setFilter(FilterExpression)
+     * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getDataSetDesign_Filter()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='filter' namespace='##targetNamespace'"
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    FilterExpression getFilter();
+
+    /**
+     * <strong>EXPERIMENTAL</strong>.
+     * Sets the value of the '{@link org.eclipse.datatools.connectivity.oda.design.DataSetDesign#getFilter <em>Filter</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Filter</em>' containment reference.
+     * @see #getFilter()
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    void setFilter( FilterExpression value );
+
 } // DataSetDesign
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DesignFactory.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DesignFactory.java
index 700f22e..982a200 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DesignFactory.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DesignFactory.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2008 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,7 +11,7 @@
  *  
  *************************************************************************
  *
- * $Id: DesignFactory.java,v 1.6 2007/04/11 02:59:53 lchan Exp $
+ * $Id: DesignFactory.java,v 1.7 2008/07/23 04:12:27 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design;
 
@@ -32,7 +32,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    String copyright = "Copyright (c) 2005, 2008 Actuate Corporation"; //$NON-NLS-1$
+    String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
 
     /**
      * The singleton instance of the factory.
@@ -44,6 +44,24 @@
             .init();
 
     /**
+     * Returns a new object of class '<em>And Expression</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>And Expression</em>'.
+     * @generated
+     */
+    AndExpression createAndExpression();
+
+    /**
+     * Returns a new object of class '<em>Atomic Expression Context</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Atomic Expression Context</em>'.
+     * @generated
+     */
+    AtomicExpressionContext createAtomicExpressionContext();
+
+    /**
      * Returns a new object of class '<em>Axis Attributes</em>'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -62,6 +80,24 @@
     ColumnDefinition createColumnDefinition();
 
     /**
+     * Returns a new object of class '<em>Composite Filter Expression</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Composite Filter Expression</em>'.
+     * @generated
+     */
+    CompositeFilterExpression createCompositeFilterExpression();
+
+    /**
+     * Returns a new object of class '<em>Custom Expression</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Custom Expression</em>'.
+     * @generated
+     */
+    CustomExpression createCustomExpression();
+
+    /**
      * Returns a new object of class '<em>Data Access Design</em>'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -170,6 +206,15 @@
     DocumentRoot createDocumentRoot();
 
     /**
+     * Returns a new object of class '<em>Dynamic Expression</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Dynamic Expression</em>'.
+     * @generated
+     */
+    DynamicExpression createDynamicExpression();
+
+    /**
      * Returns a new object of class '<em>Dynamic Values Query</em>'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -179,6 +224,42 @@
     DynamicValuesQuery createDynamicValuesQuery();
 
     /**
+     * Returns a new object of class '<em>Filter Expression Arguments</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Filter Expression Arguments</em>'.
+     * @generated
+     */
+    FilterExpressionArguments createFilterExpressionArguments();
+
+    /**
+     * Returns a new object of class '<em>Filter Expression Variable</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Filter Expression Variable</em>'.
+     * @generated
+     */
+    FilterExpressionVariable createFilterExpressionVariable();
+
+    /**
+     * Returns a new object of class '<em>Filter Parameter Definition</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Filter Parameter Definition</em>'.
+     * @generated
+     */
+    FilterParameterDefinition createFilterParameterDefinition();
+
+    /**
+     * Returns a new object of class '<em>Filter Parameters</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Filter Parameters</em>'.
+     * @generated
+     */
+    FilterParameters createFilterParameters();
+
+    /**
      * Returns a new object of class '<em>Input Element Attributes</em>'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -233,6 +314,15 @@
     NameValuePair createNameValuePair();
 
     /**
+     * Returns a new object of class '<em>Not Expression</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Not Expression</em>'.
+     * @generated
+     */
+    NotExpression createNotExpression();
+
+    /**
      * Returns a new object of class '<em>Oda Design Session</em>'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -242,6 +332,15 @@
     OdaDesignSession createOdaDesignSession();
 
     /**
+     * Returns a new object of class '<em>Or Expression</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Or Expression</em>'.
+     * @generated
+     */
+    OrExpression createOrExpression();
+
+    /**
      * Returns a new object of class '<em>Output Element Attributes</em>'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DesignPackage.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DesignPackage.java
index 85cd015..7577045 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DesignPackage.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/DesignPackage.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2008 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,7 +11,7 @@
  *  
  *************************************************************************
  *
- * $Id: DesignPackage.java,v 1.4 2007/04/11 02:59:53 lchan Exp $
+ * $Id: DesignPackage.java,v 1.5 2008/07/23 04:12:27 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design;
 
@@ -44,7 +44,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    String copyright = "Copyright (c) 2005, 2008 Actuate Corporation"; //$NON-NLS-1$
+    String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
 
     /**
      * The package name.
@@ -80,6 +80,145 @@
             .init();
 
     /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionImpl <em>Filter Expression</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterExpression()
+     * @generated
+     */
+    int FILTER_EXPRESSION = 20;
+
+    /**
+     * The feature id for the '<em><b>Negatable</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_EXPRESSION__NEGATABLE = 0;
+
+    /**
+     * The number of structural features of the '<em>Filter Expression</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_EXPRESSION_FEATURE_COUNT = 1;
+
+    /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.CompositeFilterExpressionImpl <em>Composite Filter Expression</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.CompositeFilterExpressionImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getCompositeFilterExpression()
+     * @generated
+     */
+    int COMPOSITE_FILTER_EXPRESSION = 4;
+
+    /**
+     * The feature id for the '<em><b>Negatable</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int COMPOSITE_FILTER_EXPRESSION__NEGATABLE = FILTER_EXPRESSION__NEGATABLE;
+
+    /**
+     * The feature id for the '<em><b>Children</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int COMPOSITE_FILTER_EXPRESSION__CHILDREN = FILTER_EXPRESSION_FEATURE_COUNT + 0;
+
+    /**
+     * The number of structural features of the '<em>Composite Filter Expression</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int COMPOSITE_FILTER_EXPRESSION_FEATURE_COUNT = FILTER_EXPRESSION_FEATURE_COUNT + 1;
+
+    /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.AndExpressionImpl <em>And Expression</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.AndExpressionImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getAndExpression()
+     * @generated
+     */
+    int AND_EXPRESSION = 0;
+
+    /**
+     * The feature id for the '<em><b>Negatable</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AND_EXPRESSION__NEGATABLE = COMPOSITE_FILTER_EXPRESSION__NEGATABLE;
+
+    /**
+     * The feature id for the '<em><b>Children</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AND_EXPRESSION__CHILDREN = COMPOSITE_FILTER_EXPRESSION__CHILDREN;
+
+    /**
+     * The number of structural features of the '<em>And Expression</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AND_EXPRESSION_FEATURE_COUNT = COMPOSITE_FILTER_EXPRESSION_FEATURE_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.AtomicExpressionContextImpl <em>Atomic Expression Context</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.AtomicExpressionContextImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getAtomicExpressionContext()
+     * @generated
+     */
+    int ATOMIC_EXPRESSION_CONTEXT = 1;
+
+    /**
+     * The feature id for the '<em><b>Variable</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ATOMIC_EXPRESSION_CONTEXT__VARIABLE = 0;
+
+    /**
+     * The feature id for the '<em><b>Arguments</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS = 1;
+
+    /**
+     * The number of structural features of the '<em>Atomic Expression Context</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ATOMIC_EXPRESSION_CONTEXT_FEATURE_COUNT = 2;
+
+    /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.AxisAttributesImpl <em>Axis Attributes</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -87,7 +226,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getAxisAttributes()
      * @generated
      */
-    int AXIS_ATTRIBUTES = 0;
+    int AXIS_ATTRIBUTES = 2;
 
     /**
      * The feature id for the '<em><b>Axis Type</b></em>' attribute.
@@ -124,7 +263,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getColumnDefinition()
      * @generated
      */
-    int COLUMN_DEFINITION = 1;
+    int COLUMN_DEFINITION = 3;
 
     /**
      * The feature id for the '<em><b>Attributes</b></em>' containment reference.
@@ -163,6 +302,61 @@
     int COLUMN_DEFINITION_FEATURE_COUNT = 3;
 
     /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.CustomExpressionImpl <em>Custom Expression</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.CustomExpressionImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getCustomExpression()
+     * @generated
+     */
+    int CUSTOM_EXPRESSION = 5;
+
+    /**
+     * The feature id for the '<em><b>Negatable</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int CUSTOM_EXPRESSION__NEGATABLE = FILTER_EXPRESSION__NEGATABLE;
+
+    /**
+     * The feature id for the '<em><b>Declaring Extension Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int CUSTOM_EXPRESSION__DECLARING_EXTENSION_ID = FILTER_EXPRESSION_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int CUSTOM_EXPRESSION__ID = FILTER_EXPRESSION_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Context</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int CUSTOM_EXPRESSION__CONTEXT = FILTER_EXPRESSION_FEATURE_COUNT + 2;
+
+    /**
+     * The number of structural features of the '<em>Custom Expression</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int CUSTOM_EXPRESSION_FEATURE_COUNT = FILTER_EXPRESSION_FEATURE_COUNT + 3;
+
+    /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.DataAccessDesignImpl <em>Data Access Design</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -170,7 +364,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDataAccessDesign()
      * @generated
      */
-    int DATA_ACCESS_DESIGN = 2;
+    int DATA_ACCESS_DESIGN = 6;
 
     /**
      * The feature id for the '<em><b>Data Set Design</b></em>' containment reference.
@@ -198,7 +392,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDataElementAttributes()
      * @generated
      */
-    int DATA_ELEMENT_ATTRIBUTES = 3;
+    int DATA_ELEMENT_ATTRIBUTES = 7;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -280,7 +474,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDataElementUIHints()
      * @generated
      */
-    int DATA_ELEMENT_UI_HINTS = 4;
+    int DATA_ELEMENT_UI_HINTS = 8;
 
     /**
      * The feature id for the '<em><b>Display Name</b></em>' attribute.
@@ -317,7 +511,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDataSetDesign()
      * @generated
      */
-    int DATA_SET_DESIGN = 5;
+    int DATA_SET_DESIGN = 9;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -410,13 +604,22 @@
     int DATA_SET_DESIGN__PARAMETERS = 9;
 
     /**
+     * The feature id for the '<em><b>Filter</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DATA_SET_DESIGN__FILTER = 10;
+
+    /**
      * The number of structural features of the '<em>Data Set Design</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_SET_DESIGN_FEATURE_COUNT = 10;
+    int DATA_SET_DESIGN_FEATURE_COUNT = 11;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.DataSetParametersImpl <em>Data Set Parameters</em>}' class.
@@ -426,7 +629,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDataSetParameters()
      * @generated
      */
-    int DATA_SET_PARAMETERS = 6;
+    int DATA_SET_PARAMETERS = 10;
 
     /**
      * The feature id for the '<em><b>Parameter Definitions</b></em>' containment reference list.
@@ -463,7 +666,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDataSetQuery()
      * @generated
      */
-    int DATA_SET_QUERY = 7;
+    int DATA_SET_QUERY = 11;
 
     /**
      * The feature id for the '<em><b>Query Text</b></em>' attribute.
@@ -491,7 +694,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDataSourceDesign()
      * @generated
      */
-    int DATA_SOURCE_DESIGN = 8;
+    int DATA_SOURCE_DESIGN = 12;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -591,7 +794,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDesignerState()
      * @generated
      */
-    int DESIGNER_STATE = 9;
+    int DESIGNER_STATE = 13;
 
     /**
      * The feature id for the '<em><b>Version</b></em>' attribute.
@@ -628,7 +831,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDesignerStateContent()
      * @generated
      */
-    int DESIGNER_STATE_CONTENT = 10;
+    int DESIGNER_STATE_CONTENT = 14;
 
     /**
      * The feature id for the '<em><b>State Content As String</b></em>' attribute.
@@ -665,7 +868,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDesignSessionRequest()
      * @generated
      */
-    int DESIGN_SESSION_REQUEST = 11;
+    int DESIGN_SESSION_REQUEST = 15;
 
     /**
      * The feature id for the '<em><b>Data Access Design</b></em>' containment reference.
@@ -720,7 +923,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDesignSessionResponse()
      * @generated
      */
-    int DESIGN_SESSION_RESPONSE = 12;
+    int DESIGN_SESSION_RESPONSE = 16;
 
     /**
      * The feature id for the '<em><b>Session Status</b></em>' attribute.
@@ -766,7 +969,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDocumentRoot()
      * @generated
      */
-    int DOCUMENT_ROOT = 13;
+    int DOCUMENT_ROOT = 17;
 
     /**
      * The feature id for the '<em><b>Mixed</b></em>' attribute list.
@@ -814,6 +1017,43 @@
     int DOCUMENT_ROOT_FEATURE_COUNT = 4;
 
     /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.DynamicExpressionImpl <em>Dynamic Expression</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DynamicExpressionImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDynamicExpression()
+     * @generated
+     */
+    int DYNAMIC_EXPRESSION = 18;
+
+    /**
+     * The feature id for the '<em><b>Negatable</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DYNAMIC_EXPRESSION__NEGATABLE = FILTER_EXPRESSION__NEGATABLE;
+
+    /**
+     * The feature id for the '<em><b>Context Variable</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DYNAMIC_EXPRESSION__CONTEXT_VARIABLE = FILTER_EXPRESSION_FEATURE_COUNT + 0;
+
+    /**
+     * The number of structural features of the '<em>Dynamic Expression</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DYNAMIC_EXPRESSION_FEATURE_COUNT = FILTER_EXPRESSION_FEATURE_COUNT + 1;
+
+    /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.DynamicValuesQueryImpl <em>Dynamic Values Query</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -821,7 +1061,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDynamicValuesQuery()
      * @generated
      */
-    int DYNAMIC_VALUES_QUERY = 14;
+    int DYNAMIC_VALUES_QUERY = 19;
 
     /**
      * The feature id for the '<em><b>Data Set Design</b></em>' containment reference.
@@ -869,6 +1109,145 @@
     int DYNAMIC_VALUES_QUERY_FEATURE_COUNT = 4;
 
     /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionArgumentsImpl <em>Filter Expression Arguments</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionArgumentsImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterExpressionArguments()
+     * @generated
+     */
+    int FILTER_EXPRESSION_ARGUMENTS = 21;
+
+    /**
+     * The feature id for the '<em><b>Filter Parameters</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_EXPRESSION_ARGUMENTS__FILTER_PARAMETERS = 0;
+
+    /**
+     * The number of structural features of the '<em>Filter Expression Arguments</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_EXPRESSION_ARGUMENTS_FEATURE_COUNT = 1;
+
+    /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionVariableImpl <em>Filter Expression Variable</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionVariableImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterExpressionVariable()
+     * @generated
+     */
+    int FILTER_EXPRESSION_VARIABLE = 22;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_EXPRESSION_VARIABLE__TYPE = 0;
+
+    /**
+     * The feature id for the '<em><b>Identifier</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_EXPRESSION_VARIABLE__IDENTIFIER = 1;
+
+    /**
+     * The feature id for the '<em><b>Native Data Type Code</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_EXPRESSION_VARIABLE__NATIVE_DATA_TYPE_CODE = 2;
+
+    /**
+     * The number of structural features of the '<em>Filter Expression Variable</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_EXPRESSION_VARIABLE_FEATURE_COUNT = 3;
+
+    /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterParameterDefinitionImpl <em>Filter Parameter Definition</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterParameterDefinitionImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterParameterDefinition()
+     * @generated
+     */
+    int FILTER_PARAMETER_DEFINITION = 23;
+
+    /**
+     * The feature id for the '<em><b>Static Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_PARAMETER_DEFINITION__STATIC_VALUE = 0;
+
+    /**
+     * The feature id for the '<em><b>Dynamic Input Parameter</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_PARAMETER_DEFINITION__DYNAMIC_INPUT_PARAMETER = 1;
+
+    /**
+     * The number of structural features of the '<em>Filter Parameter Definition</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_PARAMETER_DEFINITION_FEATURE_COUNT = 2;
+
+    /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterParametersImpl <em>Filter Parameters</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterParametersImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterParameters()
+     * @generated
+     */
+    int FILTER_PARAMETERS = 24;
+
+    /**
+     * The feature id for the '<em><b>Parameter Definitions</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_PARAMETERS__PARAMETER_DEFINITIONS = 0;
+
+    /**
+     * The number of structural features of the '<em>Filter Parameters</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FILTER_PARAMETERS_FEATURE_COUNT = 1;
+
+    /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.InputElementAttributesImpl <em>Input Element Attributes</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -876,7 +1255,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getInputElementAttributes()
      * @generated
      */
-    int INPUT_ELEMENT_ATTRIBUTES = 15;
+    int INPUT_ELEMENT_ATTRIBUTES = 25;
 
     /**
      * The feature id for the '<em><b>Default Scalar Value</b></em>' attribute.
@@ -958,7 +1337,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getInputElementUIHints()
      * @generated
      */
-    int INPUT_ELEMENT_UI_HINTS = 16;
+    int INPUT_ELEMENT_UI_HINTS = 26;
 
     /**
      * The feature id for the '<em><b>Prompt Style</b></em>' attribute.
@@ -970,13 +1349,22 @@
     int INPUT_ELEMENT_UI_HINTS__PROMPT_STYLE = 0;
 
     /**
+     * The feature id for the '<em><b>Auto Suggest Threshold</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int INPUT_ELEMENT_UI_HINTS__AUTO_SUGGEST_THRESHOLD = 1;
+
+    /**
      * The number of structural features of the '<em>Input Element UI Hints</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int INPUT_ELEMENT_UI_HINTS_FEATURE_COUNT = 1;
+    int INPUT_ELEMENT_UI_HINTS_FEATURE_COUNT = 2;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.InputParameterAttributesImpl <em>Input Parameter Attributes</em>}' class.
@@ -986,7 +1374,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getInputParameterAttributes()
      * @generated
      */
-    int INPUT_PARAMETER_ATTRIBUTES = 17;
+    int INPUT_PARAMETER_ATTRIBUTES = 27;
 
     /**
      * The feature id for the '<em><b>Element Attributes</b></em>' containment reference.
@@ -1023,7 +1411,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getInputParameterUIHints()
      * @generated
      */
-    int INPUT_PARAMETER_UI_HINTS = 18;
+    int INPUT_PARAMETER_UI_HINTS = 28;
 
     /**
      * The feature id for the '<em><b>Group Prompt Display Name</b></em>' attribute.
@@ -1051,7 +1439,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getLocale()
      * @generated
      */
-    int LOCALE = 19;
+    int LOCALE = 29;
 
     /**
      * The feature id for the '<em><b>Language</b></em>' attribute.
@@ -1097,7 +1485,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getNameValuePair()
      * @generated
      */
-    int NAME_VALUE_PAIR = 20;
+    int NAME_VALUE_PAIR = 30;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -1127,6 +1515,43 @@
     int NAME_VALUE_PAIR_FEATURE_COUNT = 2;
 
     /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.NotExpressionImpl <em>Not Expression</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.NotExpressionImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getNotExpression()
+     * @generated
+     */
+    int NOT_EXPRESSION = 31;
+
+    /**
+     * The feature id for the '<em><b>Negatable</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NOT_EXPRESSION__NEGATABLE = FILTER_EXPRESSION__NEGATABLE;
+
+    /**
+     * The feature id for the '<em><b>Negating Expression</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NOT_EXPRESSION__NEGATING_EXPRESSION = FILTER_EXPRESSION_FEATURE_COUNT + 0;
+
+    /**
+     * The number of structural features of the '<em>Not Expression</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NOT_EXPRESSION_FEATURE_COUNT = FILTER_EXPRESSION_FEATURE_COUNT + 1;
+
+    /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.OdaDesignSessionImpl <em>Oda Design Session</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1134,7 +1559,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getOdaDesignSession()
      * @generated
      */
-    int ODA_DESIGN_SESSION = 21;
+    int ODA_DESIGN_SESSION = 32;
 
     /**
      * The feature id for the '<em><b>Request</b></em>' containment reference.
@@ -1164,6 +1589,43 @@
     int ODA_DESIGN_SESSION_FEATURE_COUNT = 2;
 
     /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.OrExpressionImpl <em>Or Expression</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.OrExpressionImpl
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getOrExpression()
+     * @generated
+     */
+    int OR_EXPRESSION = 33;
+
+    /**
+     * The feature id for the '<em><b>Negatable</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int OR_EXPRESSION__NEGATABLE = COMPOSITE_FILTER_EXPRESSION__NEGATABLE;
+
+    /**
+     * The feature id for the '<em><b>Children</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int OR_EXPRESSION__CHILDREN = COMPOSITE_FILTER_EXPRESSION__CHILDREN;
+
+    /**
+     * The number of structural features of the '<em>Or Expression</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int OR_EXPRESSION_FEATURE_COUNT = COMPOSITE_FILTER_EXPRESSION_FEATURE_COUNT + 0;
+
+    /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.OutputElementAttributesImpl <em>Output Element Attributes</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1171,7 +1633,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getOutputElementAttributes()
      * @generated
      */
-    int OUTPUT_ELEMENT_ATTRIBUTES = 22;
+    int OUTPUT_ELEMENT_ATTRIBUTES = 34;
 
     /**
      * The feature id for the '<em><b>Label</b></em>' attribute.
@@ -1217,7 +1679,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getParameterDefinition()
      * @generated
      */
-    int PARAMETER_DEFINITION = 23;
+    int PARAMETER_DEFINITION = 35;
 
     /**
      * The feature id for the '<em><b>In Out Mode</b></em>' attribute.
@@ -1281,7 +1743,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getParameterFieldDefinition()
      * @generated
      */
-    int PARAMETER_FIELD_DEFINITION = 24;
+    int PARAMETER_FIELD_DEFINITION = 36;
 
     /**
      * The feature id for the '<em><b>Attributes</b></em>' containment reference.
@@ -1327,7 +1789,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getParameterFields()
      * @generated
      */
-    int PARAMETER_FIELDS = 25;
+    int PARAMETER_FIELDS = 37;
 
     /**
      * The feature id for the '<em><b>Field Collection</b></em>' containment reference list.
@@ -1355,7 +1817,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getProperties()
      * @generated
      */
-    int PROPERTIES = 26;
+    int PROPERTIES = 38;
 
     /**
      * The feature id for the '<em><b>Properties</b></em>' containment reference list.
@@ -1383,7 +1845,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getProperty()
      * @generated
      */
-    int PROPERTY = 27;
+    int PROPERTY = 39;
 
     /**
      * The feature id for the '<em><b>Name Value</b></em>' containment reference.
@@ -1420,7 +1882,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getPropertyAttributes()
      * @generated
      */
-    int PROPERTY_ATTRIBUTES = 28;
+    int PROPERTY_ATTRIBUTES = 40;
 
     /**
      * The feature id for the '<em><b>Display Name</b></em>' attribute.
@@ -1466,7 +1928,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getResourceIdentifiers()
      * @generated
      */
-    int RESOURCE_IDENTIFIERS = 29;
+    int RESOURCE_IDENTIFIERS = 41;
 
     /**
      * The feature id for the '<em><b>Appl Resource Base URI String</b></em>' attribute.
@@ -1503,7 +1965,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getResultSetColumns()
      * @generated
      */
-    int RESULT_SET_COLUMNS = 30;
+    int RESULT_SET_COLUMNS = 42;
 
     /**
      * The feature id for the '<em><b>Result Column Definitions</b></em>' containment reference list.
@@ -1531,7 +1993,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getResultSetDefinition()
      * @generated
      */
-    int RESULT_SET_DEFINITION = 31;
+    int RESULT_SET_DEFINITION = 43;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -1568,7 +2030,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getResultSets()
      * @generated
      */
-    int RESULT_SETS = 32;
+    int RESULT_SETS = 44;
 
     /**
      * The feature id for the '<em><b>Result Set Definitions</b></em>' containment reference list.
@@ -1605,7 +2067,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getScalarValueChoices()
      * @generated
      */
-    int SCALAR_VALUE_CHOICES = 33;
+    int SCALAR_VALUE_CHOICES = 45;
 
     /**
      * The feature id for the '<em><b>Scalar Values</b></em>' containment reference list.
@@ -1633,7 +2095,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getScalarValueDefinition()
      * @generated
      */
-    int SCALAR_VALUE_DEFINITION = 34;
+    int SCALAR_VALUE_DEFINITION = 46;
 
     /**
      * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -1670,7 +2132,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getValueFormatHints()
      * @generated
      */
-    int VALUE_FORMAT_HINTS = 35;
+    int VALUE_FORMAT_HINTS = 47;
 
     /**
      * The feature id for the '<em><b>Display Size</b></em>' attribute.
@@ -1734,7 +2196,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getAxisType()
      * @generated
      */
-    int AXIS_TYPE = 36;
+    int AXIS_TYPE = 48;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.ElementNullability <em>Element Nullability</em>}' enum.
@@ -1744,7 +2206,17 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getElementNullability()
      * @generated
      */
-    int ELEMENT_NULLABILITY = 37;
+    int ELEMENT_NULLABILITY = 49;
+
+    /**
+     * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.FilterVariableType <em>Filter Variable Type</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterVariableType
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterVariableType()
+     * @generated
+     */
+    int FILTER_VARIABLE_TYPE = 50;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.HorizontalAlignment <em>Horizontal Alignment</em>}' enum.
@@ -1754,7 +2226,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getHorizontalAlignment()
      * @generated
      */
-    int HORIZONTAL_ALIGNMENT = 38;
+    int HORIZONTAL_ALIGNMENT = 51;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.InputPromptControlStyle <em>Input Prompt Control Style</em>}' enum.
@@ -1764,7 +2236,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getInputPromptControlStyle()
      * @generated
      */
-    int INPUT_PROMPT_CONTROL_STYLE = 39;
+    int INPUT_PROMPT_CONTROL_STYLE = 52;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.OdaComplexDataType <em>Oda Complex Data Type</em>}' enum.
@@ -1774,7 +2246,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getOdaComplexDataType()
      * @generated
      */
-    int ODA_COMPLEX_DATA_TYPE = 40;
+    int ODA_COMPLEX_DATA_TYPE = 53;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.OdaScalarDataType <em>Oda Scalar Data Type</em>}' enum.
@@ -1784,7 +2256,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getOdaScalarDataType()
      * @generated
      */
-    int ODA_SCALAR_DATA_TYPE = 41;
+    int ODA_SCALAR_DATA_TYPE = 54;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.ParameterMode <em>Parameter Mode</em>}' enum.
@@ -1794,7 +2266,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getParameterMode()
      * @generated
      */
-    int PARAMETER_MODE = 42;
+    int PARAMETER_MODE = 55;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.SessionStatus <em>Session Status</em>}' enum.
@@ -1804,7 +2276,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getSessionStatus()
      * @generated
      */
-    int SESSION_STATUS = 43;
+    int SESSION_STATUS = 56;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.TextFormatType <em>Text Format Type</em>}' enum.
@@ -1814,7 +2286,7 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getTextFormatType()
      * @generated
      */
-    int TEXT_FORMAT_TYPE = 44;
+    int TEXT_FORMAT_TYPE = 57;
 
     /**
      * The meta object id for the '{@link org.eclipse.datatools.connectivity.oda.design.TextWrapType <em>Text Wrap Type</em>}' enum.
@@ -1824,107 +2296,159 @@
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getTextWrapType()
      * @generated
      */
-    int TEXT_WRAP_TYPE = 45;
+    int TEXT_WRAP_TYPE = 58;
 
     /**
      * The meta object id for the '<em>Axis Type Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
+     * @see org.eclipse.datatools.connectivity.oda.design.AxisType
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getAxisTypeObject()
      * @generated
      */
-    int AXIS_TYPE_OBJECT = 46;
+    int AXIS_TYPE_OBJECT = 59;
 
     /**
      * The meta object id for the '<em>Element Nullability Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
+     * @see org.eclipse.datatools.connectivity.oda.design.ElementNullability
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getElementNullabilityObject()
      * @generated
      */
-    int ELEMENT_NULLABILITY_OBJECT = 47;
+    int ELEMENT_NULLABILITY_OBJECT = 60;
+
+    /**
+     * The meta object id for the '<em>Filter Variable Type Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterVariableType
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterVariableTypeObject()
+     * @generated
+     */
+    int FILTER_VARIABLE_TYPE_OBJECT = 61;
 
     /**
      * The meta object id for the '<em>Horizontal Alignment Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
+     * @see org.eclipse.datatools.connectivity.oda.design.HorizontalAlignment
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getHorizontalAlignmentObject()
      * @generated
      */
-    int HORIZONTAL_ALIGNMENT_OBJECT = 48;
+    int HORIZONTAL_ALIGNMENT_OBJECT = 62;
 
     /**
      * The meta object id for the '<em>Input Prompt Control Style Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
+     * @see org.eclipse.datatools.connectivity.oda.design.InputPromptControlStyle
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getInputPromptControlStyleObject()
      * @generated
      */
-    int INPUT_PROMPT_CONTROL_STYLE_OBJECT = 49;
+    int INPUT_PROMPT_CONTROL_STYLE_OBJECT = 63;
 
     /**
      * The meta object id for the '<em>Oda Complex Data Type Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
+     * @see org.eclipse.datatools.connectivity.oda.design.OdaComplexDataType
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getOdaComplexDataTypeObject()
      * @generated
      */
-    int ODA_COMPLEX_DATA_TYPE_OBJECT = 50;
+    int ODA_COMPLEX_DATA_TYPE_OBJECT = 64;
 
     /**
      * The meta object id for the '<em>Oda Scalar Data Type Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
+     * @see org.eclipse.datatools.connectivity.oda.design.OdaScalarDataType
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getOdaScalarDataTypeObject()
      * @generated
      */
-    int ODA_SCALAR_DATA_TYPE_OBJECT = 51;
+    int ODA_SCALAR_DATA_TYPE_OBJECT = 65;
 
     /**
      * The meta object id for the '<em>Parameter Mode Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
+     * @see org.eclipse.datatools.connectivity.oda.design.ParameterMode
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getParameterModeObject()
      * @generated
      */
-    int PARAMETER_MODE_OBJECT = 52;
+    int PARAMETER_MODE_OBJECT = 66;
 
     /**
      * The meta object id for the '<em>Session Status Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
+     * @see org.eclipse.datatools.connectivity.oda.design.SessionStatus
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getSessionStatusObject()
      * @generated
      */
-    int SESSION_STATUS_OBJECT = 53;
+    int SESSION_STATUS_OBJECT = 67;
 
     /**
      * The meta object id for the '<em>Text Format Type Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
+     * @see org.eclipse.datatools.connectivity.oda.design.TextFormatType
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getTextFormatTypeObject()
      * @generated
      */
-    int TEXT_FORMAT_TYPE_OBJECT = 54;
+    int TEXT_FORMAT_TYPE_OBJECT = 68;
 
     /**
      * The meta object id for the '<em>Text Wrap Type Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
+     * @see org.eclipse.datatools.connectivity.oda.design.TextWrapType
      * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getTextWrapTypeObject()
      * @generated
      */
-    int TEXT_WRAP_TYPE_OBJECT = 55;
+    int TEXT_WRAP_TYPE_OBJECT = 69;
+
+    /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.AndExpression <em>And Expression</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>And Expression</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.AndExpression
+     * @generated
+     */
+    EClass getAndExpression();
+
+    /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext <em>Atomic Expression Context</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Atomic Expression Context</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext
+     * @generated
+     */
+    EClass getAtomicExpressionContext();
+
+    /**
+     * Returns the meta object for the containment reference '{@link org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext#getVariable <em>Variable</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Variable</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext#getVariable()
+     * @see #getAtomicExpressionContext()
+     * @generated
+     */
+    EReference getAtomicExpressionContext_Variable();
+
+    /**
+     * Returns the meta object for the containment reference '{@link org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext#getArguments <em>Arguments</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Arguments</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext#getArguments()
+     * @see #getAtomicExpressionContext()
+     * @generated
+     */
+    EReference getAtomicExpressionContext_Arguments();
 
     /**
      * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.AxisAttributes <em>Axis Attributes</em>}'.
@@ -2002,6 +2526,70 @@
     EReference getColumnDefinition_MultiDimensionAttributes();
 
     /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.CompositeFilterExpression <em>Composite Filter Expression</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Composite Filter Expression</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.CompositeFilterExpression
+     * @generated
+     */
+    EClass getCompositeFilterExpression();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link org.eclipse.datatools.connectivity.oda.design.CompositeFilterExpression#getChildren <em>Children</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Children</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.CompositeFilterExpression#getChildren()
+     * @see #getCompositeFilterExpression()
+     * @generated
+     */
+    EReference getCompositeFilterExpression_Children();
+
+    /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.CustomExpression <em>Custom Expression</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Custom Expression</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.CustomExpression
+     * @generated
+     */
+    EClass getCustomExpression();
+
+    /**
+     * Returns the meta object for the attribute '{@link org.eclipse.datatools.connectivity.oda.design.CustomExpression#getDeclaringExtensionId <em>Declaring Extension Id</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Declaring Extension Id</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.CustomExpression#getDeclaringExtensionId()
+     * @see #getCustomExpression()
+     * @generated
+     */
+    EAttribute getCustomExpression_DeclaringExtensionId();
+
+    /**
+     * Returns the meta object for the attribute '{@link org.eclipse.datatools.connectivity.oda.design.CustomExpression#getId <em>Id</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Id</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.CustomExpression#getId()
+     * @see #getCustomExpression()
+     * @generated
+     */
+    EAttribute getCustomExpression_Id();
+
+    /**
+     * Returns the meta object for the containment reference '{@link org.eclipse.datatools.connectivity.oda.design.CustomExpression#getContext <em>Context</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Context</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.CustomExpression#getContext()
+     * @see #getCustomExpression()
+     * @generated
+     */
+    EReference getCustomExpression_Context();
+
+    /**
      * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.DataAccessDesign <em>Data Access Design</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2262,6 +2850,17 @@
     EReference getDataSetDesign_Parameters();
 
     /**
+     * Returns the meta object for the containment reference '{@link org.eclipse.datatools.connectivity.oda.design.DataSetDesign#getFilter <em>Filter</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Filter</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.DataSetDesign#getFilter()
+     * @see #getDataSetDesign()
+     * @generated
+     */
+    EReference getDataSetDesign_Filter();
+
+    /**
      * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.DataSetParameters <em>Data Set Parameters</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2639,6 +3238,27 @@
     EReference getDocumentRoot_OdaDesignSession();
 
     /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.DynamicExpression <em>Dynamic Expression</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Dynamic Expression</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.DynamicExpression
+     * @generated
+     */
+    EClass getDynamicExpression();
+
+    /**
+     * Returns the meta object for the containment reference '{@link org.eclipse.datatools.connectivity.oda.design.DynamicExpression#getContextVariable <em>Context Variable</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Context Variable</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.DynamicExpression#getContextVariable()
+     * @see #getDynamicExpression()
+     * @generated
+     */
+    EReference getDynamicExpression_ContextVariable();
+
+    /**
      * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.DynamicValuesQuery <em>Dynamic Values Query</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2693,6 +3313,144 @@
     EAttribute getDynamicValuesQuery_DisplayNameColumn();
 
     /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpression <em>Filter Expression</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Filter Expression</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterExpression
+     * @generated
+     */
+    EClass getFilterExpression();
+
+    /**
+     * Returns the meta object for the attribute '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpression#isNegatable <em>Negatable</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Negatable</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterExpression#isNegatable()
+     * @see #getFilterExpression()
+     * @generated
+     */
+    EAttribute getFilterExpression_Negatable();
+
+    /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpressionArguments <em>Filter Expression Arguments</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Filter Expression Arguments</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterExpressionArguments
+     * @generated
+     */
+    EClass getFilterExpressionArguments();
+
+    /**
+     * Returns the meta object for the containment reference '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpressionArguments#getFilterParameters <em>Filter Parameters</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Filter Parameters</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterExpressionArguments#getFilterParameters()
+     * @see #getFilterExpressionArguments()
+     * @generated
+     */
+    EReference getFilterExpressionArguments_FilterParameters();
+
+    /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable <em>Filter Expression Variable</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Filter Expression Variable</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable
+     * @generated
+     */
+    EClass getFilterExpressionVariable();
+
+    /**
+     * Returns the meta object for the attribute '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable#getType <em>Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable#getType()
+     * @see #getFilterExpressionVariable()
+     * @generated
+     */
+    EAttribute getFilterExpressionVariable_Type();
+
+    /**
+     * Returns the meta object for the attribute '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable#getIdentifier <em>Identifier</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Identifier</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable#getIdentifier()
+     * @see #getFilterExpressionVariable()
+     * @generated
+     */
+    EAttribute getFilterExpressionVariable_Identifier();
+
+    /**
+     * Returns the meta object for the attribute '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable#getNativeDataTypeCode <em>Native Data Type Code</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Native Data Type Code</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable#getNativeDataTypeCode()
+     * @see #getFilterExpressionVariable()
+     * @generated
+     */
+    EAttribute getFilterExpressionVariable_NativeDataTypeCode();
+
+    /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.FilterParameterDefinition <em>Filter Parameter Definition</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Filter Parameter Definition</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterParameterDefinition
+     * @generated
+     */
+    EClass getFilterParameterDefinition();
+
+    /**
+     * Returns the meta object for the attribute '{@link org.eclipse.datatools.connectivity.oda.design.FilterParameterDefinition#getStaticValue <em>Static Value</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Static Value</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterParameterDefinition#getStaticValue()
+     * @see #getFilterParameterDefinition()
+     * @generated
+     */
+    EAttribute getFilterParameterDefinition_StaticValue();
+
+    /**
+     * Returns the meta object for the containment reference '{@link org.eclipse.datatools.connectivity.oda.design.FilterParameterDefinition#getDynamicInputParameter <em>Dynamic Input Parameter</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Dynamic Input Parameter</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterParameterDefinition#getDynamicInputParameter()
+     * @see #getFilterParameterDefinition()
+     * @generated
+     */
+    EReference getFilterParameterDefinition_DynamicInputParameter();
+
+    /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.FilterParameters <em>Filter Parameters</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Filter Parameters</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterParameters
+     * @generated
+     */
+    EClass getFilterParameters();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link org.eclipse.datatools.connectivity.oda.design.FilterParameters#getParameterDefinitions <em>Parameter Definitions</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Parameter Definitions</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterParameters#getParameterDefinitions()
+     * @see #getFilterParameters()
+     * @generated
+     */
+    EReference getFilterParameters_ParameterDefinitions();
+
+    /**
      * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.InputElementAttributes <em>Input Element Attributes</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2801,6 +3559,17 @@
     EAttribute getInputElementUIHints_PromptStyle();
 
     /**
+     * Returns the meta object for the attribute '{@link org.eclipse.datatools.connectivity.oda.design.InputElementUIHints#getAutoSuggestThreshold <em>Auto Suggest Threshold</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Auto Suggest Threshold</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.InputElementUIHints#getAutoSuggestThreshold()
+     * @see #getInputElementUIHints()
+     * @generated
+     */
+    EAttribute getInputElementUIHints_AutoSuggestThreshold();
+
+    /**
      * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.InputParameterAttributes <em>Input Parameter Attributes</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2929,6 +3698,27 @@
     EAttribute getNameValuePair_Value();
 
     /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.NotExpression <em>Not Expression</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Not Expression</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.NotExpression
+     * @generated
+     */
+    EClass getNotExpression();
+
+    /**
+     * Returns the meta object for the containment reference '{@link org.eclipse.datatools.connectivity.oda.design.NotExpression#getNegatingExpression <em>Negating Expression</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Negating Expression</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.NotExpression#getNegatingExpression()
+     * @see #getNotExpression()
+     * @generated
+     */
+    EReference getNotExpression_NegatingExpression();
+
+    /**
      * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.OdaDesignSession <em>Oda Design Session</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2961,6 +3751,16 @@
     EReference getOdaDesignSession_Response();
 
     /**
+     * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.OrExpression <em>Or Expression</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Or Expression</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.OrExpression
+     * @generated
+     */
+    EClass getOrExpression();
+
+    /**
      * Returns the meta object for class '{@link org.eclipse.datatools.connectivity.oda.design.OutputElementAttributes <em>Output Element Attributes</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -3484,6 +4284,16 @@
     EEnum getElementNullability();
 
     /**
+     * Returns the meta object for enum '{@link org.eclipse.datatools.connectivity.oda.design.FilterVariableType <em>Filter Variable Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for enum '<em>Filter Variable Type</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterVariableType
+     * @generated
+     */
+    EEnum getFilterVariableType();
+
+    /**
      * Returns the meta object for enum '{@link org.eclipse.datatools.connectivity.oda.design.HorizontalAlignment <em>Horizontal Alignment</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -3564,121 +4374,133 @@
     EEnum getTextWrapType();
 
     /**
-     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.AbstractEnumerator <em>Axis Type Object</em>}'.
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.AxisType <em>Axis Type Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for data type '<em>Axis Type Object</em>'.
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
-     * @model instanceClass="org.eclipse.emf.common.util.AbstractEnumerator"
-     *        extendedMetaData="name='AxisType:Object' baseType='AxisType'" 
+     * @see org.eclipse.datatools.connectivity.oda.design.AxisType
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.AxisType"
+     *        extendedMetaData="name='AxisType:Object' baseType='AxisType'"
      * @generated
      */
     EDataType getAxisTypeObject();
 
     /**
-     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.AbstractEnumerator <em>Element Nullability Object</em>}'.
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.ElementNullability <em>Element Nullability Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for data type '<em>Element Nullability Object</em>'.
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
-     * @model instanceClass="org.eclipse.emf.common.util.AbstractEnumerator"
-     *        extendedMetaData="name='ElementNullability:Object' baseType='ElementNullability'" 
+     * @see org.eclipse.datatools.connectivity.oda.design.ElementNullability
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.ElementNullability"
+     *        extendedMetaData="name='ElementNullability:Object' baseType='ElementNullability'"
      * @generated
      */
     EDataType getElementNullabilityObject();
 
     /**
-     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.AbstractEnumerator <em>Horizontal Alignment Object</em>}'.
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.FilterVariableType <em>Filter Variable Type Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>Filter Variable Type Object</em>'.
+     * @see org.eclipse.datatools.connectivity.oda.design.FilterVariableType
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.FilterVariableType"
+     *        extendedMetaData="name='FilterVariableType:Object' baseType='FilterVariableType'"
+     * @generated
+     */
+    EDataType getFilterVariableTypeObject();
+
+    /**
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.HorizontalAlignment <em>Horizontal Alignment Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for data type '<em>Horizontal Alignment Object</em>'.
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
-     * @model instanceClass="org.eclipse.emf.common.util.AbstractEnumerator"
-     *        extendedMetaData="name='HorizontalAlignment:Object' baseType='HorizontalAlignment'" 
+     * @see org.eclipse.datatools.connectivity.oda.design.HorizontalAlignment
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.HorizontalAlignment"
+     *        extendedMetaData="name='HorizontalAlignment:Object' baseType='HorizontalAlignment'"
      * @generated
      */
     EDataType getHorizontalAlignmentObject();
 
     /**
-     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.AbstractEnumerator <em>Input Prompt Control Style Object</em>}'.
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.InputPromptControlStyle <em>Input Prompt Control Style Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for data type '<em>Input Prompt Control Style Object</em>'.
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
-     * @model instanceClass="org.eclipse.emf.common.util.AbstractEnumerator"
-     *        extendedMetaData="name='InputPromptControlStyle:Object' baseType='InputPromptControlStyle'" 
+     * @see org.eclipse.datatools.connectivity.oda.design.InputPromptControlStyle
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.InputPromptControlStyle"
+     *        extendedMetaData="name='InputPromptControlStyle:Object' baseType='InputPromptControlStyle'"
      * @generated
      */
     EDataType getInputPromptControlStyleObject();
 
     /**
-     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.AbstractEnumerator <em>Oda Complex Data Type Object</em>}'.
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.OdaComplexDataType <em>Oda Complex Data Type Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for data type '<em>Oda Complex Data Type Object</em>'.
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
-     * @model instanceClass="org.eclipse.emf.common.util.AbstractEnumerator"
-     *        extendedMetaData="name='OdaComplexDataType:Object' baseType='OdaComplexDataType'" 
+     * @see org.eclipse.datatools.connectivity.oda.design.OdaComplexDataType
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.OdaComplexDataType"
+     *        extendedMetaData="name='OdaComplexDataType:Object' baseType='OdaComplexDataType'"
      * @generated
      */
     EDataType getOdaComplexDataTypeObject();
 
     /**
-     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.AbstractEnumerator <em>Oda Scalar Data Type Object</em>}'.
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.OdaScalarDataType <em>Oda Scalar Data Type Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for data type '<em>Oda Scalar Data Type Object</em>'.
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
-     * @model instanceClass="org.eclipse.emf.common.util.AbstractEnumerator"
-     *        extendedMetaData="name='OdaScalarDataType:Object' baseType='OdaScalarDataType'" 
+     * @see org.eclipse.datatools.connectivity.oda.design.OdaScalarDataType
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.OdaScalarDataType"
+     *        extendedMetaData="name='OdaScalarDataType:Object' baseType='OdaScalarDataType'"
      * @generated
      */
     EDataType getOdaScalarDataTypeObject();
 
     /**
-     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.AbstractEnumerator <em>Parameter Mode Object</em>}'.
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.ParameterMode <em>Parameter Mode Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for data type '<em>Parameter Mode Object</em>'.
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
-     * @model instanceClass="org.eclipse.emf.common.util.AbstractEnumerator"
-     *        extendedMetaData="name='ParameterMode:Object' baseType='ParameterMode'" 
+     * @see org.eclipse.datatools.connectivity.oda.design.ParameterMode
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.ParameterMode"
+     *        extendedMetaData="name='ParameterMode:Object' baseType='ParameterMode'"
      * @generated
      */
     EDataType getParameterModeObject();
 
     /**
-     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.AbstractEnumerator <em>Session Status Object</em>}'.
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.SessionStatus <em>Session Status Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for data type '<em>Session Status Object</em>'.
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
-     * @model instanceClass="org.eclipse.emf.common.util.AbstractEnumerator"
-     *        extendedMetaData="name='SessionStatus:Object' baseType='SessionStatus'" 
+     * @see org.eclipse.datatools.connectivity.oda.design.SessionStatus
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.SessionStatus"
+     *        extendedMetaData="name='SessionStatus:Object' baseType='SessionStatus'"
      * @generated
      */
     EDataType getSessionStatusObject();
 
     /**
-     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.AbstractEnumerator <em>Text Format Type Object</em>}'.
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.TextFormatType <em>Text Format Type Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for data type '<em>Text Format Type Object</em>'.
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
-     * @model instanceClass="org.eclipse.emf.common.util.AbstractEnumerator"
-     *        extendedMetaData="name='TextFormatType:Object' baseType='TextFormatType'" 
+     * @see org.eclipse.datatools.connectivity.oda.design.TextFormatType
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.TextFormatType"
+     *        extendedMetaData="name='TextFormatType:Object' baseType='TextFormatType'"
      * @generated
      */
     EDataType getTextFormatTypeObject();
 
     /**
-     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.AbstractEnumerator <em>Text Wrap Type Object</em>}'.
+     * Returns the meta object for data type '{@link org.eclipse.datatools.connectivity.oda.design.TextWrapType <em>Text Wrap Type Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for data type '<em>Text Wrap Type Object</em>'.
-     * @see org.eclipse.emf.common.util.AbstractEnumerator
-     * @model instanceClass="org.eclipse.emf.common.util.AbstractEnumerator"
-     *        extendedMetaData="name='TextWrapType:Object' baseType='TextWrapType'" 
+     * @see org.eclipse.datatools.connectivity.oda.design.TextWrapType
+     * @model instanceClass="org.eclipse.datatools.connectivity.oda.design.TextWrapType"
+     *        extendedMetaData="name='TextWrapType:Object' baseType='TextWrapType'"
      * @generated
      */
     EDataType getTextWrapTypeObject();
@@ -3707,6 +4529,45 @@
     interface Literals
     {
         /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.AndExpressionImpl <em>And Expression</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.AndExpressionImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getAndExpression()
+         * @generated
+         */
+        EClass AND_EXPRESSION = eINSTANCE.getAndExpression();
+
+        /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.AtomicExpressionContextImpl <em>Atomic Expression Context</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.AtomicExpressionContextImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getAtomicExpressionContext()
+         * @generated
+         */
+        EClass ATOMIC_EXPRESSION_CONTEXT = eINSTANCE
+                .getAtomicExpressionContext();
+
+        /**
+         * The meta object literal for the '<em><b>Variable</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference ATOMIC_EXPRESSION_CONTEXT__VARIABLE = eINSTANCE
+                .getAtomicExpressionContext_Variable();
+
+        /**
+         * The meta object literal for the '<em><b>Arguments</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS = eINSTANCE
+                .getAtomicExpressionContext_Arguments();
+
+        /**
          * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.AxisAttributesImpl <em>Axis Attributes</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
@@ -3772,6 +4633,62 @@
                 .getColumnDefinition_MultiDimensionAttributes();
 
         /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.CompositeFilterExpressionImpl <em>Composite Filter Expression</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.CompositeFilterExpressionImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getCompositeFilterExpression()
+         * @generated
+         */
+        EClass COMPOSITE_FILTER_EXPRESSION = eINSTANCE
+                .getCompositeFilterExpression();
+
+        /**
+         * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference COMPOSITE_FILTER_EXPRESSION__CHILDREN = eINSTANCE
+                .getCompositeFilterExpression_Children();
+
+        /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.CustomExpressionImpl <em>Custom Expression</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.CustomExpressionImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getCustomExpression()
+         * @generated
+         */
+        EClass CUSTOM_EXPRESSION = eINSTANCE.getCustomExpression();
+
+        /**
+         * The meta object literal for the '<em><b>Declaring Extension Id</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute CUSTOM_EXPRESSION__DECLARING_EXTENSION_ID = eINSTANCE
+                .getCustomExpression_DeclaringExtensionId();
+
+        /**
+         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute CUSTOM_EXPRESSION__ID = eINSTANCE.getCustomExpression_Id();
+
+        /**
+         * The meta object literal for the '<em><b>Context</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference CUSTOM_EXPRESSION__CONTEXT = eINSTANCE
+                .getCustomExpression_Context();
+
+        /**
          * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.DataAccessDesignImpl <em>Data Access Design</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
@@ -3990,6 +4907,15 @@
                 .getDataSetDesign_Parameters();
 
         /**
+         * The meta object literal for the '<em><b>Filter</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DATA_SET_DESIGN__FILTER = eINSTANCE
+                .getDataSetDesign_Filter();
+
+        /**
          * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.DataSetParametersImpl <em>Data Set Parameters</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
@@ -4312,6 +5238,25 @@
                 .getDocumentRoot_OdaDesignSession();
 
         /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.DynamicExpressionImpl <em>Dynamic Expression</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DynamicExpressionImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getDynamicExpression()
+         * @generated
+         */
+        EClass DYNAMIC_EXPRESSION = eINSTANCE.getDynamicExpression();
+
+        /**
+         * The meta object literal for the '<em><b>Context Variable</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DYNAMIC_EXPRESSION__CONTEXT_VARIABLE = eINSTANCE
+                .getDynamicExpression_ContextVariable();
+
+        /**
          * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.DynamicValuesQueryImpl <em>Dynamic Values Query</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
@@ -4358,6 +5303,131 @@
                 .getDynamicValuesQuery_DisplayNameColumn();
 
         /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionImpl <em>Filter Expression</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterExpression()
+         * @generated
+         */
+        EClass FILTER_EXPRESSION = eINSTANCE.getFilterExpression();
+
+        /**
+         * The meta object literal for the '<em><b>Negatable</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute FILTER_EXPRESSION__NEGATABLE = eINSTANCE
+                .getFilterExpression_Negatable();
+
+        /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionArgumentsImpl <em>Filter Expression Arguments</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionArgumentsImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterExpressionArguments()
+         * @generated
+         */
+        EClass FILTER_EXPRESSION_ARGUMENTS = eINSTANCE
+                .getFilterExpressionArguments();
+
+        /**
+         * The meta object literal for the '<em><b>Filter Parameters</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference FILTER_EXPRESSION_ARGUMENTS__FILTER_PARAMETERS = eINSTANCE
+                .getFilterExpressionArguments_FilterParameters();
+
+        /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionVariableImpl <em>Filter Expression Variable</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionVariableImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterExpressionVariable()
+         * @generated
+         */
+        EClass FILTER_EXPRESSION_VARIABLE = eINSTANCE
+                .getFilterExpressionVariable();
+
+        /**
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute FILTER_EXPRESSION_VARIABLE__TYPE = eINSTANCE
+                .getFilterExpressionVariable_Type();
+
+        /**
+         * The meta object literal for the '<em><b>Identifier</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute FILTER_EXPRESSION_VARIABLE__IDENTIFIER = eINSTANCE
+                .getFilterExpressionVariable_Identifier();
+
+        /**
+         * The meta object literal for the '<em><b>Native Data Type Code</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute FILTER_EXPRESSION_VARIABLE__NATIVE_DATA_TYPE_CODE = eINSTANCE
+                .getFilterExpressionVariable_NativeDataTypeCode();
+
+        /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterParameterDefinitionImpl <em>Filter Parameter Definition</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterParameterDefinitionImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterParameterDefinition()
+         * @generated
+         */
+        EClass FILTER_PARAMETER_DEFINITION = eINSTANCE
+                .getFilterParameterDefinition();
+
+        /**
+         * The meta object literal for the '<em><b>Static Value</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute FILTER_PARAMETER_DEFINITION__STATIC_VALUE = eINSTANCE
+                .getFilterParameterDefinition_StaticValue();
+
+        /**
+         * The meta object literal for the '<em><b>Dynamic Input Parameter</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference FILTER_PARAMETER_DEFINITION__DYNAMIC_INPUT_PARAMETER = eINSTANCE
+                .getFilterParameterDefinition_DynamicInputParameter();
+
+        /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterParametersImpl <em>Filter Parameters</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterParametersImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterParameters()
+         * @generated
+         */
+        EClass FILTER_PARAMETERS = eINSTANCE.getFilterParameters();
+
+        /**
+         * The meta object literal for the '<em><b>Parameter Definitions</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference FILTER_PARAMETERS__PARAMETER_DEFINITIONS = eINSTANCE
+                .getFilterParameters_ParameterDefinitions();
+
+        /**
          * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.InputElementAttributesImpl <em>Input Element Attributes</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
@@ -4450,6 +5520,15 @@
                 .getInputElementUIHints_PromptStyle();
 
         /**
+         * The meta object literal for the '<em><b>Auto Suggest Threshold</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute INPUT_ELEMENT_UI_HINTS__AUTO_SUGGEST_THRESHOLD = eINSTANCE
+                .getInputElementUIHints_AutoSuggestThreshold();
+
+        /**
          * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.InputParameterAttributesImpl <em>Input Parameter Attributes</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
@@ -4558,6 +5637,25 @@
         EAttribute NAME_VALUE_PAIR__VALUE = eINSTANCE.getNameValuePair_Value();
 
         /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.NotExpressionImpl <em>Not Expression</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.NotExpressionImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getNotExpression()
+         * @generated
+         */
+        EClass NOT_EXPRESSION = eINSTANCE.getNotExpression();
+
+        /**
+         * The meta object literal for the '<em><b>Negating Expression</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference NOT_EXPRESSION__NEGATING_EXPRESSION = eINSTANCE
+                .getNotExpression_NegatingExpression();
+
+        /**
          * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.OdaDesignSessionImpl <em>Oda Design Session</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
@@ -4586,6 +5684,16 @@
                 .getOdaDesignSession_Response();
 
         /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.OrExpressionImpl <em>Or Expression</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.OrExpressionImpl
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getOrExpression()
+         * @generated
+         */
+        EClass OR_EXPRESSION = eINSTANCE.getOrExpression();
+
+        /**
          * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.impl.OutputElementAttributesImpl <em>Output Element Attributes</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
@@ -5044,6 +6152,16 @@
         EEnum ELEMENT_NULLABILITY = eINSTANCE.getElementNullability();
 
         /**
+         * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.FilterVariableType <em>Filter Variable Type</em>}' enum.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.FilterVariableType
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterVariableType()
+         * @generated
+         */
+        EEnum FILTER_VARIABLE_TYPE = eINSTANCE.getFilterVariableType();
+
+        /**
          * The meta object literal for the '{@link org.eclipse.datatools.connectivity.oda.design.HorizontalAlignment <em>Horizontal Alignment</em>}' enum.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
@@ -5128,7 +6246,7 @@
          * The meta object literal for the '<em>Axis Type Object</em>' data type.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see org.eclipse.emf.common.util.AbstractEnumerator
+         * @see org.eclipse.datatools.connectivity.oda.design.AxisType
          * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getAxisTypeObject()
          * @generated
          */
@@ -5138,7 +6256,7 @@
          * The meta object literal for the '<em>Element Nullability Object</em>' data type.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see org.eclipse.emf.common.util.AbstractEnumerator
+         * @see org.eclipse.datatools.connectivity.oda.design.ElementNullability
          * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getElementNullabilityObject()
          * @generated
          */
@@ -5146,10 +6264,21 @@
                 .getElementNullabilityObject();
 
         /**
+         * The meta object literal for the '<em>Filter Variable Type Object</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.datatools.connectivity.oda.design.FilterVariableType
+         * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getFilterVariableTypeObject()
+         * @generated
+         */
+        EDataType FILTER_VARIABLE_TYPE_OBJECT = eINSTANCE
+                .getFilterVariableTypeObject();
+
+        /**
          * The meta object literal for the '<em>Horizontal Alignment Object</em>' data type.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see org.eclipse.emf.common.util.AbstractEnumerator
+         * @see org.eclipse.datatools.connectivity.oda.design.HorizontalAlignment
          * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getHorizontalAlignmentObject()
          * @generated
          */
@@ -5160,7 +6289,7 @@
          * The meta object literal for the '<em>Input Prompt Control Style Object</em>' data type.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see org.eclipse.emf.common.util.AbstractEnumerator
+         * @see org.eclipse.datatools.connectivity.oda.design.InputPromptControlStyle
          * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getInputPromptControlStyleObject()
          * @generated
          */
@@ -5171,7 +6300,7 @@
          * The meta object literal for the '<em>Oda Complex Data Type Object</em>' data type.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see org.eclipse.emf.common.util.AbstractEnumerator
+         * @see org.eclipse.datatools.connectivity.oda.design.OdaComplexDataType
          * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getOdaComplexDataTypeObject()
          * @generated
          */
@@ -5182,7 +6311,7 @@
          * The meta object literal for the '<em>Oda Scalar Data Type Object</em>' data type.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see org.eclipse.emf.common.util.AbstractEnumerator
+         * @see org.eclipse.datatools.connectivity.oda.design.OdaScalarDataType
          * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getOdaScalarDataTypeObject()
          * @generated
          */
@@ -5193,7 +6322,7 @@
          * The meta object literal for the '<em>Parameter Mode Object</em>' data type.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see org.eclipse.emf.common.util.AbstractEnumerator
+         * @see org.eclipse.datatools.connectivity.oda.design.ParameterMode
          * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getParameterModeObject()
          * @generated
          */
@@ -5203,7 +6332,7 @@
          * The meta object literal for the '<em>Session Status Object</em>' data type.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see org.eclipse.emf.common.util.AbstractEnumerator
+         * @see org.eclipse.datatools.connectivity.oda.design.SessionStatus
          * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getSessionStatusObject()
          * @generated
          */
@@ -5213,7 +6342,7 @@
          * The meta object literal for the '<em>Text Format Type Object</em>' data type.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see org.eclipse.emf.common.util.AbstractEnumerator
+         * @see org.eclipse.datatools.connectivity.oda.design.TextFormatType
          * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getTextFormatTypeObject()
          * @generated
          */
@@ -5223,7 +6352,7 @@
          * The meta object literal for the '<em>Text Wrap Type Object</em>' data type.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see org.eclipse.emf.common.util.AbstractEnumerator
+         * @see org.eclipse.datatools.connectivity.oda.design.TextWrapType
          * @see org.eclipse.datatools.connectivity.oda.design.impl.DesignPackageImpl#getTextWrapTypeObject()
          * @generated
          */
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/FilterExpression.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/FilterExpression.java
new file mode 100644
index 0000000..0065597
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/FilterExpression.java
@@ -0,0 +1,111 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>. This interface has been added as
+ * part of a work in progress. There is no guarantee that this API will
+ * work or that it will remain the same. Please do not use this API without
+ * consulting with the DTP Open Data Access team.
+ * </p>
+ * A representation of the model object '<em><b>Filter Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Abstract base class for all filter expressions defined by an ODA designer.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.FilterExpression#isNegatable <em>Negatable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getFilterExpression()
+ * @since 3.2 (DTP 1.7)
+ * @model abstract="true"
+ *        extendedMetaData="name='FilterExpression' kind='empty'"
+ * @generated
+ */
+public interface FilterExpression extends EObject
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * Returns the value of the '<em><b>Negatable</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Indicates whether the expression can be negated, i.e. applied with a NotExpression.  Default is false.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Negatable</em>' attribute.
+     * @see #isSetNegatable()
+     * @see #unsetNegatable()
+     * @see #setNegatable(boolean)
+     * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getFilterExpression_Negatable()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='negatable'"
+     * @generated
+     */
+    boolean isNegatable();
+
+    /**
+     * Sets the value of the '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpression#isNegatable <em>Negatable</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Negatable</em>' attribute.
+     * @see #isSetNegatable()
+     * @see #unsetNegatable()
+     * @see #isNegatable()
+     * @generated
+     */
+    void setNegatable( boolean value );
+
+    /**
+     * Unsets the value of the '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpression#isNegatable <em>Negatable</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetNegatable()
+     * @see #isNegatable()
+     * @see #setNegatable(boolean)
+     * @generated
+     */
+    void unsetNegatable();
+
+    /**
+     * Returns whether the value of the '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpression#isNegatable <em>Negatable</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Negatable</em>' attribute is set.
+     * @see #unsetNegatable()
+     * @see #isNegatable()
+     * @see #setNegatable(boolean)
+     * @generated
+     */
+    boolean isSetNegatable();
+
+} // FilterExpression
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/InputElementUIHints.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/InputElementUIHints.java
index ccab9de..c0a9104 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/InputElementUIHints.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/InputElementUIHints.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2007 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,7 +11,7 @@
  *  
  *************************************************************************
  *
- * $Id: InputElementUIHints.java,v 1.1 2005/12/29 04:17:55 lchan Exp $
+ * $Id: InputElementUIHints.java,v 1.2 2007/04/11 02:59:53 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design;
 
@@ -29,6 +29,7 @@
  * The following features are supported:
  * <ul>
  *   <li>{@link org.eclipse.datatools.connectivity.oda.design.InputElementUIHints#getPromptStyle <em>Prompt Style</em>}</li>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.InputElementUIHints#getAutoSuggestThreshold <em>Auto Suggest Threshold</em>}</li>
  * </ul>
  * </p>
  *
@@ -43,11 +44,10 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    String copyright = "Copyright (c) 2005, 2007 Actuate Corporation"; //$NON-NLS-1$
+    String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
 
     /**
      * Returns the value of the '<em><b>Prompt Style</b></em>' attribute.
-     * The default value is <code>""</code>.
      * The literals are from the enumeration {@link org.eclipse.datatools.connectivity.oda.design.InputPromptControlStyle}.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -60,7 +60,7 @@
      * @see #unsetPromptStyle()
      * @see #setPromptStyle(InputPromptControlStyle)
      * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getInputElementUIHints_PromptStyle()
-     * @model default="" unique="false" unsettable="true"
+     * @model unsettable="true"
      *        extendedMetaData="kind='element' name='promptStyle' namespace='##targetNamespace'"
      * @generated
      */
@@ -102,4 +102,63 @@
      */
     boolean isSetPromptStyle();
 
+    /**
+     * Returns the value of the '<em><b>Auto Suggest Threshold</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The number of characters after which auto suggest will kick in.  It is applicable only where an user can input a value, e.g. when a SelectableListWithTextField promptStyle and a DynamicValuesQuery is used.
+     * 
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Auto Suggest Threshold</em>' attribute.
+     * @see #isSetAutoSuggestThreshold()
+     * @see #unsetAutoSuggestThreshold()
+     * @see #setAutoSuggestThreshold(int)
+     * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getInputElementUIHints_AutoSuggestThreshold()
+     * @model default="1" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Int"
+     *        extendedMetaData="kind='element' name='autoSuggestThreshold' namespace='##targetNamespace'"
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    int getAutoSuggestThreshold();
+
+    /**
+     * Sets the value of the '{@link org.eclipse.datatools.connectivity.oda.design.InputElementUIHints#getAutoSuggestThreshold <em>Auto Suggest Threshold</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Auto Suggest Threshold</em>' attribute.
+     * @see #isSetAutoSuggestThreshold()
+     * @see #unsetAutoSuggestThreshold()
+     * @see #getAutoSuggestThreshold()
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    void setAutoSuggestThreshold( int value );
+
+    /**
+     * Unsets the value of the '{@link org.eclipse.datatools.connectivity.oda.design.InputElementUIHints#getAutoSuggestThreshold <em>Auto Suggest Threshold</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetAutoSuggestThreshold()
+     * @see #getAutoSuggestThreshold()
+     * @see #setAutoSuggestThreshold(int)
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    void unsetAutoSuggestThreshold();
+
+    /**
+     * Returns whether the value of the '{@link org.eclipse.datatools.connectivity.oda.design.InputElementUIHints#getAutoSuggestThreshold <em>Auto Suggest Threshold</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Auto Suggest Threshold</em>' attribute is set.
+     * @see #unsetAutoSuggestThreshold()
+     * @see #getAutoSuggestThreshold()
+     * @see #setAutoSuggestThreshold(int)
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    boolean isSetAutoSuggestThreshold();
+
 } // InputElementUIHints
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/NotExpression.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/NotExpression.java
new file mode 100644
index 0000000..cd8bdcc
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/NotExpression.java
@@ -0,0 +1,78 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>.
+ * </p>
+ * A representation of the model object '<em><b>Not Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A built-in negated filter expression.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.NotExpression#getNegatingExpression <em>Negating Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getNotExpression()
+ * @since 3.2 (DTP 1.7)
+ * @model extendedMetaData="name='NotExpression' kind='elementOnly'"
+ * @generated
+ */
+public interface NotExpression extends FilterExpression
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * Returns the value of the '<em><b>Negating Expression</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Negating Expression</em>' containment reference isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Negating Expression</em>' containment reference.
+     * @see #setNegatingExpression(FilterExpression)
+     * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getNotExpression_NegatingExpression()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='negatingExpression' namespace='##targetNamespace'"
+     * @generated
+     */
+    FilterExpression getNegatingExpression();
+
+    /**
+     * Sets the value of the '{@link org.eclipse.datatools.connectivity.oda.design.NotExpression#getNegatingExpression <em>Negating Expression</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Negating Expression</em>' containment reference.
+     * @see #getNegatingExpression()
+     * @generated
+     */
+    void setNegatingExpression( FilterExpression value );
+
+} // NotExpression
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/OrExpression.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/OrExpression.java
new file mode 100644
index 0000000..7ead56f
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/OrExpression.java
@@ -0,0 +1,45 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>.
+ * </p>
+ * A representation of the model object '<em><b>Or Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A built-in composite filter expression whose child expressions are combined by the Or boolean operator.  The composite expression is evaluated to be true if any of its child expressions is evaluated as true.  
+ * <!-- end-model-doc -->
+ *
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage#getOrExpression()
+ * @since 3.2 (DTP 1.7)
+ * @model extendedMetaData="name='OrExpression' kind='elementOnly'"
+ * @generated
+ */
+public interface OrExpression extends CompositeFilterExpression
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+} // OrExpression
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/AndExpressionImpl.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/AndExpressionImpl.java
new file mode 100644
index 0000000..727b13e
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/AndExpressionImpl.java
@@ -0,0 +1,77 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design.impl;
+
+import org.eclipse.datatools.connectivity.oda.design.AndExpression;
+import org.eclipse.datatools.connectivity.oda.design.DesignPackage;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>.
+ * </p>
+ * An implementation of the model object '<em><b>And Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ * @since 3.2 (DTP 1.7)
+ */
+public class AndExpressionImpl extends CompositeFilterExpressionImpl implements
+        AndExpression
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AndExpressionImpl()
+    {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass()
+    {
+        return DesignPackage.Literals.AND_EXPRESSION;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionImpl#isNegatable()
+     * @generated NOT
+     */
+    @Override
+    public boolean isNegatable()
+    {
+        return true;
+    }
+
+} //AndExpressionImpl
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/AtomicExpressionContextImpl.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/AtomicExpressionContextImpl.java
new file mode 100644
index 0000000..fb8a27f
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/AtomicExpressionContextImpl.java
@@ -0,0 +1,332 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design.impl;
+
+import org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext;
+import org.eclipse.datatools.connectivity.oda.design.DesignPackage;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpressionArguments;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable;
+
+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.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>.
+ * </p>
+ * An implementation of the model object '<em><b>Atomic Expression Context</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.AtomicExpressionContextImpl#getVariable <em>Variable</em>}</li>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.AtomicExpressionContextImpl#getArguments <em>Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ * @since 3.2 (DTP 1.7)
+ */
+public class AtomicExpressionContextImpl extends EObjectImpl implements
+        AtomicExpressionContext
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * The cached value of the '{@link #getVariable() <em>Variable</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVariable()
+     * @generated
+     * @ordered
+     */
+    protected FilterExpressionVariable m_variable;
+
+    /**
+     * The cached value of the '{@link #getArguments() <em>Arguments</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getArguments()
+     * @generated
+     * @ordered
+     */
+    protected FilterExpressionArguments m_arguments;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AtomicExpressionContextImpl()
+    {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass()
+    {
+        return DesignPackage.Literals.ATOMIC_EXPRESSION_CONTEXT;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public FilterExpressionVariable getVariable()
+    {
+        return m_variable;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetVariable(
+            FilterExpressionVariable newVariable, NotificationChain msgs )
+    {
+        FilterExpressionVariable oldVariable = m_variable;
+        m_variable = newVariable;
+        if( eNotificationRequired() )
+        {
+            ENotificationImpl notification = new ENotificationImpl( this,
+                    Notification.SET,
+                    DesignPackage.ATOMIC_EXPRESSION_CONTEXT__VARIABLE,
+                    oldVariable, newVariable );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setVariable( FilterExpressionVariable newVariable )
+    {
+        if( newVariable != m_variable )
+        {
+            NotificationChain msgs = null;
+            if( m_variable != null )
+                msgs = ((InternalEObject) m_variable)
+                        .eInverseRemove(
+                                this,
+                                EOPPOSITE_FEATURE_BASE
+                                        - DesignPackage.ATOMIC_EXPRESSION_CONTEXT__VARIABLE,
+                                null, msgs );
+            if( newVariable != null )
+                msgs = ((InternalEObject) newVariable)
+                        .eInverseAdd(
+                                this,
+                                EOPPOSITE_FEATURE_BASE
+                                        - DesignPackage.ATOMIC_EXPRESSION_CONTEXT__VARIABLE,
+                                null, msgs );
+            msgs = basicSetVariable( newVariable, msgs );
+            if( msgs != null )
+                msgs.dispatch();
+        }
+        else if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET,
+                    DesignPackage.ATOMIC_EXPRESSION_CONTEXT__VARIABLE,
+                    newVariable, newVariable ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public FilterExpressionArguments getArguments()
+    {
+        return m_arguments;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetArguments(
+            FilterExpressionArguments newArguments, NotificationChain msgs )
+    {
+        FilterExpressionArguments oldArguments = m_arguments;
+        m_arguments = newArguments;
+        if( eNotificationRequired() )
+        {
+            ENotificationImpl notification = new ENotificationImpl( this,
+                    Notification.SET,
+                    DesignPackage.ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS,
+                    oldArguments, newArguments );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setArguments( FilterExpressionArguments newArguments )
+    {
+        if( newArguments != m_arguments )
+        {
+            NotificationChain msgs = null;
+            if( m_arguments != null )
+                msgs = ((InternalEObject) m_arguments)
+                        .eInverseRemove(
+                                this,
+                                EOPPOSITE_FEATURE_BASE
+                                        - DesignPackage.ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS,
+                                null, msgs );
+            if( newArguments != null )
+                msgs = ((InternalEObject) newArguments)
+                        .eInverseAdd(
+                                this,
+                                EOPPOSITE_FEATURE_BASE
+                                        - DesignPackage.ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS,
+                                null, msgs );
+            msgs = basicSetArguments( newArguments, msgs );
+            if( msgs != null )
+                msgs.dispatch();
+        }
+        else if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET,
+                    DesignPackage.ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS,
+                    newArguments, newArguments ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd,
+            int featureID, NotificationChain msgs )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT__VARIABLE:
+            return basicSetVariable( null, msgs );
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS:
+            return basicSetArguments( 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 DesignPackage.ATOMIC_EXPRESSION_CONTEXT__VARIABLE:
+            return getVariable();
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS:
+            return getArguments();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT__VARIABLE:
+            setVariable( (FilterExpressionVariable) newValue );
+            return;
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS:
+            setArguments( (FilterExpressionArguments) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT__VARIABLE:
+            setVariable( (FilterExpressionVariable) null );
+            return;
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS:
+            setArguments( (FilterExpressionArguments) null );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT__VARIABLE:
+            return m_variable != null;
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS:
+            return m_arguments != null;
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //AtomicExpressionContextImpl
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/CompositeFilterExpressionImpl.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/CompositeFilterExpressionImpl.java
new file mode 100644
index 0000000..8d62797
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/CompositeFilterExpressionImpl.java
@@ -0,0 +1,204 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design.impl;
+
+import java.util.Collection;
+
+import org.eclipse.datatools.connectivity.oda.design.CompositeFilterExpression;
+import org.eclipse.datatools.connectivity.oda.design.DesignPackage;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpression;
+
+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;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>.
+ * </p>
+ * An implementation of the model object '<em><b>Composite Filter Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.CompositeFilterExpressionImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ * @since 3.2 (DTP 1.7)
+ */
+public class CompositeFilterExpressionImpl extends FilterExpressionImpl
+        implements CompositeFilterExpression
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getChildren()
+     * @generated
+     * @ordered
+     */
+    protected EList<FilterExpression> m_children;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected CompositeFilterExpressionImpl()
+    {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass()
+    {
+        return DesignPackage.Literals.COMPOSITE_FILTER_EXPRESSION;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EList<FilterExpression> getChildren()
+    {
+        if( m_children == null )
+        {
+            m_children = new EObjectContainmentEList<FilterExpression>(
+                    FilterExpression.class, this,
+                    DesignPackage.COMPOSITE_FILTER_EXPRESSION__CHILDREN );
+        }
+        return m_children;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd,
+            int featureID, NotificationChain msgs )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.COMPOSITE_FILTER_EXPRESSION__CHILDREN:
+            return ((InternalEList<?>) getChildren()).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 DesignPackage.COMPOSITE_FILTER_EXPRESSION__CHILDREN:
+            return getChildren();
+        }
+        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 DesignPackage.COMPOSITE_FILTER_EXPRESSION__CHILDREN:
+            getChildren().clear();
+            getChildren().addAll(
+                    (Collection<? extends FilterExpression>) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.COMPOSITE_FILTER_EXPRESSION__CHILDREN:
+            getChildren().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.COMPOSITE_FILTER_EXPRESSION__CHILDREN:
+            return m_children != null && !m_children.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.design.CompositeFilterExpression#add(org.eclipse.datatools.connectivity.oda.design.FilterExpression)
+     * @generated NOT
+     */
+    public void add( FilterExpression childExpr )
+    {
+        getChildren().add( childExpr );        
+    }
+
+} //CompositeFilterExpressionImpl
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DataSetDesignImpl.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DataSetDesignImpl.java
index 38075a4..4881416 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DataSetDesignImpl.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DataSetDesignImpl.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2007 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,7 +11,7 @@
  *  
  *************************************************************************
  *
- * $Id: DataSetDesignImpl.java,v 1.8 2006/05/23 02:04:33 lchan Exp $
+ * $Id: DataSetDesignImpl.java,v 1.9 2007/04/11 02:59:52 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design.impl;
 
@@ -22,6 +22,7 @@
 import org.eclipse.datatools.connectivity.oda.design.DataSourceDesign;
 import org.eclipse.datatools.connectivity.oda.design.DesignFactory;
 import org.eclipse.datatools.connectivity.oda.design.DesignPackage;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpression;
 import org.eclipse.datatools.connectivity.oda.design.Properties;
 import org.eclipse.datatools.connectivity.oda.design.ResultSetDefinition;
 import org.eclipse.datatools.connectivity.oda.design.ResultSets;
@@ -51,6 +52,7 @@
  *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.DataSetDesignImpl#getResultSets <em>Result Sets</em>}</li>
  *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.DataSetDesignImpl#getPrimaryResultSetName <em>Primary Result Set Name</em>}</li>
  *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.DataSetDesignImpl#getParameters <em>Parameters</em>}</li>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.DataSetDesignImpl#getFilter <em>Filter</em>}</li>
  * </ul>
  * </p>
  *
@@ -64,7 +66,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public static final String copyright = "Copyright (c) 2005, 2007 Actuate Corporation"; //$NON-NLS-1$
+    public static final String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
 
     /**
      * The default value of the '{@link #getName() <em>Name</em>}' attribute.
@@ -114,7 +116,7 @@
      * @generated
      * @ordered
      */
-    protected DataSourceDesign m_dataSourceDesign = null;
+    protected DataSourceDesign m_dataSourceDesign;
 
     /**
      * The cached value of the '{@link #getQuery() <em>Query</em>}' containment reference.
@@ -124,7 +126,7 @@
      * @generated
      * @ordered
      */
-    protected DataSetQuery m_query = null;
+    protected DataSetQuery m_query;
 
     /**
      * The default value of the '{@link #getDisplayName() <em>Display Name</em>}' attribute.
@@ -154,7 +156,7 @@
      * @generated
      * @ordered
      */
-    protected Properties m_publicProperties = null;
+    protected Properties m_publicProperties;
 
     /**
      * The cached value of the '{@link #getPrivateProperties() <em>Private Properties</em>}' containment reference.
@@ -164,7 +166,7 @@
      * @generated
      * @ordered
      */
-    protected Properties m_privateProperties = null;
+    protected Properties m_privateProperties;
 
     /**
      * The cached value of the '{@link #getResultSets() <em>Result Sets</em>}' containment reference.
@@ -174,7 +176,7 @@
      * @generated
      * @ordered
      */
-    protected ResultSets m_resultSets = null;
+    protected ResultSets m_resultSets;
 
     /**
      * The default value of the '{@link #getPrimaryResultSetName() <em>Primary Result Set Name</em>}' attribute.
@@ -204,7 +206,17 @@
      * @generated
      * @ordered
      */
-    protected DataSetParameters m_parameters = null;
+    protected DataSetParameters m_parameters;
+
+    /**
+     * The cached value of the '{@link #getFilter() <em>Filter</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getFilter()
+     * @generated
+     * @ordered
+     */
+    protected FilterExpression m_filter;
 
     /**
      * <!-- begin-user-doc -->
@@ -221,6 +233,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     protected EClass eStaticClass()
     {
         return DesignPackage.Literals.DATA_SET_DESIGN;
@@ -809,9 +822,78 @@
 
     /**
      * <!-- begin-user-doc -->
+     * <strong>EXPERIMENTAL</strong>.
+     * <!-- end-user-doc -->
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    public FilterExpression getFilter()
+    {
+        return m_filter;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <strong>EXPERIMENTAL</strong>.
+     * <!-- end-user-doc -->
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    public NotificationChain basicSetFilter( FilterExpression newFilter,
+            NotificationChain msgs )
+    {
+        FilterExpression oldFilter = m_filter;
+        m_filter = newFilter;
+        if( eNotificationRequired() )
+        {
+            ENotificationImpl notification = new ENotificationImpl( this,
+                    Notification.SET, DesignPackage.DATA_SET_DESIGN__FILTER,
+                    oldFilter, newFilter );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <strong>EXPERIMENTAL</strong>.
+     * <!-- end-user-doc -->
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    public void setFilter( FilterExpression newFilter )
+    {
+        if( newFilter != m_filter )
+        {
+            NotificationChain msgs = null;
+            if( m_filter != null )
+                msgs = ((InternalEObject) m_filter).eInverseRemove( this,
+                        EOPPOSITE_FEATURE_BASE
+                                - DesignPackage.DATA_SET_DESIGN__FILTER, null,
+                        msgs );
+            if( newFilter != null )
+                msgs = ((InternalEObject) newFilter).eInverseAdd( this,
+                        EOPPOSITE_FEATURE_BASE
+                                - DesignPackage.DATA_SET_DESIGN__FILTER, null,
+                        msgs );
+            msgs = basicSetFilter( newFilter, msgs );
+            if( msgs != null )
+                msgs.dispatch();
+        }
+        else if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET,
+                    DesignPackage.DATA_SET_DESIGN__FILTER, newFilter, newFilter ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public NotificationChain eInverseRemove( InternalEObject otherEnd,
             int featureID, NotificationChain msgs )
     {
@@ -829,6 +911,8 @@
             return basicSetResultSets( null, msgs );
         case DesignPackage.DATA_SET_DESIGN__PARAMETERS:
             return basicSetParameters( null, msgs );
+        case DesignPackage.DATA_SET_DESIGN__FILTER:
+            return basicSetFilter( null, msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -838,6 +922,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType )
     {
         switch( featureID )
@@ -862,6 +947,8 @@
             return getPrimaryResultSetName();
         case DesignPackage.DATA_SET_DESIGN__PARAMETERS:
             return getParameters();
+        case DesignPackage.DATA_SET_DESIGN__FILTER:
+            return getFilter();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -871,6 +958,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public void eSet( int featureID, Object newValue )
     {
         switch( featureID )
@@ -905,6 +993,9 @@
         case DesignPackage.DATA_SET_DESIGN__PARAMETERS:
             setParameters( (DataSetParameters) newValue );
             return;
+        case DesignPackage.DATA_SET_DESIGN__FILTER:
+            setFilter( (FilterExpression) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -914,6 +1005,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public void eUnset( int featureID )
     {
         switch( featureID )
@@ -948,6 +1040,9 @@
         case DesignPackage.DATA_SET_DESIGN__PARAMETERS:
             setParameters( (DataSetParameters) null );
             return;
+        case DesignPackage.DATA_SET_DESIGN__FILTER:
+            setFilter( (FilterExpression) null );
+            return;
         }
         super.eUnset( featureID );
     }
@@ -957,6 +1052,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public boolean eIsSet( int featureID )
     {
         switch( featureID )
@@ -987,6 +1083,8 @@
                             .equals( m_primaryResultSetName );
         case DesignPackage.DATA_SET_DESIGN__PARAMETERS:
             return m_parameters != null;
+        case DesignPackage.DATA_SET_DESIGN__FILTER:
+            return m_filter != null;
         }
         return super.eIsSet( featureID );
     }
@@ -996,6 +1094,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public String toString()
     {
         if( eIsProxy() )
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DesignFactoryImpl.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DesignFactoryImpl.java
index 8e64614..da3d4d3 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DesignFactoryImpl.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DesignFactoryImpl.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2008 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,15 +11,17 @@
  *  
  *************************************************************************
  *
- * $Id: DesignFactoryImpl.java,v 1.7 2007/04/11 02:59:52 lchan Exp $
+ * $Id: DesignFactoryImpl.java,v 1.8 2008/07/23 04:12:27 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design.impl;
 
-import org.eclipse.datatools.connectivity.oda.design.*;
-
+import org.eclipse.datatools.connectivity.oda.design.AndExpression;
+import org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext;
 import org.eclipse.datatools.connectivity.oda.design.AxisAttributes;
 import org.eclipse.datatools.connectivity.oda.design.AxisType;
 import org.eclipse.datatools.connectivity.oda.design.ColumnDefinition;
+import org.eclipse.datatools.connectivity.oda.design.CompositeFilterExpression;
+import org.eclipse.datatools.connectivity.oda.design.CustomExpression;
 import org.eclipse.datatools.connectivity.oda.design.DataAccessDesign;
 import org.eclipse.datatools.connectivity.oda.design.DataElementAttributes;
 import org.eclipse.datatools.connectivity.oda.design.DataElementUIHints;
@@ -34,8 +36,14 @@
 import org.eclipse.datatools.connectivity.oda.design.DesignerState;
 import org.eclipse.datatools.connectivity.oda.design.DesignerStateContent;
 import org.eclipse.datatools.connectivity.oda.design.DocumentRoot;
+import org.eclipse.datatools.connectivity.oda.design.DynamicExpression;
 import org.eclipse.datatools.connectivity.oda.design.DynamicValuesQuery;
 import org.eclipse.datatools.connectivity.oda.design.ElementNullability;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpressionArguments;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable;
+import org.eclipse.datatools.connectivity.oda.design.FilterParameterDefinition;
+import org.eclipse.datatools.connectivity.oda.design.FilterParameters;
+import org.eclipse.datatools.connectivity.oda.design.FilterVariableType;
 import org.eclipse.datatools.connectivity.oda.design.HorizontalAlignment;
 import org.eclipse.datatools.connectivity.oda.design.InputElementAttributes;
 import org.eclipse.datatools.connectivity.oda.design.InputElementUIHints;
@@ -44,9 +52,11 @@
 import org.eclipse.datatools.connectivity.oda.design.InputPromptControlStyle;
 import org.eclipse.datatools.connectivity.oda.design.Locale;
 import org.eclipse.datatools.connectivity.oda.design.NameValuePair;
+import org.eclipse.datatools.connectivity.oda.design.NotExpression;
 import org.eclipse.datatools.connectivity.oda.design.OdaComplexDataType;
 import org.eclipse.datatools.connectivity.oda.design.OdaDesignSession;
 import org.eclipse.datatools.connectivity.oda.design.OdaScalarDataType;
+import org.eclipse.datatools.connectivity.oda.design.OrExpression;
 import org.eclipse.datatools.connectivity.oda.design.OutputElementAttributes;
 import org.eclipse.datatools.connectivity.oda.design.ParameterDefinition;
 import org.eclipse.datatools.connectivity.oda.design.ParameterFieldDefinition;
@@ -55,6 +65,7 @@
 import org.eclipse.datatools.connectivity.oda.design.Properties;
 import org.eclipse.datatools.connectivity.oda.design.Property;
 import org.eclipse.datatools.connectivity.oda.design.PropertyAttributes;
+import org.eclipse.datatools.connectivity.oda.design.ResourceIdentifiers;
 import org.eclipse.datatools.connectivity.oda.design.ResultSetColumns;
 import org.eclipse.datatools.connectivity.oda.design.ResultSetDefinition;
 import org.eclipse.datatools.connectivity.oda.design.ResultSets;
@@ -64,15 +75,12 @@
 import org.eclipse.datatools.connectivity.oda.design.TextFormatType;
 import org.eclipse.datatools.connectivity.oda.design.TextWrapType;
 import org.eclipse.datatools.connectivity.oda.design.ValueFormatHints;
-import org.eclipse.emf.common.util.AbstractEnumerator;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EDataType;
 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.emf.ecore.xml.type.XMLTypeFactory;
-import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -87,7 +95,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public static final String copyright = "Copyright (c) 2005, 2008 Actuate Corporation"; //$NON-NLS-1$
+    public static final String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
 
     /**
      * Creates the default factory implementation.
@@ -129,14 +137,23 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public EObject create( EClass eClass )
     {
         switch( eClass.getClassifierID() )
         {
+        case DesignPackage.AND_EXPRESSION:
+            return createAndExpression();
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT:
+            return createAtomicExpressionContext();
         case DesignPackage.AXIS_ATTRIBUTES:
             return createAxisAttributes();
         case DesignPackage.COLUMN_DEFINITION:
             return createColumnDefinition();
+        case DesignPackage.COMPOSITE_FILTER_EXPRESSION:
+            return createCompositeFilterExpression();
+        case DesignPackage.CUSTOM_EXPRESSION:
+            return createCustomExpression();
         case DesignPackage.DATA_ACCESS_DESIGN:
             return createDataAccessDesign();
         case DesignPackage.DATA_ELEMENT_ATTRIBUTES:
@@ -161,8 +178,18 @@
             return createDesignSessionResponse();
         case DesignPackage.DOCUMENT_ROOT:
             return createDocumentRoot();
+        case DesignPackage.DYNAMIC_EXPRESSION:
+            return createDynamicExpression();
         case DesignPackage.DYNAMIC_VALUES_QUERY:
             return createDynamicValuesQuery();
+        case DesignPackage.FILTER_EXPRESSION_ARGUMENTS:
+            return createFilterExpressionArguments();
+        case DesignPackage.FILTER_EXPRESSION_VARIABLE:
+            return createFilterExpressionVariable();
+        case DesignPackage.FILTER_PARAMETER_DEFINITION:
+            return createFilterParameterDefinition();
+        case DesignPackage.FILTER_PARAMETERS:
+            return createFilterParameters();
         case DesignPackage.INPUT_ELEMENT_ATTRIBUTES:
             return createInputElementAttributes();
         case DesignPackage.INPUT_ELEMENT_UI_HINTS:
@@ -175,8 +202,12 @@
             return createLocale();
         case DesignPackage.NAME_VALUE_PAIR:
             return createNameValuePair();
+        case DesignPackage.NOT_EXPRESSION:
+            return createNotExpression();
         case DesignPackage.ODA_DESIGN_SESSION:
             return createOdaDesignSession();
+        case DesignPackage.OR_EXPRESSION:
+            return createOrExpression();
         case DesignPackage.OUTPUT_ELEMENT_ATTRIBUTES:
             return createOutputElementAttributes();
         case DesignPackage.PARAMETER_DEFINITION:
@@ -216,6 +247,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public Object createFromString( EDataType eDataType, String initialValue )
     {
         switch( eDataType.getClassifierID() )
@@ -224,6 +256,8 @@
             return createAxisTypeFromString( eDataType, initialValue );
         case DesignPackage.ELEMENT_NULLABILITY:
             return createElementNullabilityFromString( eDataType, initialValue );
+        case DesignPackage.FILTER_VARIABLE_TYPE:
+            return createFilterVariableTypeFromString( eDataType, initialValue );
         case DesignPackage.HORIZONTAL_ALIGNMENT:
             return createHorizontalAlignmentFromString( eDataType, initialValue );
         case DesignPackage.INPUT_PROMPT_CONTROL_STYLE:
@@ -246,6 +280,9 @@
         case DesignPackage.ELEMENT_NULLABILITY_OBJECT:
             return createElementNullabilityObjectFromString( eDataType,
                     initialValue );
+        case DesignPackage.FILTER_VARIABLE_TYPE_OBJECT:
+            return createFilterVariableTypeObjectFromString( eDataType,
+                    initialValue );
         case DesignPackage.HORIZONTAL_ALIGNMENT_OBJECT:
             return createHorizontalAlignmentObjectFromString( eDataType,
                     initialValue );
@@ -278,6 +315,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public String convertToString( EDataType eDataType, Object instanceValue )
     {
         switch( eDataType.getClassifierID() )
@@ -286,6 +324,8 @@
             return convertAxisTypeToString( eDataType, instanceValue );
         case DesignPackage.ELEMENT_NULLABILITY:
             return convertElementNullabilityToString( eDataType, instanceValue );
+        case DesignPackage.FILTER_VARIABLE_TYPE:
+            return convertFilterVariableTypeToString( eDataType, instanceValue );
         case DesignPackage.HORIZONTAL_ALIGNMENT:
             return convertHorizontalAlignmentToString( eDataType, instanceValue );
         case DesignPackage.INPUT_PROMPT_CONTROL_STYLE:
@@ -308,6 +348,9 @@
         case DesignPackage.ELEMENT_NULLABILITY_OBJECT:
             return convertElementNullabilityObjectToString( eDataType,
                     instanceValue );
+        case DesignPackage.FILTER_VARIABLE_TYPE_OBJECT:
+            return convertFilterVariableTypeObjectToString( eDataType,
+                    instanceValue );
         case DesignPackage.HORIZONTAL_ALIGNMENT_OBJECT:
             return convertHorizontalAlignmentObjectToString( eDataType,
                     instanceValue );
@@ -340,6 +383,28 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public AndExpression createAndExpression()
+    {
+        AndExpressionImpl andExpression = new AndExpressionImpl();
+        return andExpression;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AtomicExpressionContext createAtomicExpressionContext()
+    {
+        AtomicExpressionContextImpl atomicExpressionContext = new AtomicExpressionContextImpl();
+        return atomicExpressionContext;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public AxisAttributes createAxisAttributes()
     {
         AxisAttributesImpl axisAttributes = new AxisAttributesImpl();
@@ -362,6 +427,28 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public CompositeFilterExpression createCompositeFilterExpression()
+    {
+        CompositeFilterExpressionImpl compositeFilterExpression = new CompositeFilterExpressionImpl();
+        return compositeFilterExpression;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public CustomExpression createCustomExpression()
+    {
+        CustomExpressionImpl customExpression = new CustomExpressionImpl();
+        return customExpression;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public DataAccessDesign createDataAccessDesign()
     {
         DataAccessDesignImpl dataAccessDesign = new DataAccessDesignImpl();
@@ -494,6 +581,17 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public DynamicExpression createDynamicExpression()
+    {
+        DynamicExpressionImpl dynamicExpression = new DynamicExpressionImpl();
+        return dynamicExpression;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public DynamicValuesQuery createDynamicValuesQuery()
     {
         DynamicValuesQueryImpl dynamicValuesQuery = new DynamicValuesQueryImpl();
@@ -505,6 +603,50 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public FilterExpressionArguments createFilterExpressionArguments()
+    {
+        FilterExpressionArgumentsImpl filterExpressionArguments = new FilterExpressionArgumentsImpl();
+        return filterExpressionArguments;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public FilterExpressionVariable createFilterExpressionVariable()
+    {
+        FilterExpressionVariableImpl filterExpressionVariable = new FilterExpressionVariableImpl();
+        return filterExpressionVariable;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public FilterParameterDefinition createFilterParameterDefinition()
+    {
+        FilterParameterDefinitionImpl filterParameterDefinition = new FilterParameterDefinitionImpl();
+        return filterParameterDefinition;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public FilterParameters createFilterParameters()
+    {
+        FilterParametersImpl filterParameters = new FilterParametersImpl();
+        return filterParameters;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public InputElementAttributes createInputElementAttributes()
     {
         InputElementAttributesImpl inputElementAttributes = new InputElementAttributesImpl();
@@ -571,6 +713,17 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public NotExpression createNotExpression()
+    {
+        NotExpressionImpl notExpression = new NotExpressionImpl();
+        return notExpression;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public OdaDesignSession createOdaDesignSession()
     {
         OdaDesignSessionImpl odaDesignSession = new OdaDesignSessionImpl();
@@ -582,6 +735,17 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public OrExpression createOrExpression()
+    {
+        OrExpressionImpl orExpression = new OrExpressionImpl();
+        return orExpression;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public OutputElementAttributes createOutputElementAttributes()
     {
         OutputElementAttributesImpl outputElementAttributes = new OutputElementAttributesImpl();
@@ -788,6 +952,32 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public FilterVariableType createFilterVariableTypeFromString(
+            EDataType eDataType, String initialValue )
+    {
+        FilterVariableType result = FilterVariableType.get( initialValue );
+        if( result == null )
+            throw new IllegalArgumentException(
+                    "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'" ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertFilterVariableTypeToString( EDataType eDataType,
+            Object instanceValue )
+    {
+        return instanceValue == null ? null : instanceValue.toString();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public HorizontalAlignment createHorizontalAlignmentFromString(
             EDataType eDataType, String initialValue )
     {
@@ -997,11 +1187,11 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public AbstractEnumerator createAxisTypeObjectFromString(
-            EDataType eDataType, String initialValue )
+    public AxisType createAxisTypeObjectFromString( EDataType eDataType,
+            String initialValue )
     {
-        return (AbstractEnumerator) createAxisTypeFromString(
-                DesignPackage.Literals.AXIS_TYPE, initialValue );
+        return createAxisTypeFromString( DesignPackage.Literals.AXIS_TYPE,
+                initialValue );
     }
 
     /**
@@ -1021,10 +1211,10 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public AbstractEnumerator createElementNullabilityObjectFromString(
+    public ElementNullability createElementNullabilityObjectFromString(
             EDataType eDataType, String initialValue )
     {
-        return (AbstractEnumerator) createElementNullabilityFromString(
+        return createElementNullabilityFromString(
                 DesignPackage.Literals.ELEMENT_NULLABILITY, initialValue );
     }
 
@@ -1045,10 +1235,34 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public AbstractEnumerator createHorizontalAlignmentObjectFromString(
+    public FilterVariableType createFilterVariableTypeObjectFromString(
             EDataType eDataType, String initialValue )
     {
-        return (AbstractEnumerator) createHorizontalAlignmentFromString(
+        return createFilterVariableTypeFromString(
+                DesignPackage.Literals.FILTER_VARIABLE_TYPE, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertFilterVariableTypeObjectToString( EDataType eDataType,
+            Object instanceValue )
+    {
+        return convertFilterVariableTypeToString(
+                DesignPackage.Literals.FILTER_VARIABLE_TYPE, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public HorizontalAlignment createHorizontalAlignmentObjectFromString(
+            EDataType eDataType, String initialValue )
+    {
+        return createHorizontalAlignmentFromString(
                 DesignPackage.Literals.HORIZONTAL_ALIGNMENT, initialValue );
     }
 
@@ -1069,10 +1283,10 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public AbstractEnumerator createInputPromptControlStyleObjectFromString(
+    public InputPromptControlStyle createInputPromptControlStyleObjectFromString(
             EDataType eDataType, String initialValue )
     {
-        return (AbstractEnumerator) createInputPromptControlStyleFromString(
+        return createInputPromptControlStyleFromString(
                 DesignPackage.Literals.INPUT_PROMPT_CONTROL_STYLE, initialValue );
     }
 
@@ -1094,10 +1308,10 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public AbstractEnumerator createOdaComplexDataTypeObjectFromString(
+    public OdaComplexDataType createOdaComplexDataTypeObjectFromString(
             EDataType eDataType, String initialValue )
     {
-        return (AbstractEnumerator) createOdaComplexDataTypeFromString(
+        return createOdaComplexDataTypeFromString(
                 DesignPackage.Literals.ODA_COMPLEX_DATA_TYPE, initialValue );
     }
 
@@ -1118,10 +1332,10 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public AbstractEnumerator createOdaScalarDataTypeObjectFromString(
+    public OdaScalarDataType createOdaScalarDataTypeObjectFromString(
             EDataType eDataType, String initialValue )
     {
-        return (AbstractEnumerator) createOdaScalarDataTypeFromString(
+        return createOdaScalarDataTypeFromString(
                 DesignPackage.Literals.ODA_SCALAR_DATA_TYPE, initialValue );
     }
 
@@ -1142,10 +1356,10 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public AbstractEnumerator createParameterModeObjectFromString(
+    public ParameterMode createParameterModeObjectFromString(
             EDataType eDataType, String initialValue )
     {
-        return (AbstractEnumerator) createParameterModeFromString(
+        return createParameterModeFromString(
                 DesignPackage.Literals.PARAMETER_MODE, initialValue );
     }
 
@@ -1166,10 +1380,10 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public AbstractEnumerator createSessionStatusObjectFromString(
+    public SessionStatus createSessionStatusObjectFromString(
             EDataType eDataType, String initialValue )
     {
-        return (AbstractEnumerator) createSessionStatusFromString(
+        return createSessionStatusFromString(
                 DesignPackage.Literals.SESSION_STATUS, initialValue );
     }
 
@@ -1190,10 +1404,10 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public AbstractEnumerator createTextFormatTypeObjectFromString(
+    public TextFormatType createTextFormatTypeObjectFromString(
             EDataType eDataType, String initialValue )
     {
-        return (AbstractEnumerator) createTextFormatTypeFromString(
+        return createTextFormatTypeFromString(
                 DesignPackage.Literals.TEXT_FORMAT_TYPE, initialValue );
     }
 
@@ -1214,10 +1428,10 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public AbstractEnumerator createTextWrapTypeObjectFromString(
+    public TextWrapType createTextWrapTypeObjectFromString(
             EDataType eDataType, String initialValue )
     {
-        return (AbstractEnumerator) createTextWrapTypeFromString(
+        return createTextWrapTypeFromString(
                 DesignPackage.Literals.TEXT_WRAP_TYPE, initialValue );
     }
 
@@ -1249,6 +1463,7 @@
      * @deprecated
      * @generated
      */
+    @Deprecated
     public static DesignPackage getPackage()
     {
         return DesignPackage.eINSTANCE;
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DesignPackageImpl.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DesignPackageImpl.java
index 3b64e26..a13ab85 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DesignPackageImpl.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/DesignPackageImpl.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2008 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,13 +11,17 @@
  *  
  *************************************************************************
  *
- * $Id: DesignPackageImpl.java,v 1.7 2007/04/11 02:59:52 lchan Exp $
+ * $Id: DesignPackageImpl.java,v 1.8 2008/07/23 04:12:27 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design.impl;
 
+import org.eclipse.datatools.connectivity.oda.design.AndExpression;
+import org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext;
 import org.eclipse.datatools.connectivity.oda.design.AxisAttributes;
 import org.eclipse.datatools.connectivity.oda.design.AxisType;
 import org.eclipse.datatools.connectivity.oda.design.ColumnDefinition;
+import org.eclipse.datatools.connectivity.oda.design.CompositeFilterExpression;
+import org.eclipse.datatools.connectivity.oda.design.CustomExpression;
 import org.eclipse.datatools.connectivity.oda.design.DataAccessDesign;
 import org.eclipse.datatools.connectivity.oda.design.DataElementAttributes;
 import org.eclipse.datatools.connectivity.oda.design.DataElementUIHints;
@@ -32,8 +36,15 @@
 import org.eclipse.datatools.connectivity.oda.design.DesignerState;
 import org.eclipse.datatools.connectivity.oda.design.DesignerStateContent;
 import org.eclipse.datatools.connectivity.oda.design.DocumentRoot;
+import org.eclipse.datatools.connectivity.oda.design.DynamicExpression;
 import org.eclipse.datatools.connectivity.oda.design.DynamicValuesQuery;
 import org.eclipse.datatools.connectivity.oda.design.ElementNullability;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpression;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpressionArguments;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable;
+import org.eclipse.datatools.connectivity.oda.design.FilterParameterDefinition;
+import org.eclipse.datatools.connectivity.oda.design.FilterParameters;
+import org.eclipse.datatools.connectivity.oda.design.FilterVariableType;
 import org.eclipse.datatools.connectivity.oda.design.HorizontalAlignment;
 import org.eclipse.datatools.connectivity.oda.design.InputElementAttributes;
 import org.eclipse.datatools.connectivity.oda.design.InputElementUIHints;
@@ -42,9 +53,11 @@
 import org.eclipse.datatools.connectivity.oda.design.InputPromptControlStyle;
 import org.eclipse.datatools.connectivity.oda.design.Locale;
 import org.eclipse.datatools.connectivity.oda.design.NameValuePair;
+import org.eclipse.datatools.connectivity.oda.design.NotExpression;
 import org.eclipse.datatools.connectivity.oda.design.OdaComplexDataType;
 import org.eclipse.datatools.connectivity.oda.design.OdaDesignSession;
 import org.eclipse.datatools.connectivity.oda.design.OdaScalarDataType;
+import org.eclipse.datatools.connectivity.oda.design.OrExpression;
 import org.eclipse.datatools.connectivity.oda.design.OutputElementAttributes;
 import org.eclipse.datatools.connectivity.oda.design.ParameterDefinition;
 import org.eclipse.datatools.connectivity.oda.design.ParameterFieldDefinition;
@@ -63,7 +76,6 @@
 import org.eclipse.datatools.connectivity.oda.design.TextFormatType;
 import org.eclipse.datatools.connectivity.oda.design.TextWrapType;
 import org.eclipse.datatools.connectivity.oda.design.ValueFormatHints;
-import org.eclipse.emf.common.util.AbstractEnumerator;
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EDataType;
@@ -86,7 +98,21 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public static final String copyright = "Copyright (c) 2005, 2008 Actuate Corporation"; //$NON-NLS-1$
+    public static final String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass andExpressionEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass atomicExpressionContextEClass = null;
 
     /**
      * <!-- begin-user-doc -->
@@ -107,6 +133,20 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    private EClass compositeFilterExpressionEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass customExpressionEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     private EClass dataAccessDesignEClass = null;
 
     /**
@@ -191,6 +231,13 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    private EClass dynamicExpressionEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     private EClass dynamicValuesQueryEClass = null;
 
     /**
@@ -198,6 +245,41 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    private EClass filterExpressionEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass filterExpressionArgumentsEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass filterExpressionVariableEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass filterParameterDefinitionEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass filterParametersEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     private EClass inputElementAttributesEClass = null;
 
     /**
@@ -240,6 +322,13 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    private EClass notExpressionEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     private EClass odaDesignSessionEClass = null;
 
     /**
@@ -247,6 +336,13 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    private EClass orExpressionEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     private EClass outputElementAttributesEClass = null;
 
     /**
@@ -359,6 +455,13 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    private EEnum filterVariableTypeEEnum = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     private EEnum horizontalAlignmentEEnum = null;
 
     /**
@@ -429,6 +532,13 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    private EDataType filterVariableTypeObjectEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     private EDataType horizontalAlignmentObjectEDataType = null;
 
     /**
@@ -563,6 +673,48 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EClass getAndExpression()
+    {
+        return andExpressionEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EClass getAtomicExpressionContext()
+    {
+        return atomicExpressionContextEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EReference getAtomicExpressionContext_Variable()
+    {
+        return (EReference) atomicExpressionContextEClass
+                .getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EReference getAtomicExpressionContext_Arguments()
+    {
+        return (EReference) atomicExpressionContextEClass
+                .getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public EClass getAxisAttributes()
     {
         return axisAttributesEClass;
@@ -638,6 +790,70 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EClass getCompositeFilterExpression()
+    {
+        return compositeFilterExpressionEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EReference getCompositeFilterExpression_Children()
+    {
+        return (EReference) compositeFilterExpressionEClass
+                .getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EClass getCustomExpression()
+    {
+        return customExpressionEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EAttribute getCustomExpression_DeclaringExtensionId()
+    {
+        return (EAttribute) customExpressionEClass.getEStructuralFeatures()
+                .get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EAttribute getCustomExpression_Id()
+    {
+        return (EAttribute) customExpressionEClass.getEStructuralFeatures()
+                .get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EReference getCustomExpression_Context()
+    {
+        return (EReference) customExpressionEClass.getEStructuralFeatures()
+                .get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public EClass getDataAccessDesign()
     {
         return dataAccessDesignEClass;
@@ -898,6 +1114,17 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EReference getDataSetDesign_Filter()
+    {
+        return (EReference) dataSetDesignEClass.getEStructuralFeatures().get(
+                10 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public EClass getDataSetParameters()
     {
         return dataSetParametersEClass;
@@ -1270,6 +1497,27 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EClass getDynamicExpression()
+    {
+        return dynamicExpressionEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EReference getDynamicExpression_ContextVariable()
+    {
+        return (EReference) dynamicExpressionEClass.getEStructuralFeatures()
+                .get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public EClass getDynamicValuesQuery()
     {
         return dynamicValuesQueryEClass;
@@ -1324,6 +1572,144 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EClass getFilterExpression()
+    {
+        return filterExpressionEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EAttribute getFilterExpression_Negatable()
+    {
+        return (EAttribute) filterExpressionEClass.getEStructuralFeatures()
+                .get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EClass getFilterExpressionArguments()
+    {
+        return filterExpressionArgumentsEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EReference getFilterExpressionArguments_FilterParameters()
+    {
+        return (EReference) filterExpressionArgumentsEClass
+                .getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EClass getFilterExpressionVariable()
+    {
+        return filterExpressionVariableEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EAttribute getFilterExpressionVariable_Type()
+    {
+        return (EAttribute) filterExpressionVariableEClass
+                .getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EAttribute getFilterExpressionVariable_Identifier()
+    {
+        return (EAttribute) filterExpressionVariableEClass
+                .getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EAttribute getFilterExpressionVariable_NativeDataTypeCode()
+    {
+        return (EAttribute) filterExpressionVariableEClass
+                .getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EClass getFilterParameterDefinition()
+    {
+        return filterParameterDefinitionEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EAttribute getFilterParameterDefinition_StaticValue()
+    {
+        return (EAttribute) filterParameterDefinitionEClass
+                .getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EReference getFilterParameterDefinition_DynamicInputParameter()
+    {
+        return (EReference) filterParameterDefinitionEClass
+                .getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EClass getFilterParameters()
+    {
+        return filterParametersEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EReference getFilterParameters_ParameterDefinitions()
+    {
+        return (EReference) filterParametersEClass.getEStructuralFeatures()
+                .get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public EClass getInputElementAttributes()
     {
         return inputElementAttributesEClass;
@@ -1432,6 +1818,17 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EAttribute getInputElementUIHints_AutoSuggestThreshold()
+    {
+        return (EAttribute) inputElementUIHintsEClass.getEStructuralFeatures()
+                .get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public EClass getInputParameterAttributes()
     {
         return inputParameterAttributesEClass;
@@ -1557,6 +1954,27 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EClass getNotExpression()
+    {
+        return notExpressionEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EReference getNotExpression_NegatingExpression()
+    {
+        return (EReference) notExpressionEClass.getEStructuralFeatures()
+                .get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public EClass getOdaDesignSession()
     {
         return odaDesignSessionEClass;
@@ -1589,6 +2007,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EClass getOrExpression()
+    {
+        return orExpressionEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public EClass getOutputElementAttributes()
     {
         return outputElementAttributesEClass;
@@ -2107,6 +2535,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EEnum getFilterVariableType()
+    {
+        return filterVariableTypeEEnum;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public EEnum getHorizontalAlignment()
     {
         return horizontalAlignmentEEnum;
@@ -2207,6 +2645,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EDataType getFilterVariableTypeObject()
+    {
+        return filterVariableTypeObjectEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public EDataType getHorizontalAlignmentObject()
     {
         return horizontalAlignmentObjectEDataType;
@@ -2313,6 +2761,14 @@
         isCreated = true;
 
         // Create classes and their features
+        andExpressionEClass = createEClass( AND_EXPRESSION );
+
+        atomicExpressionContextEClass = createEClass( ATOMIC_EXPRESSION_CONTEXT );
+        createEReference( atomicExpressionContextEClass,
+                ATOMIC_EXPRESSION_CONTEXT__VARIABLE );
+        createEReference( atomicExpressionContextEClass,
+                ATOMIC_EXPRESSION_CONTEXT__ARGUMENTS );
+
         axisAttributesEClass = createEClass( AXIS_ATTRIBUTES );
         createEAttribute( axisAttributesEClass, AXIS_ATTRIBUTES__AXIS_TYPE );
         createEAttribute( axisAttributesEClass,
@@ -2325,6 +2781,16 @@
         createEReference( columnDefinitionEClass,
                 COLUMN_DEFINITION__MULTI_DIMENSION_ATTRIBUTES );
 
+        compositeFilterExpressionEClass = createEClass( COMPOSITE_FILTER_EXPRESSION );
+        createEReference( compositeFilterExpressionEClass,
+                COMPOSITE_FILTER_EXPRESSION__CHILDREN );
+
+        customExpressionEClass = createEClass( CUSTOM_EXPRESSION );
+        createEAttribute( customExpressionEClass,
+                CUSTOM_EXPRESSION__DECLARING_EXTENSION_ID );
+        createEAttribute( customExpressionEClass, CUSTOM_EXPRESSION__ID );
+        createEReference( customExpressionEClass, CUSTOM_EXPRESSION__CONTEXT );
+
         dataAccessDesignEClass = createEClass( DATA_ACCESS_DESIGN );
         createEReference( dataAccessDesignEClass,
                 DATA_ACCESS_DESIGN__DATA_SET_DESIGN );
@@ -2367,6 +2833,7 @@
         createEAttribute( dataSetDesignEClass,
                 DATA_SET_DESIGN__PRIMARY_RESULT_SET_NAME );
         createEReference( dataSetDesignEClass, DATA_SET_DESIGN__PARAMETERS );
+        createEReference( dataSetDesignEClass, DATA_SET_DESIGN__FILTER );
 
         dataSetParametersEClass = createEClass( DATA_SET_PARAMETERS );
         createEReference( dataSetParametersEClass,
@@ -2431,6 +2898,10 @@
                 DOCUMENT_ROOT__XSI_SCHEMA_LOCATION );
         createEReference( documentRootEClass, DOCUMENT_ROOT__ODA_DESIGN_SESSION );
 
+        dynamicExpressionEClass = createEClass( DYNAMIC_EXPRESSION );
+        createEReference( dynamicExpressionEClass,
+                DYNAMIC_EXPRESSION__CONTEXT_VARIABLE );
+
         dynamicValuesQueryEClass = createEClass( DYNAMIC_VALUES_QUERY );
         createEReference( dynamicValuesQueryEClass,
                 DYNAMIC_VALUES_QUERY__DATA_SET_DESIGN );
@@ -2441,6 +2912,31 @@
         createEAttribute( dynamicValuesQueryEClass,
                 DYNAMIC_VALUES_QUERY__DISPLAY_NAME_COLUMN );
 
+        filterExpressionEClass = createEClass( FILTER_EXPRESSION );
+        createEAttribute( filterExpressionEClass, FILTER_EXPRESSION__NEGATABLE );
+
+        filterExpressionArgumentsEClass = createEClass( FILTER_EXPRESSION_ARGUMENTS );
+        createEReference( filterExpressionArgumentsEClass,
+                FILTER_EXPRESSION_ARGUMENTS__FILTER_PARAMETERS );
+
+        filterExpressionVariableEClass = createEClass( FILTER_EXPRESSION_VARIABLE );
+        createEAttribute( filterExpressionVariableEClass,
+                FILTER_EXPRESSION_VARIABLE__TYPE );
+        createEAttribute( filterExpressionVariableEClass,
+                FILTER_EXPRESSION_VARIABLE__IDENTIFIER );
+        createEAttribute( filterExpressionVariableEClass,
+                FILTER_EXPRESSION_VARIABLE__NATIVE_DATA_TYPE_CODE );
+
+        filterParameterDefinitionEClass = createEClass( FILTER_PARAMETER_DEFINITION );
+        createEAttribute( filterParameterDefinitionEClass,
+                FILTER_PARAMETER_DEFINITION__STATIC_VALUE );
+        createEReference( filterParameterDefinitionEClass,
+                FILTER_PARAMETER_DEFINITION__DYNAMIC_INPUT_PARAMETER );
+
+        filterParametersEClass = createEClass( FILTER_PARAMETERS );
+        createEReference( filterParametersEClass,
+                FILTER_PARAMETERS__PARAMETER_DEFINITIONS );
+
         inputElementAttributesEClass = createEClass( INPUT_ELEMENT_ATTRIBUTES );
         createEAttribute( inputElementAttributesEClass,
                 INPUT_ELEMENT_ATTRIBUTES__DEFAULT_SCALAR_VALUE );
@@ -2460,6 +2956,8 @@
         inputElementUIHintsEClass = createEClass( INPUT_ELEMENT_UI_HINTS );
         createEAttribute( inputElementUIHintsEClass,
                 INPUT_ELEMENT_UI_HINTS__PROMPT_STYLE );
+        createEAttribute( inputElementUIHintsEClass,
+                INPUT_ELEMENT_UI_HINTS__AUTO_SUGGEST_THRESHOLD );
 
         inputParameterAttributesEClass = createEClass( INPUT_PARAMETER_ATTRIBUTES );
         createEReference( inputParameterAttributesEClass,
@@ -2480,10 +2978,16 @@
         createEAttribute( nameValuePairEClass, NAME_VALUE_PAIR__NAME );
         createEAttribute( nameValuePairEClass, NAME_VALUE_PAIR__VALUE );
 
+        notExpressionEClass = createEClass( NOT_EXPRESSION );
+        createEReference( notExpressionEClass,
+                NOT_EXPRESSION__NEGATING_EXPRESSION );
+
         odaDesignSessionEClass = createEClass( ODA_DESIGN_SESSION );
         createEReference( odaDesignSessionEClass, ODA_DESIGN_SESSION__REQUEST );
         createEReference( odaDesignSessionEClass, ODA_DESIGN_SESSION__RESPONSE );
 
+        orExpressionEClass = createEClass( OR_EXPRESSION );
+
         outputElementAttributesEClass = createEClass( OUTPUT_ELEMENT_ATTRIBUTES );
         createEAttribute( outputElementAttributesEClass,
                 OUTPUT_ELEMENT_ATTRIBUTES__LABEL );
@@ -2576,6 +3080,7 @@
         // Create enums
         axisTypeEEnum = createEEnum( AXIS_TYPE );
         elementNullabilityEEnum = createEEnum( ELEMENT_NULLABILITY );
+        filterVariableTypeEEnum = createEEnum( FILTER_VARIABLE_TYPE );
         horizontalAlignmentEEnum = createEEnum( HORIZONTAL_ALIGNMENT );
         inputPromptControlStyleEEnum = createEEnum( INPUT_PROMPT_CONTROL_STYLE );
         odaComplexDataTypeEEnum = createEEnum( ODA_COMPLEX_DATA_TYPE );
@@ -2588,6 +3093,7 @@
         // Create data types
         axisTypeObjectEDataType = createEDataType( AXIS_TYPE_OBJECT );
         elementNullabilityObjectEDataType = createEDataType( ELEMENT_NULLABILITY_OBJECT );
+        filterVariableTypeObjectEDataType = createEDataType( FILTER_VARIABLE_TYPE_OBJECT );
         horizontalAlignmentObjectEDataType = createEDataType( HORIZONTAL_ALIGNMENT_OBJECT );
         inputPromptControlStyleObjectEDataType = createEDataType( INPUT_PROMPT_CONTROL_STYLE_OBJECT );
         odaComplexDataTypeObjectEDataType = createEDataType( ODA_COMPLEX_DATA_TYPE_OBJECT );
@@ -2627,21 +3133,56 @@
         XMLTypePackage theXMLTypePackage = (XMLTypePackage) EPackage.Registry.INSTANCE
                 .getEPackage( XMLTypePackage.eNS_URI );
 
+        // Create type parameters
+
+        // Set bounds for type parameters
+
         // Add supertypes to classes
+        andExpressionEClass.getESuperTypes().add(
+                this.getCompositeFilterExpression() );
+        compositeFilterExpressionEClass.getESuperTypes().add(
+                this.getFilterExpression() );
+        customExpressionEClass.getESuperTypes()
+                .add( this.getFilterExpression() );
+        dynamicExpressionEClass.getESuperTypes().add(
+                this.getFilterExpression() );
+        notExpressionEClass.getESuperTypes().add( this.getFilterExpression() );
+        orExpressionEClass.getESuperTypes().add(
+                this.getCompositeFilterExpression() );
 
         // Initialize classes and features; add operations and parameters
         initEClass(
+                andExpressionEClass,
+                AndExpression.class,
+                "AndExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+
+        initEClass(
+                atomicExpressionContextEClass,
+                AtomicExpressionContext.class,
+                "AtomicExpressionContext", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEReference(
+                getAtomicExpressionContext_Variable(),
+                this.getFilterExpressionVariable(),
+                null,
+                "variable", null, 0, 1, AtomicExpressionContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+        initEReference(
+                getAtomicExpressionContext_Arguments(),
+                this.getFilterExpressionArguments(),
+                null,
+                "arguments", null, 0, 1, AtomicExpressionContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+
+        initEClass(
                 axisAttributesEClass,
                 AxisAttributes.class,
                 "AxisAttributes", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEAttribute(
                 getAxisAttributes_AxisType(),
                 this.getAxisType(),
-                "axisType", "Measure", 1, 1, AxisAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "axisType", "Measure", 0, 1, AxisAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getAxisAttributes_OnColumnLayout(),
                 theXMLTypePackage.getBoolean(),
-                "onColumnLayout", "true", 0, 1, AxisAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "onColumnLayout", "true", 0, 1, AxisAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
 
         initEClass(
                 columnDefinitionEClass,
@@ -2664,6 +3205,34 @@
                 "multiDimensionAttributes", null, 0, 1, ColumnDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
+                compositeFilterExpressionEClass,
+                CompositeFilterExpression.class,
+                "CompositeFilterExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEReference(
+                getCompositeFilterExpression_Children(),
+                this.getFilterExpression(),
+                null,
+                "children", null, 1, -1, CompositeFilterExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+
+        initEClass(
+                customExpressionEClass,
+                CustomExpression.class,
+                "CustomExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEAttribute(
+                getCustomExpression_DeclaringExtensionId(),
+                theXMLTypePackage.getString(),
+                "declaringExtensionId", null, 1, 1, CustomExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+        initEAttribute(
+                getCustomExpression_Id(),
+                theXMLTypePackage.getString(),
+                "id", null, 1, 1, CustomExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+        initEReference(
+                getCustomExpression_Context(),
+                this.getAtomicExpressionContext(),
+                null,
+                "context", null, 1, 1, CustomExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+
+        initEClass(
                 dataAccessDesignEClass,
                 DataAccessDesign.class,
                 "DataAccessDesign", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
@@ -2680,27 +3249,27 @@
         initEAttribute(
                 getDataElementAttributes_Name(),
                 theXMLTypePackage.getString(),
-                "name", null, 1, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "name", null, 1, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getDataElementAttributes_Position(),
                 theXMLTypePackage.getUnsignedShort(),
-                "position", null, 0, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "position", null, 0, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getDataElementAttributes_NativeDataTypeCode(),
                 theXMLTypePackage.getInt(),
-                "nativeDataTypeCode", "0", 0, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "nativeDataTypeCode", "0", 0, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getDataElementAttributes_Precision(),
                 theXMLTypePackage.getInt(),
-                "precision", "-1", 0, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "precision", "-1", 0, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getDataElementAttributes_Scale(),
                 theXMLTypePackage.getInt(),
-                "scale", "-1", 0, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "scale", "-1", 0, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getDataElementAttributes_Nullability(),
                 this.getElementNullability(),
-                "nullability", "Unknown", 0, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "nullability", "Unknown", 0, 1, DataElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEReference(
                 getDataElementAttributes_UiHints(),
                 this.getDataElementUIHints(),
@@ -2714,11 +3283,11 @@
         initEAttribute(
                 getDataElementUIHints_DisplayName(),
                 theXMLTypePackage.getString(),
-                "displayName", null, 0, 1, DataElementUIHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "displayName", null, 0, 1, DataElementUIHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getDataElementUIHints_Description(),
                 theXMLTypePackage.getString(),
-                "description", null, 0, 1, DataElementUIHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "description", null, 0, 1, DataElementUIHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 dataSetDesignEClass,
@@ -2727,11 +3296,11 @@
         initEAttribute(
                 getDataSetDesign_Name(),
                 theXMLTypePackage.getString(),
-                "name", null, 1, 1, DataSetDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "name", null, 1, 1, DataSetDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getDataSetDesign_OdaExtensionDataSetId(),
                 theXMLTypePackage.getString(),
-                "odaExtensionDataSetId", null, 0, 1, DataSetDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "odaExtensionDataSetId", null, 0, 1, DataSetDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getDataSetDesign_DataSourceDesign(),
                 this.getDataSourceDesign(),
@@ -2745,7 +3314,7 @@
         initEAttribute(
                 getDataSetDesign_DisplayName(),
                 theXMLTypePackage.getString(),
-                "displayName", null, 0, 1, DataSetDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "displayName", null, 0, 1, DataSetDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getDataSetDesign_PublicProperties(),
                 this.getProperties(),
@@ -2764,12 +3333,17 @@
         initEAttribute(
                 getDataSetDesign_PrimaryResultSetName(),
                 theXMLTypePackage.getString(),
-                "primaryResultSetName", null, 0, 1, DataSetDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "primaryResultSetName", null, 0, 1, DataSetDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getDataSetDesign_Parameters(),
                 this.getDataSetParameters(),
                 null,
                 "parameters", null, 0, 1, DataSetDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+        initEReference(
+                getDataSetDesign_Filter(),
+                this.getFilterExpression(),
+                null,
+                "filter", null, 0, 1, DataSetDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 dataSetParametersEClass,
@@ -2783,7 +3357,7 @@
         initEAttribute(
                 getDataSetParameters_DerivedMetaData(),
                 theXMLTypePackage.getBoolean(),
-                "derivedMetaData", "true", 0, 1, DataSetParameters.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "derivedMetaData", "true", 0, 1, DataSetParameters.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
 
         initEClass(
                 dataSetQueryEClass,
@@ -2792,7 +3366,7 @@
         initEAttribute(
                 getDataSetQuery_QueryText(),
                 theXMLTypePackage.getString(),
-                "queryText", null, 1, 1, DataSetQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "queryText", null, 1, 1, DataSetQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 dataSourceDesignEClass,
@@ -2801,19 +3375,19 @@
         initEAttribute(
                 getDataSourceDesign_Name(),
                 theXMLTypePackage.getString(),
-                "name", null, 1, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "name", null, 1, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getDataSourceDesign_OdaExtensionId(),
                 theXMLTypePackage.getString(),
-                "odaExtensionId", null, 1, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "odaExtensionId", null, 1, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getDataSourceDesign_OdaExtensionDataSourceId(),
                 theXMLTypePackage.getString(),
-                "odaExtensionDataSourceId", null, 0, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "odaExtensionDataSourceId", null, 0, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getDataSourceDesign_DisplayName(),
                 theXMLTypePackage.getString(),
-                "displayName", null, 0, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "displayName", null, 0, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getDataSourceDesign_PublicProperties(),
                 this.getProperties(),
@@ -2827,11 +3401,11 @@
         initEAttribute(
                 getDataSourceDesign_LinkedProfileName(),
                 theXMLTypePackage.getString(),
-                "linkedProfileName", null, 0, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "linkedProfileName", null, 0, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getDataSourceDesign_LinkedProfileStoreFilePath(),
                 theXMLTypePackage.getString(),
-                "linkedProfileStoreFilePath", null, 0, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "linkedProfileStoreFilePath", null, 0, 1, DataSourceDesign.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getDataSourceDesign_HostResourceIdentifiers(),
                 this.getResourceIdentifiers(),
@@ -2845,7 +3419,7 @@
         initEAttribute(
                 getDesignerState_Version(),
                 theXMLTypePackage.getString(),
-                "version", null, 1, 1, DesignerState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "version", null, 1, 1, DesignerState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getDesignerState_StateContent(),
                 this.getDesignerStateContent(),
@@ -2859,11 +3433,11 @@
         initEAttribute(
                 getDesignerStateContent_StateContentAsString(),
                 theXMLTypePackage.getString(),
-                "stateContentAsString", null, 0, 1, DesignerStateContent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "stateContentAsString", null, 0, 1, DesignerStateContent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getDesignerStateContent_StateContentAsBlob(),
                 theXMLTypePackage.getBase64Binary(),
-                "stateContentAsBlob", null, 0, 1, DesignerStateContent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "stateContentAsBlob", null, 0, 1, DesignerStateContent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 designSessionRequestEClass,
@@ -2877,7 +3451,7 @@
         initEAttribute(
                 getDesignSessionRequest_Editable(),
                 theXMLTypePackage.getBoolean(),
-                "editable", "true", 0, 1, DesignSessionRequest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "editable", "true", 0, 1, DesignSessionRequest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEReference(
                 getDesignSessionRequest_SessionLocale(),
                 this.getLocale(),
@@ -2896,7 +3470,7 @@
         initEAttribute(
                 getDesignSessionResponse_SessionStatus(),
                 this.getSessionStatus(),
-                "sessionStatus", "Ok", 1, 1, DesignSessionResponse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "sessionStatus", "Ok", 0, 1, DesignSessionResponse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEReference(
                 getDesignSessionResponse_DataAccessDesign(),
                 this.getDataAccessDesign(),
@@ -2920,12 +3494,12 @@
                 getDocumentRoot_XMLNSPrefixMap(),
                 ecorePackage.getEStringToStringMapEntry(),
                 null,
-                "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getDocumentRoot_XSISchemaLocation(),
                 ecorePackage.getEStringToStringMapEntry(),
                 null,
-                "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getDocumentRoot_OdaDesignSession(),
                 this.getOdaDesignSession(),
@@ -2933,6 +3507,16 @@
                 "odaDesignSession", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
+                dynamicExpressionEClass,
+                DynamicExpression.class,
+                "DynamicExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEReference(
+                getDynamicExpression_ContextVariable(),
+                this.getFilterExpressionVariable(),
+                null,
+                "contextVariable", null, 1, 1, DynamicExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+
+        initEClass(
                 dynamicValuesQueryEClass,
                 DynamicValuesQuery.class,
                 "DynamicValuesQuery", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
@@ -2944,15 +3528,75 @@
         initEAttribute(
                 getDynamicValuesQuery_Enabled(),
                 theXMLTypePackage.getBoolean(),
-                "enabled", "true", 0, 1, DynamicValuesQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "enabled", "true", 0, 1, DynamicValuesQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getDynamicValuesQuery_ValueColumn(),
                 theXMLTypePackage.getString(),
-                "valueColumn", null, 1, 1, DynamicValuesQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "valueColumn", null, 1, 1, DynamicValuesQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getDynamicValuesQuery_DisplayNameColumn(),
                 theXMLTypePackage.getString(),
-                "displayNameColumn", null, 0, 1, DynamicValuesQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "displayNameColumn", null, 0, 1, DynamicValuesQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+
+        initEClass(
+                filterExpressionEClass,
+                FilterExpression.class,
+                "FilterExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEAttribute(
+                getFilterExpression_Negatable(),
+                theXMLTypePackage.getBoolean(),
+                "negatable", "false", 0, 1, FilterExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+
+        initEClass(
+                filterExpressionArgumentsEClass,
+                FilterExpressionArguments.class,
+                "FilterExpressionArguments", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEReference(
+                getFilterExpressionArguments_FilterParameters(),
+                this.getFilterParameters(),
+                null,
+                "filterParameters", null, 1, 1, FilterExpressionArguments.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+
+        initEClass(
+                filterExpressionVariableEClass,
+                FilterExpressionVariable.class,
+                "FilterExpressionVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEAttribute(
+                getFilterExpressionVariable_Type(),
+                this.getFilterVariableType(),
+                "type", "ResultSetColumn", 0, 1, FilterExpressionVariable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+        initEAttribute(
+                getFilterExpressionVariable_Identifier(),
+                theXMLTypePackage.getString(),
+                "identifier", null, 1, 1, FilterExpressionVariable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+        initEAttribute(
+                getFilterExpressionVariable_NativeDataTypeCode(),
+                theXMLTypePackage.getInt(),
+                "nativeDataTypeCode", null, 0, 1, FilterExpressionVariable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+
+        initEClass(
+                filterParameterDefinitionEClass,
+                FilterParameterDefinition.class,
+                "FilterParameterDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEAttribute(
+                getFilterParameterDefinition_StaticValue(),
+                theXMLTypePackage.getAnySimpleType(),
+                "staticValue", null, 0, 1, FilterParameterDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+        initEReference(
+                getFilterParameterDefinition_DynamicInputParameter(),
+                this.getParameterDefinition(),
+                null,
+                "dynamicInputParameter", null, 0, 1, FilterParameterDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+
+        initEClass(
+                filterParametersEClass,
+                FilterParameters.class,
+                "FilterParameters", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEReference(
+                getFilterParameters_ParameterDefinitions(),
+                this.getFilterParameterDefinition(),
+                null,
+                "parameterDefinitions", null, 1, -1, FilterParameters.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 inputElementAttributesEClass,
@@ -2961,19 +3605,19 @@
         initEAttribute(
                 getInputElementAttributes_DefaultScalarValue(),
                 theXMLTypePackage.getString(),
-                "defaultScalarValue", null, 0, 1, InputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "defaultScalarValue", null, 0, 1, InputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getInputElementAttributes_Editable(),
                 theXMLTypePackage.getBoolean(),
-                "editable", "true", 0, 1, InputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "editable", "true", 0, 1, InputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getInputElementAttributes_Optional(),
                 theXMLTypePackage.getBoolean(),
-                "optional", "false", 0, 1, InputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "optional", "false", 0, 1, InputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getInputElementAttributes_MasksValue(),
                 theXMLTypePackage.getBoolean(),
-                "masksValue", "false", 0, 1, InputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "masksValue", "false", 0, 1, InputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEReference(
                 getInputElementAttributes_StaticValueChoices(),
                 this.getScalarValueChoices(),
@@ -2997,7 +3641,11 @@
         initEAttribute(
                 getInputElementUIHints_PromptStyle(),
                 this.getInputPromptControlStyle(),
-                "promptStyle", "", 0, 1, InputElementUIHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "promptStyle", null, 0, 1, InputElementUIHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+        initEAttribute(
+                getInputElementUIHints_AutoSuggestThreshold(),
+                theXMLTypePackage.getInt(),
+                "autoSuggestThreshold", "1", 0, 1, InputElementUIHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
 
         initEClass(
                 inputParameterAttributesEClass,
@@ -3021,7 +3669,7 @@
         initEAttribute(
                 getInputParameterUIHints_GroupPromptDisplayName(),
                 theXMLTypePackage.getString(),
-                "groupPromptDisplayName", null, 0, 1, InputParameterUIHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "groupPromptDisplayName", null, 0, 1, InputParameterUIHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 localeEClass,
@@ -3030,15 +3678,15 @@
         initEAttribute(
                 getLocale_Language(),
                 theXMLTypePackage.getString(),
-                "language", "en", 1, 1, Locale.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "language", "en", 0, 1, Locale.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getLocale_Country(),
                 theXMLTypePackage.getString(),
-                "country", null, 0, 1, Locale.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "country", null, 0, 1, Locale.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getLocale_Variant(),
                 theXMLTypePackage.getString(),
-                "variant", null, 0, 1, Locale.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "variant", null, 0, 1, Locale.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 nameValuePairEClass,
@@ -3047,11 +3695,21 @@
         initEAttribute(
                 getNameValuePair_Name(),
                 theXMLTypePackage.getString(),
-                "name", null, 1, 1, NameValuePair.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "name", null, 1, 1, NameValuePair.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getNameValuePair_Value(),
                 theXMLTypePackage.getString(),
-                "value", null, 0, 1, NameValuePair.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "value", null, 0, 1, NameValuePair.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+
+        initEClass(
+                notExpressionEClass,
+                NotExpression.class,
+                "NotExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEReference(
+                getNotExpression_NegatingExpression(),
+                this.getFilterExpression(),
+                null,
+                "negatingExpression", null, 1, 1, NotExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 odaDesignSessionEClass,
@@ -3069,13 +3727,18 @@
                 "response", null, 0, 1, OdaDesignSession.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
+                orExpressionEClass,
+                OrExpression.class,
+                "OrExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+
+        initEClass(
                 outputElementAttributesEClass,
                 OutputElementAttributes.class,
                 "OutputElementAttributes", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEAttribute(
                 getOutputElementAttributes_Label(),
                 theXMLTypePackage.getString(),
-                "label", null, 0, 1, OutputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "label", null, 0, 1, OutputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getOutputElementAttributes_FormattingHints(),
                 this.getValueFormatHints(),
@@ -3084,7 +3747,7 @@
         initEAttribute(
                 getOutputElementAttributes_HelpText(),
                 theXMLTypePackage.getString(),
-                "helpText", null, 0, 1, OutputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "helpText", null, 0, 1, OutputElementAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 parameterDefinitionEClass,
@@ -3093,7 +3756,7 @@
         initEAttribute(
                 getParameterDefinition_InOutMode(),
                 this.getParameterMode(),
-                "inOutMode", "In", 1, 1, ParameterDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "inOutMode", "In", 0, 1, ParameterDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEReference(
                 getParameterDefinition_Attributes(),
                 this.getDataElementAttributes(),
@@ -3177,7 +3840,7 @@
         initEAttribute(
                 getPropertyAttributes_DisplayName(),
                 theXMLTypePackage.getString(),
-                "displayName", null, 0, 1, PropertyAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "displayName", null, 0, 1, PropertyAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getPropertyAttributes_ElementAttributes(),
                 this.getInputElementAttributes(),
@@ -3186,7 +3849,7 @@
         initEAttribute(
                 getPropertyAttributes_DerivedMetaData(),
                 theXMLTypePackage.getBoolean(),
-                "derivedMetaData", "true", 0, 1, PropertyAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "derivedMetaData", "true", 0, 1, PropertyAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
 
         initEClass(
                 resourceIdentifiersEClass,
@@ -3195,11 +3858,11 @@
         initEAttribute(
                 getResourceIdentifiers_ApplResourceBaseURIString(),
                 theXMLTypePackage.getString(),
-                "applResourceBaseURIString", null, 0, 1, ResourceIdentifiers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "applResourceBaseURIString", null, 0, 1, ResourceIdentifiers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getResourceIdentifiers_DesignResourceBaseURIString(),
                 theXMLTypePackage.getString(),
-                "designResourceBaseURIString", null, 0, 1, ResourceIdentifiers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "designResourceBaseURIString", null, 0, 1, ResourceIdentifiers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 resultSetColumnsEClass,
@@ -3218,7 +3881,7 @@
         initEAttribute(
                 getResultSetDefinition_Name(),
                 theXMLTypePackage.getString(),
-                "name", null, 0, 1, ResultSetDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "name", null, 0, 1, ResultSetDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEReference(
                 getResultSetDefinition_ResultSetColumns(),
                 this.getResultSetColumns(),
@@ -3237,7 +3900,7 @@
         initEAttribute(
                 getResultSets_DerivedMetaData(),
                 theXMLTypePackage.getBoolean(),
-                "derivedMetaData", "true", 0, 1, ResultSets.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "derivedMetaData", "true", 0, 1, ResultSets.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
 
         initEClass(
                 scalarValueChoicesEClass,
@@ -3256,11 +3919,11 @@
         initEAttribute(
                 getScalarValueDefinition_Value(),
                 theXMLTypePackage.getString(),
-                "value", null, 1, 1, ScalarValueDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "value", null, 1, 1, ScalarValueDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getScalarValueDefinition_DisplayName(),
                 theXMLTypePackage.getString(),
-                "displayName", null, 0, 1, ScalarValueDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "displayName", null, 0, 1, ScalarValueDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
 
         initEClass(
                 valueFormatHintsEClass,
@@ -3269,23 +3932,23 @@
         initEAttribute(
                 getValueFormatHints_DisplaySize(),
                 theXMLTypePackage.getInt(),
-                "displaySize", "-1", 0, 1, ValueFormatHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "displaySize", "-1", 0, 1, ValueFormatHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getValueFormatHints_DisplayFormat(),
                 theXMLTypePackage.getString(),
-                "displayFormat", null, 0, 1, ValueFormatHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
+                "displayFormat", null, 0, 1, ValueFormatHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$
         initEAttribute(
                 getValueFormatHints_TextFormatType(),
                 this.getTextFormatType(),
-                "textFormatType", "Plain", 0, 1, ValueFormatHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "textFormatType", "Plain", 0, 1, ValueFormatHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getValueFormatHints_HorizontalAlignment(),
                 this.getHorizontalAlignment(),
-                "horizontalAlignment", "Automatic", 0, 1, ValueFormatHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "horizontalAlignment", "Automatic", 0, 1, ValueFormatHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
         initEAttribute(
                 getValueFormatHints_TextWrapType(),
                 this.getTextWrapType(),
-                "textWrapType", "None", 0, 1, ValueFormatHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
+                "textWrapType", "None", 0, 1, ValueFormatHints.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED ); //$NON-NLS-1$ //$NON-NLS-2$
 
         // Initialize enums and add enum literals
         initEEnum( axisTypeEEnum, AxisType.class, "AxisType" ); //$NON-NLS-1$
@@ -3302,6 +3965,15 @@
         addEEnumLiteral( elementNullabilityEEnum,
                 ElementNullability.NOT_NULLABLE_LITERAL );
 
+        initEEnum( filterVariableTypeEEnum, FilterVariableType.class,
+                "FilterVariableType" ); //$NON-NLS-1$
+        addEEnumLiteral( filterVariableTypeEEnum,
+                FilterVariableType.RESULT_SET_COLUMN );
+        addEEnumLiteral( filterVariableTypeEEnum,
+                FilterVariableType.INSTANCE_OF );
+        addEEnumLiteral( filterVariableTypeEEnum,
+                FilterVariableType.QUERY_EXPRESSION );
+
         initEEnum( horizontalAlignmentEEnum, HorizontalAlignment.class,
                 "HorizontalAlignment" ); //$NON-NLS-1$
         addEEnumLiteral( horizontalAlignmentEEnum,
@@ -3374,43 +4046,47 @@
         addEEnumLiteral( textWrapTypeEEnum, TextWrapType.WORD_LITERAL );
 
         // Initialize data types
-        initEDataType( axisTypeObjectEDataType, AbstractEnumerator.class,
+        initEDataType( axisTypeObjectEDataType, AxisType.class,
                 "AxisTypeObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEDataType(
                 elementNullabilityObjectEDataType,
-                AbstractEnumerator.class,
+                ElementNullability.class,
                 "ElementNullabilityObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEDataType(
+                filterVariableTypeObjectEDataType,
+                FilterVariableType.class,
+                "FilterVariableTypeObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
+        initEDataType(
                 horizontalAlignmentObjectEDataType,
-                AbstractEnumerator.class,
+                HorizontalAlignment.class,
                 "HorizontalAlignmentObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEDataType(
                 inputPromptControlStyleObjectEDataType,
-                AbstractEnumerator.class,
+                InputPromptControlStyle.class,
                 "InputPromptControlStyleObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEDataType(
                 odaComplexDataTypeObjectEDataType,
-                AbstractEnumerator.class,
+                OdaComplexDataType.class,
                 "OdaComplexDataTypeObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEDataType(
                 odaScalarDataTypeObjectEDataType,
-                AbstractEnumerator.class,
+                OdaScalarDataType.class,
                 "OdaScalarDataTypeObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEDataType(
                 parameterModeObjectEDataType,
-                AbstractEnumerator.class,
+                ParameterMode.class,
                 "ParameterModeObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEDataType(
                 sessionStatusObjectEDataType,
-                AbstractEnumerator.class,
+                SessionStatus.class,
                 "SessionStatusObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEDataType(
                 textFormatTypeObjectEDataType,
-                AbstractEnumerator.class,
+                TextFormatType.class,
                 "TextFormatTypeObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
         initEDataType(
                 textWrapTypeObjectEDataType,
-                AbstractEnumerator.class,
+                TextWrapType.class,
                 "TextWrapTypeObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS ); //$NON-NLS-1$
 
         // Create resource
@@ -3430,6 +4106,26 @@
     protected void createExtendedMetaDataAnnotations()
     {
         String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData"; //$NON-NLS-1$			
+        addAnnotation( andExpressionEClass, source, new String[]
+        { "name", "AndExpression", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( atomicExpressionContextEClass, source, new String[]
+        { "name", "AtomicExpressionContext", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getAtomicExpressionContext_Variable(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "variable", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
+        addAnnotation( getAtomicExpressionContext_Arguments(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "arguments", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
         addAnnotation( axisAttributesEClass, source, new String[]
         { "name", "AxisAttributes", //$NON-NLS-1$ //$NON-NLS-2$
                 "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
@@ -3471,6 +4167,36 @@
                         "name", "multiDimensionAttributes", //$NON-NLS-1$ //$NON-NLS-2$
                         "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
                 } );
+        addAnnotation( compositeFilterExpressionEClass, source, new String[]
+        { "name", "CompositeFilterExpression", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getCompositeFilterExpression_Children(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "children", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
+        addAnnotation( customExpressionEClass, source, new String[]
+        { "name", "CustomExpression", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getCustomExpression_DeclaringExtensionId(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "declaringExtensionId", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
+        addAnnotation( getCustomExpression_Id(), source, new String[]
+        { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                "name", "id", //$NON-NLS-1$ //$NON-NLS-2$
+                "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getCustomExpression_Context(), source, new String[]
+        { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                "name", "context", //$NON-NLS-1$ //$NON-NLS-2$
+                "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
         addAnnotation( dataAccessDesignEClass, source, new String[]
         { "name", "DataAccessDesign", //$NON-NLS-1$ //$NON-NLS-2$
                 "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
@@ -3599,6 +4325,11 @@
                 "name", "parameters", //$NON-NLS-1$ //$NON-NLS-2$
                 "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
         } );
+        addAnnotation( getDataSetDesign_Filter(), source, new String[]
+        { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                "name", "filter", //$NON-NLS-1$ //$NON-NLS-2$
+                "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
         addAnnotation( dataSetParametersEClass, source, new String[]
         { "name", "DataSetParameters", //$NON-NLS-1$ //$NON-NLS-2$
                 "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
@@ -3780,6 +4511,16 @@
                 "name", "odaDesignSession", //$NON-NLS-1$ //$NON-NLS-2$
                 "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
         } );
+        addAnnotation( dynamicExpressionEClass, source, new String[]
+        { "name", "DynamicExpression", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getDynamicExpression_ContextVariable(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "contextVariable", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
         addAnnotation( dynamicValuesQueryEClass, source, new String[]
         { "name", "DynamicValuesQuery", //$NON-NLS-1$ //$NON-NLS-2$
                 "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
@@ -3814,6 +4555,78 @@
         { "name", "ElementNullability:Object", //$NON-NLS-1$ //$NON-NLS-2$
                 "baseType", "ElementNullability" //$NON-NLS-1$ //$NON-NLS-2$
         } );
+        addAnnotation( filterExpressionEClass, source, new String[]
+        { "name", "FilterExpression", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "empty" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getFilterExpression_Negatable(), source, new String[]
+        { "kind", "attribute", //$NON-NLS-1$ //$NON-NLS-2$
+                "name", "negatable" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( filterExpressionArgumentsEClass, source, new String[]
+        { "name", "FilterExpressionArguments", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getFilterExpressionArguments_FilterParameters(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "filterParameters", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
+        addAnnotation( filterExpressionVariableEClass, source, new String[]
+        { "name", "FilterExpressionVariable", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getFilterExpressionVariable_Type(), source, new String[]
+        { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                "name", "type", //$NON-NLS-1$ //$NON-NLS-2$
+                "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getFilterExpressionVariable_Identifier(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "identifier", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
+        addAnnotation( getFilterExpressionVariable_NativeDataTypeCode(),
+                source, new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "nativeDataTypeCode", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
+        addAnnotation( filterParameterDefinitionEClass, source, new String[]
+        { "name", "FilterParameterDefinition", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getFilterParameterDefinition_StaticValue(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "staticValue", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
+        addAnnotation( getFilterParameterDefinition_DynamicInputParameter(),
+                source, new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "dynamicInputParameter", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
+        addAnnotation( filterParametersEClass, source, new String[]
+        { "name", "FilterParameters", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getFilterParameters_ParameterDefinitions(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "parameterDefinitions", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
+        addAnnotation( filterVariableTypeEEnum, source, new String[]
+        { "name", "FilterVariableType" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( filterVariableTypeObjectEDataType, source, new String[]
+        { "name", "FilterVariableType:Object", //$NON-NLS-1$ //$NON-NLS-2$
+                "baseType", "FilterVariableType" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
         addAnnotation( horizontalAlignmentEEnum, source, new String[]
         { "name", "HorizontalAlignment" //$NON-NLS-1$ //$NON-NLS-2$
         } );
@@ -3877,6 +4690,12 @@
                         "name", "promptStyle", //$NON-NLS-1$ //$NON-NLS-2$
                         "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
                 } );
+        addAnnotation( getInputElementUIHints_AutoSuggestThreshold(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "autoSuggestThreshold", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
         addAnnotation( inputParameterAttributesEClass, source, new String[]
         { "name", "InputParameterAttributes", //$NON-NLS-1$ //$NON-NLS-2$
                 "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
@@ -3944,6 +4763,16 @@
                 "name", "value", //$NON-NLS-1$ //$NON-NLS-2$
                 "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
         } );
+        addAnnotation( notExpressionEClass, source, new String[]
+        { "name", "NotExpression", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
+        addAnnotation( getNotExpression_NegatingExpression(), source,
+                new String[]
+                { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "negatingExpression", //$NON-NLS-1$ //$NON-NLS-2$
+                        "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
+                } );
         addAnnotation( odaComplexDataTypeEEnum, source, new String[]
         { "name", "OdaComplexDataType" //$NON-NLS-1$ //$NON-NLS-2$
         } );
@@ -3972,6 +4801,10 @@
         { "name", "OdaScalarDataType:Object", //$NON-NLS-1$ //$NON-NLS-2$
                 "baseType", "OdaScalarDataType" //$NON-NLS-1$ //$NON-NLS-2$
         } );
+        addAnnotation( orExpressionEClass, source, new String[]
+        { "name", "OrExpression", //$NON-NLS-1$ //$NON-NLS-2$
+                "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
+        } );
         addAnnotation( outputElementAttributesEClass, source, new String[]
         { "name", "OutputElementAttributes", //$NON-NLS-1$ //$NON-NLS-2$
                 "kind", "elementOnly" //$NON-NLS-1$ //$NON-NLS-2$
@@ -4054,7 +4887,7 @@
         addAnnotation( getParameterFields_FieldCollection(), source,
                 new String[]
                 { "kind", "element", //$NON-NLS-1$ //$NON-NLS-2$
-                        "name", "fields", //$NON-NLS-1$ //$NON-NLS-2$
+                        "name", "fieldCollection", //$NON-NLS-1$ //$NON-NLS-2$
                         "namespace", "##targetNamespace" //$NON-NLS-1$ //$NON-NLS-2$
                 } );
         addAnnotation( parameterModeEEnum, source, new String[]
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/FilterExpressionImpl.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/FilterExpressionImpl.java
new file mode 100644
index 0000000..3225f0c
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/FilterExpressionImpl.java
@@ -0,0 +1,249 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design.impl;
+
+import org.eclipse.datatools.connectivity.oda.design.DesignPackage;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpression;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>. This interface has been added as
+ * part of a work in progress. There is no guarantee that this API will
+ * work or that it will remain the same. Please do not use this API without
+ * consulting with the DTP Open Data Access team.
+ * </p>
+ * An implementation of the model object '<em><b>Filter Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionImpl#isNegatable <em>Negatable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ * @since 3.2 (DTP 1.7)
+ */
+public abstract class FilterExpressionImpl extends EObjectImpl implements
+        FilterExpression
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * The default value of the '{@link #isNegatable() <em>Negatable</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isNegatable()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean NEGATABLE_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isNegatable() <em>Negatable</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isNegatable()
+     * @generated
+     * @ordered
+     */
+    protected boolean m_negatable = NEGATABLE_EDEFAULT;
+
+    /**
+     * This is true if the Negatable attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean m_negatableESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected FilterExpressionImpl()
+    {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass()
+    {
+        return DesignPackage.Literals.FILTER_EXPRESSION;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean isNegatable()
+    {
+        return m_negatable;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setNegatable( boolean newNegatable )
+    {
+        boolean oldNegatable = m_negatable;
+        m_negatable = newNegatable;
+        boolean oldNegatableESet = m_negatableESet;
+        m_negatableESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET,
+                    DesignPackage.FILTER_EXPRESSION__NEGATABLE, oldNegatable,
+                    m_negatable, !oldNegatableESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void unsetNegatable()
+    {
+        boolean oldNegatable = m_negatable;
+        boolean oldNegatableESet = m_negatableESet;
+        m_negatable = NEGATABLE_EDEFAULT;
+        m_negatableESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET,
+                    DesignPackage.FILTER_EXPRESSION__NEGATABLE, oldNegatable,
+                    NEGATABLE_EDEFAULT, oldNegatableESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean isSetNegatable()
+    {
+        return m_negatableESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.FILTER_EXPRESSION__NEGATABLE:
+            return isNegatable() ? Boolean.TRUE : Boolean.FALSE;
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.FILTER_EXPRESSION__NEGATABLE:
+            setNegatable( ((Boolean) newValue).booleanValue() );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.FILTER_EXPRESSION__NEGATABLE:
+            unsetNegatable();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.FILTER_EXPRESSION__NEGATABLE:
+            return isSetNegatable();
+        }
+        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( " (negatable: " ); //$NON-NLS-1$
+        if( m_negatableESet )
+            result.append( m_negatable );
+        else
+            result.append( "<unset>" ); //$NON-NLS-1$
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //FilterExpressionImpl
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/InputElementUIHintsImpl.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/InputElementUIHintsImpl.java
index 2e9914b..2cba09c 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/InputElementUIHintsImpl.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/InputElementUIHintsImpl.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2007 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,7 +11,7 @@
  *  
  *************************************************************************
  *
- * $Id: InputElementUIHintsImpl.java,v 1.2 2006/01/27 02:37:40 lchan Exp $
+ * $Id: InputElementUIHintsImpl.java,v 1.3 2007/04/11 02:59:52 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design.impl;
 
@@ -32,6 +32,7 @@
  * The following features are implemented:
  * <ul>
  *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.InputElementUIHintsImpl#getPromptStyle <em>Prompt Style</em>}</li>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.InputElementUIHintsImpl#getAutoSuggestThreshold <em>Auto Suggest Threshold</em>}</li>
  * </ul>
  * </p>
  *
@@ -45,7 +46,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public static final String copyright = "Copyright (c) 2005, 2007 Actuate Corporation"; //$NON-NLS-1$
+    public static final String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
 
     /**
      * The default value of the '{@link #getPromptStyle() <em>Prompt Style</em>}' attribute.
@@ -74,7 +75,36 @@
      * @generated
      * @ordered
      */
-    protected boolean m_promptStyleESet = false;
+    protected boolean m_promptStyleESet;
+
+    /**
+     * The default value of the '{@link #getAutoSuggestThreshold() <em>Auto Suggest Threshold</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getAutoSuggestThreshold()
+     * @generated
+     * @ordered
+     */
+    protected static final int AUTO_SUGGEST_THRESHOLD_EDEFAULT = 1;
+
+    /**
+     * The cached value of the '{@link #getAutoSuggestThreshold() <em>Auto Suggest Threshold</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getAutoSuggestThreshold()
+     * @generated
+     * @ordered
+     */
+    protected int m_autoSuggestThreshold = AUTO_SUGGEST_THRESHOLD_EDEFAULT;
+
+    /**
+     * This is true if the Auto Suggest Threshold attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean m_autoSuggestThresholdESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -91,6 +121,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     protected EClass eStaticClass()
     {
         return DesignPackage.Literals.INPUT_ELEMENT_UI_HINTS;
@@ -174,13 +205,80 @@
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
+     * @since 3.2 (DTP 1.7)
      */
+    public int getAutoSuggestThreshold()
+    {
+        return m_autoSuggestThreshold;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    public void setAutoSuggestThreshold( int newAutoSuggestThreshold )
+    {
+        int oldAutoSuggestThreshold = m_autoSuggestThreshold;
+        m_autoSuggestThreshold = newAutoSuggestThreshold;
+        boolean oldAutoSuggestThresholdESet = m_autoSuggestThresholdESet;
+        m_autoSuggestThresholdESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl(
+                    this,
+                    Notification.SET,
+                    DesignPackage.INPUT_ELEMENT_UI_HINTS__AUTO_SUGGEST_THRESHOLD,
+                    oldAutoSuggestThreshold, m_autoSuggestThreshold,
+                    !oldAutoSuggestThresholdESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    public void unsetAutoSuggestThreshold()
+    {
+        int oldAutoSuggestThreshold = m_autoSuggestThreshold;
+        boolean oldAutoSuggestThresholdESet = m_autoSuggestThresholdESet;
+        m_autoSuggestThreshold = AUTO_SUGGEST_THRESHOLD_EDEFAULT;
+        m_autoSuggestThresholdESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl(
+                    this,
+                    Notification.UNSET,
+                    DesignPackage.INPUT_ELEMENT_UI_HINTS__AUTO_SUGGEST_THRESHOLD,
+                    oldAutoSuggestThreshold, AUTO_SUGGEST_THRESHOLD_EDEFAULT,
+                    oldAutoSuggestThresholdESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @since 3.2 (DTP 1.7)
+     */
+    public boolean isSetAutoSuggestThreshold()
+    {
+        return m_autoSuggestThresholdESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType )
     {
         switch( featureID )
         {
         case DesignPackage.INPUT_ELEMENT_UI_HINTS__PROMPT_STYLE:
             return getPromptStyle();
+        case DesignPackage.INPUT_ELEMENT_UI_HINTS__AUTO_SUGGEST_THRESHOLD:
+            return new Integer( getAutoSuggestThreshold() );
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -190,6 +288,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public void eSet( int featureID, Object newValue )
     {
         switch( featureID )
@@ -197,6 +296,9 @@
         case DesignPackage.INPUT_ELEMENT_UI_HINTS__PROMPT_STYLE:
             setPromptStyle( (InputPromptControlStyle) newValue );
             return;
+        case DesignPackage.INPUT_ELEMENT_UI_HINTS__AUTO_SUGGEST_THRESHOLD:
+            setAutoSuggestThreshold( ((Integer) newValue).intValue() );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -206,6 +308,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public void eUnset( int featureID )
     {
         switch( featureID )
@@ -213,6 +316,9 @@
         case DesignPackage.INPUT_ELEMENT_UI_HINTS__PROMPT_STYLE:
             unsetPromptStyle();
             return;
+        case DesignPackage.INPUT_ELEMENT_UI_HINTS__AUTO_SUGGEST_THRESHOLD:
+            unsetAutoSuggestThreshold();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -222,12 +328,15 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public boolean eIsSet( int featureID )
     {
         switch( featureID )
         {
         case DesignPackage.INPUT_ELEMENT_UI_HINTS__PROMPT_STYLE:
             return isSetPromptStyle();
+        case DesignPackage.INPUT_ELEMENT_UI_HINTS__AUTO_SUGGEST_THRESHOLD:
+            return isSetAutoSuggestThreshold();
         }
         return super.eIsSet( featureID );
     }
@@ -237,6 +346,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    @Override
     public String toString()
     {
         if( eIsProxy() )
@@ -248,6 +358,11 @@
             result.append( m_promptStyle );
         else
             result.append( "<unset>" ); //$NON-NLS-1$
+        result.append( ", autoSuggestThreshold: " ); //$NON-NLS-1$
+        if( m_autoSuggestThresholdESet )
+            result.append( m_autoSuggestThreshold );
+        else
+            result.append( "<unset>" ); //$NON-NLS-1$
         result.append( ')' );
         return result.toString();
     }
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/NotExpressionImpl.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/NotExpressionImpl.java
new file mode 100644
index 0000000..02e9074
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/NotExpressionImpl.java
@@ -0,0 +1,249 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design.impl;
+
+import org.eclipse.datatools.connectivity.oda.design.DesignPackage;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpression;
+import org.eclipse.datatools.connectivity.oda.design.NotExpression;
+
+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;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>.
+ * </p>
+ * An implementation of the model object '<em><b>Not Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.datatools.connectivity.oda.design.impl.NotExpressionImpl#getNegatingExpression <em>Negating Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ * @since 3.2 (DTP 1.7)
+ */
+public class NotExpressionImpl extends FilterExpressionImpl implements
+        NotExpression
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * The cached value of the '{@link #getNegatingExpression() <em>Negating Expression</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getNegatingExpression()
+     * @generated
+     * @ordered
+     */
+    protected FilterExpression m_negatingExpression;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected NotExpressionImpl()
+    {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass()
+    {
+        return DesignPackage.Literals.NOT_EXPRESSION;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public FilterExpression getNegatingExpression()
+    {
+        return m_negatingExpression;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetNegatingExpression(
+            FilterExpression newNegatingExpression, NotificationChain msgs )
+    {
+        FilterExpression oldNegatingExpression = m_negatingExpression;
+        m_negatingExpression = newNegatingExpression;
+        if( eNotificationRequired() )
+        {
+            ENotificationImpl notification = new ENotificationImpl( this,
+                    Notification.SET,
+                    DesignPackage.NOT_EXPRESSION__NEGATING_EXPRESSION,
+                    oldNegatingExpression, newNegatingExpression );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setNegatingExpression( FilterExpression newNegatingExpression )
+    {
+        if( newNegatingExpression != m_negatingExpression )
+        {
+            NotificationChain msgs = null;
+            if( m_negatingExpression != null )
+                msgs = ((InternalEObject) m_negatingExpression)
+                        .eInverseRemove(
+                                this,
+                                EOPPOSITE_FEATURE_BASE
+                                        - DesignPackage.NOT_EXPRESSION__NEGATING_EXPRESSION,
+                                null, msgs );
+            if( newNegatingExpression != null )
+                msgs = ((InternalEObject) newNegatingExpression)
+                        .eInverseAdd(
+                                this,
+                                EOPPOSITE_FEATURE_BASE
+                                        - DesignPackage.NOT_EXPRESSION__NEGATING_EXPRESSION,
+                                null, msgs );
+            msgs = basicSetNegatingExpression( newNegatingExpression, msgs );
+            if( msgs != null )
+                msgs.dispatch();
+        }
+        else if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET,
+                    DesignPackage.NOT_EXPRESSION__NEGATING_EXPRESSION,
+                    newNegatingExpression, newNegatingExpression ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd,
+            int featureID, NotificationChain msgs )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.NOT_EXPRESSION__NEGATING_EXPRESSION:
+            return basicSetNegatingExpression( 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 DesignPackage.NOT_EXPRESSION__NEGATING_EXPRESSION:
+            return getNegatingExpression();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.NOT_EXPRESSION__NEGATING_EXPRESSION:
+            setNegatingExpression( (FilterExpression) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.NOT_EXPRESSION__NEGATING_EXPRESSION:
+            setNegatingExpression( (FilterExpression) null );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID )
+    {
+        switch( featureID )
+        {
+        case DesignPackage.NOT_EXPRESSION__NEGATING_EXPRESSION:
+            return m_negatingExpression != null;
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionImpl#isNegatable()
+     * @generated NOT
+     */
+    @Override
+    public boolean isNegatable()
+    {
+        return true;
+    }
+
+} //NotExpressionImpl
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/OrExpressionImpl.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/OrExpressionImpl.java
new file mode 100644
index 0000000..2708d13
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/impl/OrExpressionImpl.java
@@ -0,0 +1,77 @@
+/**
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * 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:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.datatools.connectivity.oda.design.impl;
+
+import org.eclipse.datatools.connectivity.oda.design.DesignPackage;
+import org.eclipse.datatools.connectivity.oda.design.OrExpression;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * <p>
+ * <strong>EXPERIMENTAL</strong>.
+ * </p>
+ * An implementation of the model object '<em><b>Or Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ * @since 3.2 (DTP 1.7)
+ */
+public class OrExpressionImpl extends CompositeFilterExpressionImpl implements
+        OrExpression
+{
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final String copyright = "Copyright (c) 2009 Actuate Corporation"; //$NON-NLS-1$
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected OrExpressionImpl()
+    {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass()
+    {
+        return DesignPackage.Literals.OR_EXPRESSION;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.design.impl.FilterExpressionImpl#isNegatable()
+     * @generated NOT
+     */
+    @Override
+    public boolean isNegatable()
+    {
+        return true;
+    }
+
+} //OrExpressionImpl
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignAdapterFactory.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignAdapterFactory.java
index cad5162..feacb60 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignAdapterFactory.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignAdapterFactory.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2008 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,7 +11,7 @@
  *  
  *************************************************************************
  *
- * $Id: DesignAdapterFactory.java,v 1.2 2007/04/11 02:59:53 lchan Exp $
+ * $Id: DesignAdapterFactory.java,v 1.3 2008/07/23 04:12:28 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design.util;
 
@@ -39,7 +39,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public static final String copyright = "Copyright (c) 2005, 2008 Actuate Corporation"; //$NON-NLS-1$
+    public static final String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
 
     /**
      * The cached model package.
@@ -71,6 +71,7 @@
      * @return whether this factory is applicable for the type of the object.
      * @generated
      */
+    @Override
     public boolean isFactoryForType( Object object )
     {
         if( object == modelPackage )
@@ -85,197 +86,311 @@
     }
 
     /**
-     * The switch the delegates to the <code>createXXX</code> methods.
+     * The switch that delegates to the <code>createXXX</code> methods.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected DesignSwitch modelSwitch = new DesignSwitch()
+    protected DesignSwitch<Adapter> modelSwitch = new DesignSwitch<Adapter>()
     {
-        public Object caseAxisAttributes( AxisAttributes object )
+        @Override
+        public Adapter caseAndExpression( AndExpression object )
+        {
+            return createAndExpressionAdapter();
+        }
+
+        @Override
+        public Adapter caseAtomicExpressionContext(
+                AtomicExpressionContext object )
+        {
+            return createAtomicExpressionContextAdapter();
+        }
+
+        @Override
+        public Adapter caseAxisAttributes( AxisAttributes object )
         {
             return createAxisAttributesAdapter();
         }
 
-        public Object caseColumnDefinition( ColumnDefinition object )
+        @Override
+        public Adapter caseColumnDefinition( ColumnDefinition object )
         {
             return createColumnDefinitionAdapter();
         }
 
-        public Object caseDataAccessDesign( DataAccessDesign object )
+        @Override
+        public Adapter caseCompositeFilterExpression(
+                CompositeFilterExpression object )
+        {
+            return createCompositeFilterExpressionAdapter();
+        }
+
+        @Override
+        public Adapter caseCustomExpression( CustomExpression object )
+        {
+            return createCustomExpressionAdapter();
+        }
+
+        @Override
+        public Adapter caseDataAccessDesign( DataAccessDesign object )
         {
             return createDataAccessDesignAdapter();
         }
 
-        public Object caseDataElementAttributes( DataElementAttributes object )
+        @Override
+        public Adapter caseDataElementAttributes( DataElementAttributes object )
         {
             return createDataElementAttributesAdapter();
         }
 
-        public Object caseDataElementUIHints( DataElementUIHints object )
+        @Override
+        public Adapter caseDataElementUIHints( DataElementUIHints object )
         {
             return createDataElementUIHintsAdapter();
         }
 
-        public Object caseDataSetDesign( DataSetDesign object )
+        @Override
+        public Adapter caseDataSetDesign( DataSetDesign object )
         {
             return createDataSetDesignAdapter();
         }
 
-        public Object caseDataSetParameters( DataSetParameters object )
+        @Override
+        public Adapter caseDataSetParameters( DataSetParameters object )
         {
             return createDataSetParametersAdapter();
         }
 
-        public Object caseDataSetQuery( DataSetQuery object )
+        @Override
+        public Adapter caseDataSetQuery( DataSetQuery object )
         {
             return createDataSetQueryAdapter();
         }
 
-        public Object caseDataSourceDesign( DataSourceDesign object )
+        @Override
+        public Adapter caseDataSourceDesign( DataSourceDesign object )
         {
             return createDataSourceDesignAdapter();
         }
 
-        public Object caseDesignerState( DesignerState object )
+        @Override
+        public Adapter caseDesignerState( DesignerState object )
         {
             return createDesignerStateAdapter();
         }
 
-        public Object caseDesignerStateContent( DesignerStateContent object )
+        @Override
+        public Adapter caseDesignerStateContent( DesignerStateContent object )
         {
             return createDesignerStateContentAdapter();
         }
 
-        public Object caseDesignSessionRequest( DesignSessionRequest object )
+        @Override
+        public Adapter caseDesignSessionRequest( DesignSessionRequest object )
         {
             return createDesignSessionRequestAdapter();
         }
 
-        public Object caseDesignSessionResponse( DesignSessionResponse object )
+        @Override
+        public Adapter caseDesignSessionResponse( DesignSessionResponse object )
         {
             return createDesignSessionResponseAdapter();
         }
 
-        public Object caseDocumentRoot( DocumentRoot object )
+        @Override
+        public Adapter caseDocumentRoot( DocumentRoot object )
         {
             return createDocumentRootAdapter();
         }
 
-        public Object caseDynamicValuesQuery( DynamicValuesQuery object )
+        @Override
+        public Adapter caseDynamicExpression( DynamicExpression object )
+        {
+            return createDynamicExpressionAdapter();
+        }
+
+        @Override
+        public Adapter caseDynamicValuesQuery( DynamicValuesQuery object )
         {
             return createDynamicValuesQueryAdapter();
         }
 
-        public Object caseInputElementAttributes( InputElementAttributes object )
+        @Override
+        public Adapter caseFilterExpression( FilterExpression object )
+        {
+            return createFilterExpressionAdapter();
+        }
+
+        @Override
+        public Adapter caseFilterExpressionArguments(
+                FilterExpressionArguments object )
+        {
+            return createFilterExpressionArgumentsAdapter();
+        }
+
+        @Override
+        public Adapter caseFilterExpressionVariable(
+                FilterExpressionVariable object )
+        {
+            return createFilterExpressionVariableAdapter();
+        }
+
+        @Override
+        public Adapter caseFilterParameterDefinition(
+                FilterParameterDefinition object )
+        {
+            return createFilterParameterDefinitionAdapter();
+        }
+
+        @Override
+        public Adapter caseFilterParameters( FilterParameters object )
+        {
+            return createFilterParametersAdapter();
+        }
+
+        @Override
+        public Adapter caseInputElementAttributes( InputElementAttributes object )
         {
             return createInputElementAttributesAdapter();
         }
 
-        public Object caseInputElementUIHints( InputElementUIHints object )
+        @Override
+        public Adapter caseInputElementUIHints( InputElementUIHints object )
         {
             return createInputElementUIHintsAdapter();
         }
 
-        public Object caseInputParameterAttributes(
+        @Override
+        public Adapter caseInputParameterAttributes(
                 InputParameterAttributes object )
         {
             return createInputParameterAttributesAdapter();
         }
 
-        public Object caseInputParameterUIHints( InputParameterUIHints object )
+        @Override
+        public Adapter caseInputParameterUIHints( InputParameterUIHints object )
         {
             return createInputParameterUIHintsAdapter();
         }
 
-        public Object caseLocale( Locale object )
+        @Override
+        public Adapter caseLocale( Locale object )
         {
             return createLocaleAdapter();
         }
 
-        public Object caseNameValuePair( NameValuePair object )
+        @Override
+        public Adapter caseNameValuePair( NameValuePair object )
         {
             return createNameValuePairAdapter();
         }
 
-        public Object caseOdaDesignSession( OdaDesignSession object )
+        @Override
+        public Adapter caseNotExpression( NotExpression object )
+        {
+            return createNotExpressionAdapter();
+        }
+
+        @Override
+        public Adapter caseOdaDesignSession( OdaDesignSession object )
         {
             return createOdaDesignSessionAdapter();
         }
 
-        public Object caseOutputElementAttributes(
+        @Override
+        public Adapter caseOrExpression( OrExpression object )
+        {
+            return createOrExpressionAdapter();
+        }
+
+        @Override
+        public Adapter caseOutputElementAttributes(
                 OutputElementAttributes object )
         {
             return createOutputElementAttributesAdapter();
         }
 
-        public Object caseParameterDefinition( ParameterDefinition object )
+        @Override
+        public Adapter caseParameterDefinition( ParameterDefinition object )
         {
             return createParameterDefinitionAdapter();
         }
 
-        public Object caseParameterFieldDefinition(
+        @Override
+        public Adapter caseParameterFieldDefinition(
                 ParameterFieldDefinition object )
         {
             return createParameterFieldDefinitionAdapter();
         }
 
-        public Object caseParameterFields( ParameterFields object )
+        @Override
+        public Adapter caseParameterFields( ParameterFields object )
         {
             return createParameterFieldsAdapter();
         }
 
-        public Object caseProperties( Properties object )
+        @Override
+        public Adapter caseProperties( Properties object )
         {
             return createPropertiesAdapter();
         }
 
-        public Object caseProperty( Property object )
+        @Override
+        public Adapter caseProperty( Property object )
         {
             return createPropertyAdapter();
         }
 
-        public Object casePropertyAttributes( PropertyAttributes object )
+        @Override
+        public Adapter casePropertyAttributes( PropertyAttributes object )
         {
             return createPropertyAttributesAdapter();
         }
 
-        public Object caseResourceIdentifiers( ResourceIdentifiers object )
+        @Override
+        public Adapter caseResourceIdentifiers( ResourceIdentifiers object )
         {
             return createResourceIdentifiersAdapter();
         }
 
-        public Object caseResultSetColumns( ResultSetColumns object )
+        @Override
+        public Adapter caseResultSetColumns( ResultSetColumns object )
         {
             return createResultSetColumnsAdapter();
         }
 
-        public Object caseResultSetDefinition( ResultSetDefinition object )
+        @Override
+        public Adapter caseResultSetDefinition( ResultSetDefinition object )
         {
             return createResultSetDefinitionAdapter();
         }
 
-        public Object caseResultSets( ResultSets object )
+        @Override
+        public Adapter caseResultSets( ResultSets object )
         {
             return createResultSetsAdapter();
         }
 
-        public Object caseScalarValueChoices( ScalarValueChoices object )
+        @Override
+        public Adapter caseScalarValueChoices( ScalarValueChoices object )
         {
             return createScalarValueChoicesAdapter();
         }
 
-        public Object caseScalarValueDefinition( ScalarValueDefinition object )
+        @Override
+        public Adapter caseScalarValueDefinition( ScalarValueDefinition object )
         {
             return createScalarValueDefinitionAdapter();
         }
 
-        public Object caseValueFormatHints( ValueFormatHints object )
+        @Override
+        public Adapter caseValueFormatHints( ValueFormatHints object )
         {
             return createValueFormatHintsAdapter();
         }
 
-        public Object defaultCase( EObject object )
+        @Override
+        public Adapter defaultCase( EObject object )
         {
             return createEObjectAdapter();
         }
@@ -289,9 +404,40 @@
      * @return the adapter for the <code>target</code>.
      * @generated
      */
+    @Override
     public Adapter createAdapter( Notifier target )
     {
-        return (Adapter) modelSwitch.doSwitch( (EObject) target );
+        return modelSwitch.doSwitch( (EObject) target );
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.AndExpression <em>And 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.datatools.connectivity.oda.design.AndExpression
+     * @generated
+     */
+    public Adapter createAndExpressionAdapter()
+    {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.AtomicExpressionContext <em>Atomic Expression Context</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.datatools.connectivity.oda.design.AtomicExpressionContext
+     * @generated
+     */
+    public Adapter createAtomicExpressionContextAdapter()
+    {
+        return null;
     }
 
     /**
@@ -325,6 +471,36 @@
     }
 
     /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.CompositeFilterExpression <em>Composite Filter 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.datatools.connectivity.oda.design.CompositeFilterExpression
+     * @generated
+     */
+    public Adapter createCompositeFilterExpressionAdapter()
+    {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.CustomExpression <em>Custom 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.datatools.connectivity.oda.design.CustomExpression
+     * @generated
+     */
+    public Adapter createCustomExpressionAdapter()
+    {
+        return null;
+    }
+
+    /**
      * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.DataAccessDesign <em>Data Access Design</em>}'.
      * <!-- begin-user-doc -->
      * This default implementation returns null so that we can easily ignore cases;
@@ -505,6 +681,21 @@
     }
 
     /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.DynamicExpression <em>Dynamic 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.datatools.connectivity.oda.design.DynamicExpression
+     * @generated
+     */
+    public Adapter createDynamicExpressionAdapter()
+    {
+        return null;
+    }
+
+    /**
      * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.DynamicValuesQuery <em>Dynamic Values Query</em>}'.
      * <!-- begin-user-doc -->
      * This default implementation returns null so that we can easily ignore cases;
@@ -520,6 +711,81 @@
     }
 
     /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpression <em>Filter 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.datatools.connectivity.oda.design.FilterExpression
+     * @generated
+     */
+    public Adapter createFilterExpressionAdapter()
+    {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpressionArguments <em>Filter Expression Arguments</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.datatools.connectivity.oda.design.FilterExpressionArguments
+     * @generated
+     */
+    public Adapter createFilterExpressionArgumentsAdapter()
+    {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable <em>Filter Expression Variable</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.datatools.connectivity.oda.design.FilterExpressionVariable
+     * @generated
+     */
+    public Adapter createFilterExpressionVariableAdapter()
+    {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.FilterParameterDefinition <em>Filter Parameter Definition</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.datatools.connectivity.oda.design.FilterParameterDefinition
+     * @generated
+     */
+    public Adapter createFilterParameterDefinitionAdapter()
+    {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.FilterParameters <em>Filter Parameters</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.datatools.connectivity.oda.design.FilterParameters
+     * @generated
+     */
+    public Adapter createFilterParametersAdapter()
+    {
+        return null;
+    }
+
+    /**
      * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.InputElementAttributes <em>Input Element Attributes</em>}'.
      * <!-- begin-user-doc -->
      * This default implementation returns null so that we can easily ignore cases;
@@ -610,6 +876,21 @@
     }
 
     /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.NotExpression <em>Not 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.datatools.connectivity.oda.design.NotExpression
+     * @generated
+     */
+    public Adapter createNotExpressionAdapter()
+    {
+        return null;
+    }
+
+    /**
      * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.OdaDesignSession <em>Oda Design Session</em>}'.
      * <!-- begin-user-doc -->
      * This default implementation returns null so that we can easily ignore cases;
@@ -625,6 +906,21 @@
     }
 
     /**
+     * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.OrExpression <em>Or 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.datatools.connectivity.oda.design.OrExpression
+     * @generated
+     */
+    public Adapter createOrExpressionAdapter()
+    {
+        return null;
+    }
+
+    /**
      * Creates a new adapter for an object of class '{@link org.eclipse.datatools.connectivity.oda.design.OutputElementAttributes <em>Output Element Attributes</em>}'.
      * <!-- begin-user-doc -->
      * This default implementation returns null so that we can easily ignore cases;
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignSwitch.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignSwitch.java
index 6d4c2f3..517d67a 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignSwitch.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignSwitch.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2008 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,7 +11,7 @@
  *  
  *************************************************************************
  *
- * $Id: DesignSwitch.java,v 1.3 2007/04/11 02:59:53 lchan Exp $
+ * $Id: DesignSwitch.java,v 1.4 2008/07/23 04:12:28 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design.util;
 
@@ -35,14 +35,14 @@
  * @see org.eclipse.datatools.connectivity.oda.design.DesignPackage
  * @generated
  */
-public class DesignSwitch
+public class DesignSwitch<T>
 {
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    public static final String copyright = "Copyright (c) 2005, 2008 Actuate Corporation"; //$NON-NLS-1$
+    public static final String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
 
     /**
      * The cached model package
@@ -73,7 +73,7 @@
      * @return the first non-null result returned by a <code>caseXXX</code> call.
      * @generated
      */
-    public Object doSwitch( EObject theEObject )
+    public T doSwitch( EObject theEObject )
     {
         return doSwitch( theEObject.eClass(), theEObject );
     }
@@ -85,7 +85,7 @@
      * @return the first non-null result returned by a <code>caseXXX</code> call.
      * @generated
      */
-    protected Object doSwitch( EClass theEClass, EObject theEObject )
+    protected T doSwitch( EClass theEClass, EObject theEObject )
     {
         if( theEClass.eContainer() == modelPackage )
         {
@@ -93,9 +93,9 @@
         }
         else
         {
-            List eSuperTypes = theEClass.getESuperTypes();
+            List<EClass> eSuperTypes = theEClass.getESuperTypes();
             return eSuperTypes.isEmpty() ? defaultCase( theEObject )
-                    : doSwitch( (EClass) eSuperTypes.get( 0 ), theEObject );
+                    : doSwitch( eSuperTypes.get( 0 ), theEObject );
         }
     }
 
@@ -106,14 +106,34 @@
      * @return the first non-null result returned by a <code>caseXXX</code> call.
      * @generated
      */
-    protected Object doSwitch( int classifierID, EObject theEObject )
+    protected T doSwitch( int classifierID, EObject theEObject )
     {
         switch( classifierID )
         {
+        case DesignPackage.AND_EXPRESSION:
+        {
+            AndExpression andExpression = (AndExpression) theEObject;
+            T result = caseAndExpression( andExpression );
+            if( result == null )
+                result = caseCompositeFilterExpression( andExpression );
+            if( result == null )
+                result = caseFilterExpression( andExpression );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.ATOMIC_EXPRESSION_CONTEXT:
+        {
+            AtomicExpressionContext atomicExpressionContext = (AtomicExpressionContext) theEObject;
+            T result = caseAtomicExpressionContext( atomicExpressionContext );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
         case DesignPackage.AXIS_ATTRIBUTES:
         {
             AxisAttributes axisAttributes = (AxisAttributes) theEObject;
-            Object result = caseAxisAttributes( axisAttributes );
+            T result = caseAxisAttributes( axisAttributes );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -121,7 +141,27 @@
         case DesignPackage.COLUMN_DEFINITION:
         {
             ColumnDefinition columnDefinition = (ColumnDefinition) theEObject;
-            Object result = caseColumnDefinition( columnDefinition );
+            T result = caseColumnDefinition( columnDefinition );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.COMPOSITE_FILTER_EXPRESSION:
+        {
+            CompositeFilterExpression compositeFilterExpression = (CompositeFilterExpression) theEObject;
+            T result = caseCompositeFilterExpression( compositeFilterExpression );
+            if( result == null )
+                result = caseFilterExpression( compositeFilterExpression );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.CUSTOM_EXPRESSION:
+        {
+            CustomExpression customExpression = (CustomExpression) theEObject;
+            T result = caseCustomExpression( customExpression );
+            if( result == null )
+                result = caseFilterExpression( customExpression );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -129,7 +169,7 @@
         case DesignPackage.DATA_ACCESS_DESIGN:
         {
             DataAccessDesign dataAccessDesign = (DataAccessDesign) theEObject;
-            Object result = caseDataAccessDesign( dataAccessDesign );
+            T result = caseDataAccessDesign( dataAccessDesign );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -137,7 +177,7 @@
         case DesignPackage.DATA_ELEMENT_ATTRIBUTES:
         {
             DataElementAttributes dataElementAttributes = (DataElementAttributes) theEObject;
-            Object result = caseDataElementAttributes( dataElementAttributes );
+            T result = caseDataElementAttributes( dataElementAttributes );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -145,7 +185,7 @@
         case DesignPackage.DATA_ELEMENT_UI_HINTS:
         {
             DataElementUIHints dataElementUIHints = (DataElementUIHints) theEObject;
-            Object result = caseDataElementUIHints( dataElementUIHints );
+            T result = caseDataElementUIHints( dataElementUIHints );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -153,7 +193,7 @@
         case DesignPackage.DATA_SET_DESIGN:
         {
             DataSetDesign dataSetDesign = (DataSetDesign) theEObject;
-            Object result = caseDataSetDesign( dataSetDesign );
+            T result = caseDataSetDesign( dataSetDesign );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -161,7 +201,7 @@
         case DesignPackage.DATA_SET_PARAMETERS:
         {
             DataSetParameters dataSetParameters = (DataSetParameters) theEObject;
-            Object result = caseDataSetParameters( dataSetParameters );
+            T result = caseDataSetParameters( dataSetParameters );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -169,7 +209,7 @@
         case DesignPackage.DATA_SET_QUERY:
         {
             DataSetQuery dataSetQuery = (DataSetQuery) theEObject;
-            Object result = caseDataSetQuery( dataSetQuery );
+            T result = caseDataSetQuery( dataSetQuery );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -177,7 +217,7 @@
         case DesignPackage.DATA_SOURCE_DESIGN:
         {
             DataSourceDesign dataSourceDesign = (DataSourceDesign) theEObject;
-            Object result = caseDataSourceDesign( dataSourceDesign );
+            T result = caseDataSourceDesign( dataSourceDesign );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -185,7 +225,7 @@
         case DesignPackage.DESIGNER_STATE:
         {
             DesignerState designerState = (DesignerState) theEObject;
-            Object result = caseDesignerState( designerState );
+            T result = caseDesignerState( designerState );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -193,7 +233,7 @@
         case DesignPackage.DESIGNER_STATE_CONTENT:
         {
             DesignerStateContent designerStateContent = (DesignerStateContent) theEObject;
-            Object result = caseDesignerStateContent( designerStateContent );
+            T result = caseDesignerStateContent( designerStateContent );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -201,7 +241,7 @@
         case DesignPackage.DESIGN_SESSION_REQUEST:
         {
             DesignSessionRequest designSessionRequest = (DesignSessionRequest) theEObject;
-            Object result = caseDesignSessionRequest( designSessionRequest );
+            T result = caseDesignSessionRequest( designSessionRequest );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -209,7 +249,7 @@
         case DesignPackage.DESIGN_SESSION_RESPONSE:
         {
             DesignSessionResponse designSessionResponse = (DesignSessionResponse) theEObject;
-            Object result = caseDesignSessionResponse( designSessionResponse );
+            T result = caseDesignSessionResponse( designSessionResponse );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -217,7 +257,17 @@
         case DesignPackage.DOCUMENT_ROOT:
         {
             DocumentRoot documentRoot = (DocumentRoot) theEObject;
-            Object result = caseDocumentRoot( documentRoot );
+            T result = caseDocumentRoot( documentRoot );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.DYNAMIC_EXPRESSION:
+        {
+            DynamicExpression dynamicExpression = (DynamicExpression) theEObject;
+            T result = caseDynamicExpression( dynamicExpression );
+            if( result == null )
+                result = caseFilterExpression( dynamicExpression );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -225,7 +275,47 @@
         case DesignPackage.DYNAMIC_VALUES_QUERY:
         {
             DynamicValuesQuery dynamicValuesQuery = (DynamicValuesQuery) theEObject;
-            Object result = caseDynamicValuesQuery( dynamicValuesQuery );
+            T result = caseDynamicValuesQuery( dynamicValuesQuery );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.FILTER_EXPRESSION:
+        {
+            FilterExpression filterExpression = (FilterExpression) theEObject;
+            T result = caseFilterExpression( filterExpression );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.FILTER_EXPRESSION_ARGUMENTS:
+        {
+            FilterExpressionArguments filterExpressionArguments = (FilterExpressionArguments) theEObject;
+            T result = caseFilterExpressionArguments( filterExpressionArguments );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.FILTER_EXPRESSION_VARIABLE:
+        {
+            FilterExpressionVariable filterExpressionVariable = (FilterExpressionVariable) theEObject;
+            T result = caseFilterExpressionVariable( filterExpressionVariable );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.FILTER_PARAMETER_DEFINITION:
+        {
+            FilterParameterDefinition filterParameterDefinition = (FilterParameterDefinition) theEObject;
+            T result = caseFilterParameterDefinition( filterParameterDefinition );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.FILTER_PARAMETERS:
+        {
+            FilterParameters filterParameters = (FilterParameters) theEObject;
+            T result = caseFilterParameters( filterParameters );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -233,7 +323,7 @@
         case DesignPackage.INPUT_ELEMENT_ATTRIBUTES:
         {
             InputElementAttributes inputElementAttributes = (InputElementAttributes) theEObject;
-            Object result = caseInputElementAttributes( inputElementAttributes );
+            T result = caseInputElementAttributes( inputElementAttributes );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -241,7 +331,7 @@
         case DesignPackage.INPUT_ELEMENT_UI_HINTS:
         {
             InputElementUIHints inputElementUIHints = (InputElementUIHints) theEObject;
-            Object result = caseInputElementUIHints( inputElementUIHints );
+            T result = caseInputElementUIHints( inputElementUIHints );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -249,7 +339,7 @@
         case DesignPackage.INPUT_PARAMETER_ATTRIBUTES:
         {
             InputParameterAttributes inputParameterAttributes = (InputParameterAttributes) theEObject;
-            Object result = caseInputParameterAttributes( inputParameterAttributes );
+            T result = caseInputParameterAttributes( inputParameterAttributes );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -257,7 +347,7 @@
         case DesignPackage.INPUT_PARAMETER_UI_HINTS:
         {
             InputParameterUIHints inputParameterUIHints = (InputParameterUIHints) theEObject;
-            Object result = caseInputParameterUIHints( inputParameterUIHints );
+            T result = caseInputParameterUIHints( inputParameterUIHints );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -265,7 +355,7 @@
         case DesignPackage.LOCALE:
         {
             Locale locale = (Locale) theEObject;
-            Object result = caseLocale( locale );
+            T result = caseLocale( locale );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -273,7 +363,17 @@
         case DesignPackage.NAME_VALUE_PAIR:
         {
             NameValuePair nameValuePair = (NameValuePair) theEObject;
-            Object result = caseNameValuePair( nameValuePair );
+            T result = caseNameValuePair( nameValuePair );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.NOT_EXPRESSION:
+        {
+            NotExpression notExpression = (NotExpression) theEObject;
+            T result = caseNotExpression( notExpression );
+            if( result == null )
+                result = caseFilterExpression( notExpression );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -281,7 +381,19 @@
         case DesignPackage.ODA_DESIGN_SESSION:
         {
             OdaDesignSession odaDesignSession = (OdaDesignSession) theEObject;
-            Object result = caseOdaDesignSession( odaDesignSession );
+            T result = caseOdaDesignSession( odaDesignSession );
+            if( result == null )
+                result = defaultCase( theEObject );
+            return result;
+        }
+        case DesignPackage.OR_EXPRESSION:
+        {
+            OrExpression orExpression = (OrExpression) theEObject;
+            T result = caseOrExpression( orExpression );
+            if( result == null )
+                result = caseCompositeFilterExpression( orExpression );
+            if( result == null )
+                result = caseFilterExpression( orExpression );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -289,7 +401,7 @@
         case DesignPackage.OUTPUT_ELEMENT_ATTRIBUTES:
         {
             OutputElementAttributes outputElementAttributes = (OutputElementAttributes) theEObject;
-            Object result = caseOutputElementAttributes( outputElementAttributes );
+            T result = caseOutputElementAttributes( outputElementAttributes );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -297,7 +409,7 @@
         case DesignPackage.PARAMETER_DEFINITION:
         {
             ParameterDefinition parameterDefinition = (ParameterDefinition) theEObject;
-            Object result = caseParameterDefinition( parameterDefinition );
+            T result = caseParameterDefinition( parameterDefinition );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -305,7 +417,7 @@
         case DesignPackage.PARAMETER_FIELD_DEFINITION:
         {
             ParameterFieldDefinition parameterFieldDefinition = (ParameterFieldDefinition) theEObject;
-            Object result = caseParameterFieldDefinition( parameterFieldDefinition );
+            T result = caseParameterFieldDefinition( parameterFieldDefinition );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -313,7 +425,7 @@
         case DesignPackage.PARAMETER_FIELDS:
         {
             ParameterFields parameterFields = (ParameterFields) theEObject;
-            Object result = caseParameterFields( parameterFields );
+            T result = caseParameterFields( parameterFields );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -321,7 +433,7 @@
         case DesignPackage.PROPERTIES:
         {
             Properties properties = (Properties) theEObject;
-            Object result = caseProperties( properties );
+            T result = caseProperties( properties );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -329,7 +441,7 @@
         case DesignPackage.PROPERTY:
         {
             Property property = (Property) theEObject;
-            Object result = caseProperty( property );
+            T result = caseProperty( property );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -337,7 +449,7 @@
         case DesignPackage.PROPERTY_ATTRIBUTES:
         {
             PropertyAttributes propertyAttributes = (PropertyAttributes) theEObject;
-            Object result = casePropertyAttributes( propertyAttributes );
+            T result = casePropertyAttributes( propertyAttributes );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -345,7 +457,7 @@
         case DesignPackage.RESOURCE_IDENTIFIERS:
         {
             ResourceIdentifiers resourceIdentifiers = (ResourceIdentifiers) theEObject;
-            Object result = caseResourceIdentifiers( resourceIdentifiers );
+            T result = caseResourceIdentifiers( resourceIdentifiers );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -353,7 +465,7 @@
         case DesignPackage.RESULT_SET_COLUMNS:
         {
             ResultSetColumns resultSetColumns = (ResultSetColumns) theEObject;
-            Object result = caseResultSetColumns( resultSetColumns );
+            T result = caseResultSetColumns( resultSetColumns );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -361,7 +473,7 @@
         case DesignPackage.RESULT_SET_DEFINITION:
         {
             ResultSetDefinition resultSetDefinition = (ResultSetDefinition) theEObject;
-            Object result = caseResultSetDefinition( resultSetDefinition );
+            T result = caseResultSetDefinition( resultSetDefinition );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -369,7 +481,7 @@
         case DesignPackage.RESULT_SETS:
         {
             ResultSets resultSets = (ResultSets) theEObject;
-            Object result = caseResultSets( resultSets );
+            T result = caseResultSets( resultSets );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -377,7 +489,7 @@
         case DesignPackage.SCALAR_VALUE_CHOICES:
         {
             ScalarValueChoices scalarValueChoices = (ScalarValueChoices) theEObject;
-            Object result = caseScalarValueChoices( scalarValueChoices );
+            T result = caseScalarValueChoices( scalarValueChoices );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -385,7 +497,7 @@
         case DesignPackage.SCALAR_VALUE_DEFINITION:
         {
             ScalarValueDefinition scalarValueDefinition = (ScalarValueDefinition) theEObject;
-            Object result = caseScalarValueDefinition( scalarValueDefinition );
+            T result = caseScalarValueDefinition( scalarValueDefinition );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -393,7 +505,7 @@
         case DesignPackage.VALUE_FORMAT_HINTS:
         {
             ValueFormatHints valueFormatHints = (ValueFormatHints) theEObject;
-            Object result = caseValueFormatHints( valueFormatHints );
+            T result = caseValueFormatHints( valueFormatHints );
             if( result == null )
                 result = defaultCase( theEObject );
             return result;
@@ -404,593 +516,785 @@
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Axis Attributes</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>And 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 interpretting the object as an instance of '<em>Axis Attributes</em>'.
+     * @return the result of interpreting the object as an instance of '<em>And Expression</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseAxisAttributes( AxisAttributes object )
+    public T caseAndExpression( AndExpression object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Column Definition</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Atomic Expression Context</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 interpretting the object as an instance of '<em>Column Definition</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Atomic Expression Context</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseColumnDefinition( ColumnDefinition object )
+    public T caseAtomicExpressionContext( AtomicExpressionContext object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Data Access Design</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Axis Attributes</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 interpretting the object as an instance of '<em>Data Access Design</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Axis Attributes</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDataAccessDesign( DataAccessDesign object )
+    public T caseAxisAttributes( AxisAttributes object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Data Element Attributes</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Column Definition</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 interpretting the object as an instance of '<em>Data Element Attributes</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Column Definition</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDataElementAttributes( DataElementAttributes object )
+    public T caseColumnDefinition( ColumnDefinition object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Data Element UI Hints</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Composite Filter 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 interpretting the object as an instance of '<em>Data Element UI Hints</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Composite Filter Expression</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDataElementUIHints( DataElementUIHints object )
+    public T caseCompositeFilterExpression( CompositeFilterExpression object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Data Set Design</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Custom 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 interpretting the object as an instance of '<em>Data Set Design</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Custom Expression</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDataSetDesign( DataSetDesign object )
+    public T caseCustomExpression( CustomExpression object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Data Set Parameters</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Data Access Design</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 interpretting the object as an instance of '<em>Data Set Parameters</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Data Access Design</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDataSetParameters( DataSetParameters object )
+    public T caseDataAccessDesign( DataAccessDesign object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Data Set Query</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Data Element Attributes</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 interpretting the object as an instance of '<em>Data Set Query</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Data Element Attributes</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDataSetQuery( DataSetQuery object )
+    public T caseDataElementAttributes( DataElementAttributes object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Data Source Design</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Data Element UI Hints</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 interpretting the object as an instance of '<em>Data Source Design</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Data Element UI Hints</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDataSourceDesign( DataSourceDesign object )
+    public T caseDataElementUIHints( DataElementUIHints object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Designer State</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Data Set Design</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 interpretting the object as an instance of '<em>Designer State</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Data Set Design</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDesignerState( DesignerState object )
+    public T caseDataSetDesign( DataSetDesign object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Designer State Content</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Data Set Parameters</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 interpretting the object as an instance of '<em>Designer State Content</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Data Set Parameters</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDesignerStateContent( DesignerStateContent object )
+    public T caseDataSetParameters( DataSetParameters object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Session Request</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Data Set Query</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 interpretting the object as an instance of '<em>Session Request</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Data Set Query</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDesignSessionRequest( DesignSessionRequest object )
+    public T caseDataSetQuery( DataSetQuery object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Session Response</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Data Source Design</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 interpretting the object as an instance of '<em>Session Response</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Data Source Design</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDesignSessionResponse( DesignSessionResponse object )
+    public T caseDataSourceDesign( DataSourceDesign object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Document Root</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Designer State</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 interpretting the object as an instance of '<em>Document Root</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Designer State</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDocumentRoot( DocumentRoot object )
+    public T caseDesignerState( DesignerState object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Dynamic Values Query</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Designer State Content</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 interpretting the object as an instance of '<em>Dynamic Values Query</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Designer State Content</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseDynamicValuesQuery( DynamicValuesQuery object )
+    public T caseDesignerStateContent( DesignerStateContent object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Input Element Attributes</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Session Request</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 interpretting the object as an instance of '<em>Input Element Attributes</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Session Request</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseInputElementAttributes( InputElementAttributes object )
+    public T caseDesignSessionRequest( DesignSessionRequest object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Input Element UI Hints</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Session Response</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 interpretting the object as an instance of '<em>Input Element UI Hints</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Session Response</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseInputElementUIHints( InputElementUIHints object )
+    public T caseDesignSessionResponse( DesignSessionResponse object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Input Parameter Attributes</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Document Root</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 interpretting the object as an instance of '<em>Input Parameter Attributes</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Document Root</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseInputParameterAttributes( InputParameterAttributes object )
+    public T caseDocumentRoot( DocumentRoot object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Input Parameter UI Hints</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Dynamic 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 interpretting the object as an instance of '<em>Input Parameter UI Hints</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Dynamic Expression</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseInputParameterUIHints( InputParameterUIHints object )
+    public T caseDynamicExpression( DynamicExpression object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Locale</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Dynamic Values Query</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 interpretting the object as an instance of '<em>Locale</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Dynamic Values Query</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseLocale( Locale object )
+    public T caseDynamicValuesQuery( DynamicValuesQuery object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Name Value Pair</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Filter 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 interpretting the object as an instance of '<em>Name Value Pair</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Filter Expression</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseNameValuePair( NameValuePair object )
+    public T caseFilterExpression( FilterExpression object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Oda Design Session</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Filter Expression Arguments</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 interpretting the object as an instance of '<em>Oda Design Session</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Filter Expression Arguments</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseOdaDesignSession( OdaDesignSession object )
+    public T caseFilterExpressionArguments( FilterExpressionArguments object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Output Element Attributes</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Filter Expression Variable</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 interpretting the object as an instance of '<em>Output Element Attributes</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Filter Expression Variable</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseOutputElementAttributes( OutputElementAttributes object )
+    public T caseFilterExpressionVariable( FilterExpressionVariable object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Parameter Definition</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Filter Parameter Definition</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 interpretting the object as an instance of '<em>Parameter Definition</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Filter Parameter Definition</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseParameterDefinition( ParameterDefinition object )
+    public T caseFilterParameterDefinition( FilterParameterDefinition object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Parameter Field Definition</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Filter Parameters</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 interpretting the object as an instance of '<em>Parameter Field Definition</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Filter Parameters</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseParameterFieldDefinition( ParameterFieldDefinition object )
+    public T caseFilterParameters( FilterParameters object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Parameter Fields</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Input Element Attributes</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 interpretting the object as an instance of '<em>Parameter Fields</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Input Element Attributes</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseParameterFields( ParameterFields object )
+    public T caseInputElementAttributes( InputElementAttributes object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Properties</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Input Element UI Hints</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 interpretting the object as an instance of '<em>Properties</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Input Element UI Hints</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseProperties( Properties object )
+    public T caseInputElementUIHints( InputElementUIHints object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Property</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Input Parameter Attributes</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 interpretting the object as an instance of '<em>Property</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Input Parameter Attributes</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseProperty( Property object )
+    public T caseInputParameterAttributes( InputParameterAttributes object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Property Attributes</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Input Parameter UI Hints</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 interpretting the object as an instance of '<em>Property Attributes</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Input Parameter UI Hints</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object casePropertyAttributes( PropertyAttributes object )
+    public T caseInputParameterUIHints( InputParameterUIHints object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Resource Identifiers</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Locale</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 interpretting the object as an instance of '<em>Resource Identifiers</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Locale</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseResourceIdentifiers( ResourceIdentifiers object )
+    public T caseLocale( Locale object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Result Set Columns</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Name Value Pair</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 interpretting the object as an instance of '<em>Result Set Columns</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Name Value Pair</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseResultSetColumns( ResultSetColumns object )
+    public T caseNameValuePair( NameValuePair object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Result Set Definition</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Not 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 interpretting the object as an instance of '<em>Result Set Definition</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Not Expression</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseResultSetDefinition( ResultSetDefinition object )
+    public T caseNotExpression( NotExpression object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Result Sets</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Oda Design Session</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 interpretting the object as an instance of '<em>Result Sets</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Oda Design Session</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseResultSets( ResultSets object )
+    public T caseOdaDesignSession( OdaDesignSession object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Scalar Value Choices</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Or 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 interpretting the object as an instance of '<em>Scalar Value Choices</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Or Expression</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseScalarValueChoices( ScalarValueChoices object )
+    public T caseOrExpression( OrExpression object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Scalar Value Definition</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Output Element Attributes</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 interpretting the object as an instance of '<em>Scalar Value Definition</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Output Element Attributes</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseScalarValueDefinition( ScalarValueDefinition object )
+    public T caseOutputElementAttributes( OutputElementAttributes object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>Value Format Hints</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Parameter Definition</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 interpretting the object as an instance of '<em>Value Format Hints</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Parameter Definition</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public Object caseValueFormatHints( ValueFormatHints object )
+    public T caseParameterDefinition( ParameterDefinition object )
     {
         return null;
     }
 
     /**
-     * Returns the result of interpretting the object as an instance of '<em>EObject</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>Parameter Field Definition</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>Parameter Field Definition</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseParameterFieldDefinition( ParameterFieldDefinition object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Parameter Fields</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>Parameter Fields</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseParameterFields( ParameterFields object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Properties</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>Properties</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseProperties( Properties object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Property</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>Property</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseProperty( Property object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Property Attributes</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>Property Attributes</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T casePropertyAttributes( PropertyAttributes object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Resource Identifiers</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>Resource Identifiers</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseResourceIdentifiers( ResourceIdentifiers object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Result Set Columns</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>Result Set Columns</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseResultSetColumns( ResultSetColumns object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Result Set Definition</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>Result Set Definition</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseResultSetDefinition( ResultSetDefinition object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Result Sets</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>Result Sets</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseResultSets( ResultSets object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Scalar Value Choices</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>Scalar Value Choices</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseScalarValueChoices( ScalarValueChoices object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Scalar Value Definition</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>Scalar Value Definition</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseScalarValueDefinition( ScalarValueDefinition object )
+    {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Value Format Hints</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>Value Format Hints</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseValueFormatHints( ValueFormatHints 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 interpretting the object as an instance of '<em>EObject</em>'.
+     * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject)
      * @generated
      */
-    public Object defaultCase( EObject object )
+    public T defaultCase( EObject object )
     {
         return null;
     }
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignXMLProcessor.java b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignXMLProcessor.java
index 801798f..3854980 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignXMLProcessor.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design/src/org/eclipse/datatools/connectivity/oda/design/util/DesignXMLProcessor.java
@@ -1,6 +1,6 @@
 /**
  *************************************************************************
- * Copyright (c) 2005, 2007 Actuate Corporation.
+ * Copyright (c) 2005, 2009 Actuate Corporation.
  * 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
@@ -11,7 +11,7 @@
  *  
  *************************************************************************
  *
- * $Id: DesignXMLProcessor.java,v 1.1 2007/04/11 02:59:53 lchan Exp $
+ * $Id: DesignXMLProcessor.java,v 1.2 2007/11/17 05:30:20 lchan Exp $
  */
 package org.eclipse.datatools.connectivity.oda.design.util;
 
@@ -40,7 +40,7 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    public static final String copyright = "Copyright (c) 2005, 2007 Actuate Corporation"; //$NON-NLS-1$
+    public static final String copyright = "Copyright (c) 2005, 2009 Actuate Corporation"; //$NON-NLS-1$
 
     /**
      * Public constructor to instantiate the helper.
@@ -60,7 +60,8 @@
      * <!-- end-user-doc -->
      * @generated
      */
-    protected Map getRegistrations()
+    @Override
+    protected Map<String, Resource.Factory> getRegistrations()
     {
         if( registrations == null )
         {
@@ -82,15 +83,17 @@
     {
         ResourceSet resourceSet = createResourceSet();
         // Register the Design package to ensure it is available during loading.
-        resourceSet.getPackageRegistry().put( DesignPackage.eNS_URI, DesignPackage.eINSTANCE );
+        resourceSet.getPackageRegistry().put( DesignPackage.eNS_URI,
+                DesignPackage.eINSTANCE );
 
         XMLResource resource = (XMLResource) resourceSet.createResource( uri );
- 
+
         // Use the OPTION_SCHEMA_LOCATION_IMPLEMENTATION option to avoid pre-registration 
         // of the generated packages 
-        resource.getDefaultSaveOptions().put( XMLResource.OPTION_SCHEMA_LOCATION_IMPLEMENTATION, 
-                Boolean.TRUE); 
+        resource.getDefaultSaveOptions()
+                .put( XMLResource.OPTION_SCHEMA_LOCATION_IMPLEMENTATION,
+                        Boolean.TRUE );
         return resource;
     }
-    
+
 } //DesignXMLProcessor
diff --git a/plugins/org.eclipse.datatools.connectivity.oda/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.datatools.connectivity.oda/.settings/org.eclipse.jdt.core.prefs
index 05f6590..1c0f5eb 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.datatools.connectivity.oda/.settings/org.eclipse.jdt.core.prefs
@@ -1,13 +1,13 @@
-#Fri Apr 13 14:14:14 PDT 2007
+#Thu May 17 18:30:45 PDT 2007
 eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.compliance=1.5
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.source=1.4
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.datatools.connectivity.oda/META-INF/MANIFEST.MF b/plugins/org.eclipse.datatools.connectivity.oda/META-INF/MANIFEST.MF
index 714b540..d086d9e 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.datatools.connectivity.oda/META-INF/MANIFEST.MF
@@ -2,16 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: DTP Open Data Access
 Bundle-SymbolicName: org.eclipse.datatools.connectivity.oda; singleton:=true
-Bundle-Version: 3.1.3.qualifier
+Bundle-Version: 3.2.0.qualifier
 Bundle-Vendor: Eclipse.org
 Export-Package: org.eclipse.datatools.connectivity.oda,
+ org.eclipse.datatools.connectivity.oda.filter;x-internal:=true,
+ org.eclipse.datatools.connectivity.oda.filter.expressions;x-internal:=true,
+ org.eclipse.datatools.connectivity.oda.filter.manifest;x-internal:=true,
  org.eclipse.datatools.connectivity.oda.impl,
  org.eclipse.datatools.connectivity.oda.util,
  org.eclipse.datatools.connectivity.oda.util.logging,
  org.eclipse.datatools.connectivity.oda.util.manifest
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.3.0,4.0.0)",
  com.ibm.icu;bundle-version="[3.4.4,5.0.0)";visibility:=reexport
 Eclipse-LazyStart: true
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.eclipse.datatools.connectivity.oda.util.OdaPlugin
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.datatools.connectivity.oda/plugin.xml b/plugins/org.eclipse.datatools.connectivity.oda/plugin.xml
index dfab9ef..031b367 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda/plugin.xml
+++ b/plugins/org.eclipse.datatools.connectivity.oda/plugin.xml
@@ -3,7 +3,7 @@
 <!--
 /**
  *************************************************************************
- * Copyright (c) 2004, 2006 Actuate Corporation.
+ * Copyright (c) 2004, 2009 Actuate Corporation.
  * 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
@@ -14,10 +14,11 @@
  *  
  *************************************************************************
  *
- * $Id: $
+ * $Id: plugin.xml,v 1.13 2006/03/10 00:43:15 lchan Exp $
  */
 -->
 
 <plugin>
-    	<extension-point id="dataSource" name="Open Data Access Design and Run-time Extension" schema="schema/datasource.exsd"/>
+     <extension-point id="dataSource" name="Open Data Access Design and Run-time Extension" schema="schema/datasource.exsd"/>
+     <extension-point id="filterExpressions" name="ODA Filter Expressions" schema="schema/filterExpressions.exsd"/>
 </plugin>
diff --git a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/IQuery.java b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/IQuery.java
index 606aa4f..904260e 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/IQuery.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/IQuery.java
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- * Copyright (c) 2004, 2007 Actuate Corporation.
+ * Copyright (c) 2004, 2009 Actuate Corporation.
  * 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
@@ -19,6 +19,8 @@
 import java.sql.Time;
 import java.sql.Timestamp;
 
+//import org.eclipse.datatools.connectivity.oda.filter.Expression;
+
 /**
  * The base query interface to  
  * prepare and execute a query text to retrieve data.
@@ -350,5 +352,38 @@
 	 */
 	public SortSpec getSortSpec() throws OdaException;
 	
+	/**
+     * <strong>EXPERIMENTAL</strong>.
+	 * Sets the filter specification to use in preparing this query.
+	 * <b>Note:</b> This method must be called before {@link #prepare(String)}.
+	 * @param filterExpr	a filter {@link Expression} with associated variable 
+	 *             and argument values, as appropriate
+     * @throws OdaException     if data source error occurs
+	 * @since 3.2 (DTP 1.7)
+	 */
+//	public void setFilterSpec( Expression filterExpr ) throws OdaException;
+
+	/**
+     * <strong>EXPERIMENTAL</strong>.
+	 * Gets the current effective filter specification of this query.
+	 * It may have been specified explicitly by {@link #setFilterSpec(Expression)}, or 
+	 * implicitly based on pre-defined filter described by the query text 
+	 * prepared in {@link #prepare(String)}. 
+	 * @return the currently effective filter specification
+     * @since 3.2 (DTP 1.7)
+	 */
+//	public Expression getFilterSpec();
+	
+	/**
+     * <strong>EXPERIMENTAL</strong>.
+     * Gets the current effective query text prepared by {@link #prepare(String)}.
+     * The effective query text may have been adjusted to include 
+     * this IQuery's specification, such as the filter and sort specifications.
+     * @return  the current effective query text,
+     *          or null if no query text is effective or available 
+     * @since 3.2 (DTP 1.7)
+     */
+//	public String getEffectiveQueryText();
+	
 }
 
diff --git a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/impl/SimpleQuery.java b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/impl/SimpleQuery.java
index 9244125..f2b6282 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/impl/SimpleQuery.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/impl/SimpleQuery.java
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- * Copyright (c) 2004, 2007 Actuate Corporation.
+ * Copyright (c) 2004, 2009 Actuate Corporation.
  * 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
@@ -24,6 +24,7 @@
 import org.eclipse.datatools.connectivity.oda.IQuery;
 import org.eclipse.datatools.connectivity.oda.OdaException;
 import org.eclipse.datatools.connectivity.oda.SortSpec;
+import org.eclipse.datatools.connectivity.oda.filter.Expression;
 
 /**
  * Default implementation of IQuery 
@@ -33,8 +34,8 @@
 public class SimpleQuery implements IQuery
 {
 	private int m_maxRows;
-	
-	/*
+
+    /*
 	 * @see org.eclipse.datatools.connectivity.oda.IQuery#prepare(java.lang.String)
 	 */
 	public void prepare( String queryText ) throws OdaException
@@ -282,7 +283,8 @@
 	 */
 	public void setSortSpec( SortSpec sortBy ) throws OdaException
 	{
-		// only applies to sorting
+        // TODO data source dependent
+        throw new UnsupportedOperationException( "Please override and implement me." ); //$NON-NLS-1$
 	}
 
 	/*
@@ -293,4 +295,24 @@
 		// only applies to sorting
 		return null;
 	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#setFilterSpec(org.eclipse.datatools.connectivity.oda.filter.Expression)
+     */
+    public void setFilterSpec( Expression filterExpr ) throws OdaException
+    {
+        // TODO data source dependent
+        throw new UnsupportedOperationException( "Please override and implement me." ); //$NON-NLS-1$
+        
+    }
+	   
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#getFilterSpec()
+     */
+    public Expression getFilterSpec()
+    {
+        // TODO data source dependent
+        return null;
+    }
+
 }
diff --git a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/nls/Messages.java b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/nls/Messages.java
index 29817e8..ed89cf4 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/nls/Messages.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/nls/Messages.java
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- * Copyright (c) 2004, 2007 Actuate Corporation.
+ * Copyright (c) 2004, 2009 Actuate Corporation.
  * 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
@@ -33,7 +33,6 @@
     public static String logManager_duplicateName;    
 
     public static String manifest_nullArgument;
-	public static String manifest_NO_DRIVER_RUNTIME_CONFIGURATION_DEFINED;
 	public static String manifest_NO_DATA_SOURCE_EXTN_ID_DEFINED;
 	public static String manifest_INVALID_VERSION_VALUE;
 	public static String manifest_NO_DRIVER_CLASS_DEFINED;
@@ -48,6 +47,8 @@
 	public static String manifest_NO_ODA_SCALAR_DATA_TYPE_DEFINED_2;
 	public static String manifest_INVALID_ODA_SCALAR_DATA_TYPE_VALUE;
 	public static String manifest_INVALID_LOG_LEVEL_VALUE;
+
+    public static String manifest_MISSING_ELEMENT_IN_EXTENSION_MANIFEST;
 	public static String manifest_NO_LOG_FILENAME_PREFIX_DEFINED;
 
     public static String profileProperty_GROUP_PROPERTIES;
diff --git a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/nls/messages.properties b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/nls/messages.properties
index d12a2b4..6beb01a 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/nls/messages.properties
+++ b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/nls/messages.properties
@@ -1,6 +1,6 @@
 #
 #************************************************************************
-# Copyright (c) 2004, 2007 Actuate Corporation.
+# Copyright (c) 2004, 2009 Actuate Corporation.
 # 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
@@ -14,7 +14,6 @@
 logManager_duplicateName=Logger with same name exists.
 #
 manifest_nullArgument=Argument must not be null.
-manifest_NO_DRIVER_RUNTIME_CONFIGURATION_DEFINED=The ODA driver plugin.xml is missing a <dataSource> element.
 manifest_NO_DATA_SOURCE_EXTN_ID_DEFINED=The ODA driver plugin.xml data source extension is missing an id attribute.
 manifest_INVALID_VERSION_VALUE=The ODA driver plugin.xml has an invalid odaVersion value ({0}) in the data source extension ({1}).
 manifest_NO_DRIVER_CLASS_DEFINED=The ODA driver plugin.xml is missing a driverClass attribute in the data source extension ({0}).
@@ -29,6 +28,7 @@
 manifest_NO_ODA_SCALAR_DATA_TYPE_DEFINED_2=The ODA driver plugin.xml is missing an odaScalarDataType attribute in the <alternativeOdaDataType> of the <dataTypeMapping> ({0}).
 manifest_INVALID_ODA_SCALAR_DATA_TYPE_VALUE=The ODA driver plugin.xml has an invalid odaScalarDataType value ({0}) in the <dataTypeMapping> ({1}).
 manifest_INVALID_LOG_LEVEL_VALUE=The ODA driver plugin.xml has an invalid logLevel value ({0}) in the data source extension ({1}).
+manifest_MISSING_ELEMENT_IN_EXTENSION_MANIFEST=The extension ({0}) is missing a {1} element.
 manifest_NO_LOG_FILENAME_PREFIX_DEFINED=The ODA driver plugin.xml is missing a logFileNamePrefix attribute in the <traceLogging> of the data source extension ({0}).
 #
 sortSpec_INVALID_SORT_MODE_SPECIFIED=Invalid sort mode specified: {0}.
diff --git a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/logging/LogManager.java b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/logging/LogManager.java
index abf7f65..67eba87 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/logging/LogManager.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/logging/LogManager.java
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * Copyright (c) 2004, 2006 Actuate Corporation.
+ * Copyright (c) 2004, 2009 Actuate Corporation.
  * 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
@@ -36,7 +36,7 @@
 {
     private static final String LOG_SUBFOLDER_NAME = "logs"; //$NON-NLS-1$
     
-	private static Hashtable m_loggers = new Hashtable();
+	private static Hashtable<String, Logger> m_loggers = new Hashtable<String, Logger>();
     private static SimpleDateFormat sm_dateFormat;
 
 	private LogManager()
@@ -45,28 +45,27 @@
 	}
 	
 	/**
-	 * Creates a named <code>Logger</code> with the necessary 
-	 * log configuration information.  The specified logger name 
+	 * Creates a named {@link Logger} with the specified 
+	 * log configuration.  The specified logger name 
 	 * should be specific to the application using the logging 
 	 * framework to prevent name collision in the logger namespace, 
-	 * since multiple loggers cannot be created with the same 
-	 * logger name. 
-	 * @param loggerName	the name of the logger to be created.
-	 * @param logLevel		the logger log level.
-	 * @param logDirectory	the required directory to store the logs.
+	 * since multiple loggers under this management cannot have the same 
+	 * logger name.  
+	 * @param loggerName	the name of the logger to be created
+	 * @param logLevel		the logger log level
+	 * @param logDirectory	the required directory to store the logs
 	 * @param logPrefix		the required file name prefix of the log 
 	 * 						file name; the format will be 
-	 * 						&lt;logPrefix&gt;-YYMMDD-hhmmss.log.
-	 * @param formatterClassName	a <code>LogFormatter</code> class 
+	 * 						&lt;logPrefix&gt;-YYMMDD-hhmmss.log
+	 * @param formatterClassName	a {@link LogFormatter} class 
 	 * 								name; if this is null or empty, the 
 	 * 								default <code>LogFormatter</code> will be 
 	 * 								used. The customized log formatter must inherit 
 	 * 								from <code>org.eclipse.datatools.connectivity.oda.logging.LogFormatter</code> 
-	 * 								and implements the <code>format()</code> 
-	 * 								method.
-	 * @return		the constructed named <code>Logger</code>.
-	 * @throws IllegalArgumentException		if logger with the same name 
-	 * 										already exists.
+	 * 								and implements the <code>format()</code> method
+	 * @return		the constructed named {@link Logger}
+	 * @throws IllegalArgumentException		if logger with the same name already exists.
+	 * @see #createLogger(String, int, String, String, String, boolean)
 	 */
     public static Logger createLogger( String loggerName,
     								   int logLevel,
@@ -74,7 +73,34 @@
 									   String logPrefix,
 									   String formatterClassName )
     {
-    	if( m_loggers.containsKey( loggerName ) )
+        return LogManager.createLogger( loggerName, logLevel, logDirectory, logPrefix, formatterClassName, true );
+    }
+    
+    /**
+     * Creates a named {@link Logger} with the specified log configuration.
+     * @param loggerName    the name of the logger to be created
+     * @param logLevel      the logger log level
+     * @param logDirectory  the required directory to store the logs
+     * @param logPrefix     the required file name prefix of the log 
+     *                      file name
+     * @param formatterClassName    a {@link LogFormatter} class name
+     * @param isManaged indicates whether the created logger should be managed by this;
+     *          if true, the logger name must be unique and the logger instance can be obtained 
+     *          by {@link #getLogger(String)}; 
+     *          if false, this does not maintain a reference to the created logger
+     * @return      the constructed named {@link Logger}
+     * @throws IllegalArgumentException     if logger is to be managed and the same name already exists.     
+     * @see #createLogger(String, int, String, String, String)
+     * @since 3.2 (DTP 1.7)
+     */
+    public static Logger createLogger( String loggerName,
+            int logLevel,
+            String logDirectory,
+            String logPrefix,
+            String formatterClassName,
+            boolean isManaged )
+    {
+    	if( isManaged && m_loggers.containsKey( loggerName ) )
     		throw new IllegalArgumentException( Messages.logManager_duplicateName );
     	
     	validateInput( logLevel, logDirectory, logPrefix );
@@ -91,7 +117,8 @@
     	
     	resetLoggerFileConfig( logger, logDirectory, logPrefix, formatterClassName );
     	
-    	m_loggers.put( loggerName, logger );
+    	if( isManaged )
+    	    m_loggers.put( loggerName, logger );
     	
     	return logger;
     }
diff --git a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/manifest/ManifestExplorer.java b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/manifest/ManifestExplorer.java
index ddd9a7e..80990cd 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/manifest/ManifestExplorer.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/manifest/ManifestExplorer.java
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- * Copyright (c) 2004, 2008 Actuate Corporation.
+ * Copyright (c) 2004, 2009 Actuate Corporation.
  * 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
@@ -46,7 +46,7 @@
     // trace logging variables
 	private static Logger sm_logger = null;
 
-	private Map m_manifestsById;  // cached copy of manifests by odaDataSourceId
+	private Map<String, ExtensionManifest> m_manifestsById;  // cached copy of manifests by odaDataSourceId
 
 	private static final String DTP_ODA_EXT_POINT = 
 	    	"org.eclipse.datatools.connectivity.oda.dataSource";  //$NON-NLS-1$
@@ -107,7 +107,7 @@
     
     /**
      * Refresh the manifest explorer, and allows it to get
-     * the latest ODA Design UI extension manifests.
+     * the latest ODA extension manifests.
      */
     public void refresh()
     {
@@ -118,14 +118,14 @@
         m_manifestsById.clear();
     }
 
-    private Map getCachedManifests()
+    private Map<String, ExtensionManifest> getCachedManifests()
     {
     	if( m_manifestsById == null )
     	{
             synchronized( this )
             {
                 if( m_manifestsById == null )
-                    m_manifestsById = Collections.synchronizedMap( new HashMap() );
+                    m_manifestsById = Collections.synchronizedMap( new HashMap<String, ExtensionManifest>() );
             }
     	}
     	return m_manifestsById;
@@ -291,7 +291,7 @@
      */
     private ExtensionManifest addToCachedManifests( String dataSourceId, ExtensionManifest manifest )
     {
-        Map manifestMap = getCachedManifests();
+        Map<String, ExtensionManifest> manifestMap = getCachedManifests();
         ExtensionManifest cachedManifest;
         synchronized( manifestMap )
         {
@@ -419,7 +419,7 @@
 		IExtension[] extensions = getExtensions( extensionPoint );
 		int length = ( extensions == null ) ? 
 						0 : extensions.length;
-		ArrayList manifestList = new ArrayList( length );
+		ArrayList<ExtensionManifest> manifestList = new ArrayList<ExtensionManifest>( length );
 		for( int i = 0; i < length; i++ )
 		{
 			IExtension dataSourceExtn = extensions[i];	
@@ -529,67 +529,20 @@
 	static IConfigurationElement getDataSourceElement( IExtension extension ) 
 		throws OdaException
     {
-        return ManifestUtil.getNamedElement( extension, "dataSource" );  //$NON-NLS-1$
+        return ManifestUtil.getNamedElement( extension, "dataSource", "id" );  //$NON-NLS-1$ //$NON-NLS-2$
     }
-    
-    /**
-     * Returns the configuration element of the given extension
-     * and element name.
-     * <br>For internal use only.
-     * @deprecated  as of 3.0.3, use corresponding method in ManifestUtil
-     */
-    public static IConfigurationElement getNamedElement( IExtension extension,
-            String elementName ) 
-        throws OdaException
-    {
-        return ManifestUtil.getNamedElement( extension, elementName );
-    }
-    
-    /**
-     * Returns a collection of configuration elements with the given name
-     * in the given extension.  
-     * Validates that each element has an id attribute defined.
-     * @return a collection of matching configuration elements
-     * <br>For internal use only.
-     * @deprecated  as of 3.0.3, use corresponding method in ManifestUtil
-     */
-    public static IConfigurationElement[] getNamedElements( 
-                                            IExtension extension,
-                                            String elementName ) 
-        throws OdaException
-    {
-        return ManifestUtil.getNamedElements( extension, elementName );
-    }
-    
-    /**
-     * Returns a collection of configuration elements with the given name
-     * in the given extension.  
-     * Validates that each element has the specified attribute defined.
-     * @return a collection of matching configuration elements
-     * <br>For internal use only.
-     * @deprecated  as of 3.0.3, use corresponding method in ManifestUtil
-     */
-    public static IConfigurationElement[] getNamedElements( 
-                                            IExtension extension,
-                                            String elementName, 
-                                            String requiredAttributeName ) 
-        throws OdaException
-	{
-        return ManifestUtil.getNamedElements( extension, elementName, 
-                requiredAttributeName );
-	}
 	
 	/*
 	 * Returns a collection of dataSet elements of the given data source extension.
      * May return an empty collection if no dataSet elements are defined.
 	 */
-	static Hashtable getDataSetElements( IExtension extension, 
+	static Hashtable<String, DataSetType> getDataSetElements( IExtension extension, 
             String dataSourceElementId )
 		throws OdaException
 	{
         IConfigurationElement[] configElements =
-            ManifestUtil.getNamedElements( extension, "dataSet" ); //$NON-NLS-1$
-		Hashtable dataSetElements = new Hashtable();
+            ManifestUtil.getNamedElements( extension, "dataSet", "id" ); //$NON-NLS-1$ //$NON-NLS-2$
+		Hashtable<String, DataSetType> dataSetElements = new Hashtable<String, DataSetType>();
         
         int numConfigElements = configElements.length;
 		for( int i = 0; i < numConfigElements; i++ )
diff --git a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/manifest/ManifestUtil.java b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/manifest/ManifestUtil.java
index 7a50cea..123aa26 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/manifest/ManifestUtil.java
+++ b/plugins/org.eclipse.datatools.connectivity.oda/src/org/eclipse/datatools/connectivity/oda/util/manifest/ManifestUtil.java
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- * Copyright (c) 2006 Actuate Corporation.
+ * Copyright (c) 2006, 2009 Actuate Corporation.
  * 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
@@ -37,10 +37,25 @@
             String elementName ) 
         throws OdaException
     {
+            return getNamedElement( extension, elementName, null );
+    }
+    
+    /**
+     * Returns the configuration element with the given name
+     * in the given extension.  
+     * Validates that the element has the named attribute with a non-empty value.
+     * @return the first matching configuration element
+     * <br>For internal use only.
+     */
+    public static IConfigurationElement getNamedElement( IExtension extension,
+            String elementName, String requiredAttributeName ) 
+        throws OdaException
+    {
         IConfigurationElement[] configElements =
-                        getNamedElements( extension, elementName );
+                        getNamedElements( extension, elementName, requiredAttributeName );
         if( configElements.length == 0 )
-            throw new OdaException( Messages.manifest_NO_DRIVER_RUNTIME_CONFIGURATION_DEFINED );
+            throw new OdaException( Messages.bind( Messages.manifest_MISSING_ELEMENT_IN_EXTENSION_MANIFEST, 
+                    extension.getUniqueIdentifier(), elementName ));
 
         return configElements[0];   // returns the first matching element
     }
@@ -48,7 +63,6 @@
     /**
      * Returns a collection of configuration elements with the given name
      * in the given extension.  
-     * Validates that each element has an id attribute defined.
      * @return a collection of matching configuration elements
      * <br>For internal use only.
      */
@@ -57,7 +71,7 @@
                                             String elementName ) 
         throws OdaException
     {
-        return getNamedElements( extension, elementName, "id" );    //$NON-NLS-1$
+        return getNamedElements( extension, elementName, null );
     }
     
     /**
@@ -74,7 +88,7 @@
         throws OdaException
     {
         IConfigurationElement[] configElements = extension.getConfigurationElements();
-        ArrayList matchedElements = new ArrayList();
+        ArrayList<IConfigurationElement> matchedElements = new ArrayList<IConfigurationElement>();
         for( int i = 0, n = configElements.length; i < n; i++ )
         {
             IConfigurationElement configElement = configElements[i];
@@ -82,12 +96,15 @@
                 continue;
 
             // validate that the element has the required attribute with non-empty value
-            String attrValue = configElement.getAttribute( requiredAttributeName );
-            if( attrValue == null || attrValue.length() == 0 )
-                throw new OdaException( 
-                        Messages.bind( Messages.manifest_NO_ATTRIBUTE_ID_DEFINED, 
-                                        requiredAttributeName, elementName ));
-
+            if( requiredAttributeName != null )
+            {
+                String attrValue = configElement.getAttribute( requiredAttributeName );
+                if( attrValue == null || attrValue.length() == 0 )
+                    throw new OdaException( 
+                            Messages.bind( Messages.manifest_NO_ATTRIBUTE_ID_DEFINED, 
+                                            requiredAttributeName, elementName ));
+            }
+            
             matchedElements.add( configElement );
         }
         
@@ -106,7 +123,7 @@
         if( driverDefinedProps.length == 0 )
             return driverDefinedProps;
         
-        ArrayList visibleProps = new ArrayList();
+        ArrayList<Property> visibleProps = new ArrayList<Property>();
         for( int i = 0, size = driverDefinedProps.length; i < size; i++ )
         {
             Property aProp = driverDefinedProps[i];
@@ -128,7 +145,7 @@
         if( driverDefinedProps.length == 0 )
             return driverDefinedProps;
         
-        ArrayList hiddenProps = new ArrayList();
+        ArrayList<Property> hiddenProps = new ArrayList<Property>();
         for( int i = 0, size = driverDefinedProps.length; i < size; i++ )
         {
             Property aProp = driverDefinedProps[i];
diff --git a/tests/org.eclipse.datatools.connectivity.oda.design.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.datatools.connectivity.oda.design.tests/META-INF/MANIFEST.MF
index 70a5d61..6e9a2bb 100644
--- a/tests/org.eclipse.datatools.connectivity.oda.design.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.datatools.connectivity.oda.design.tests/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: DTP ODA Design Tests Suite
 Bundle-SymbolicName: org.eclipse.datatools.connectivity.oda.design.tests; singleton:=true
-Bundle-Version: 3.0.7.qualifier
+Bundle-Version: 3.1.0.qualifier
 Bundle-ClassPath: org.eclipse.datatools.connectivity.oda.design.tests.jar
 Bundle-Vendor: Eclipse.org
 Export-Package: org.eclipse.datatools.connectivity.oda.design.tests
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.3.0,4.0.0)",
- org.eclipse.datatools.connectivity.oda.design;bundle-version="[3.0.7,4.0.0)";visibility:=reexport,
- org.eclipse.emf.ecore.xmi;bundle-version="[2.2.0,3.0.0)";visibility:=reexport,
+ org.eclipse.datatools.connectivity.oda.design;bundle-version="[3.1.0,4.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.4.0,3.0.0)";visibility:=reexport,
  org.junit;bundle-version="[3.8.2,4.0.0)";visibility:=reexport
 Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.datatools.connectivity.oda.design.tests/src/org/eclipse/datatools/connectivity/oda/design/tests/DesignUtilLoadSaveTest.java b/tests/org.eclipse.datatools.connectivity.oda.design.tests/src/org/eclipse/datatools/connectivity/oda/design/tests/DesignUtilLoadSaveTest.java
index 7957868..bffbe79 100644
--- a/tests/org.eclipse.datatools.connectivity.oda.design.tests/src/org/eclipse/datatools/connectivity/oda/design/tests/DesignUtilLoadSaveTest.java
+++ b/tests/org.eclipse.datatools.connectivity.oda.design.tests/src/org/eclipse/datatools/connectivity/oda/design/tests/DesignUtilLoadSaveTest.java
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- * Copyright (c) 2007, 2008 Actuate Corporation.
+ * Copyright (c) 2007, 2009 Actuate Corporation.
  * 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
@@ -21,14 +21,23 @@
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.Iterator;
 
 import junit.framework.TestCase;
 
+import org.eclipse.datatools.connectivity.oda.design.CustomExpression;
+import org.eclipse.datatools.connectivity.oda.design.DataSetDesign;
+import org.eclipse.datatools.connectivity.oda.design.DataSetParameters;
 import org.eclipse.datatools.connectivity.oda.design.DataSourceDesign;
 import org.eclipse.datatools.connectivity.oda.design.DesignFactory;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpressionArguments;
+import org.eclipse.datatools.connectivity.oda.design.FilterExpressionVariable;
 import org.eclipse.datatools.connectivity.oda.design.OdaDesignSession;
+import org.eclipse.datatools.connectivity.oda.design.OrExpression;
+import org.eclipse.datatools.connectivity.oda.design.ParameterDefinition;
 import org.eclipse.datatools.connectivity.oda.design.ResourceIdentifiers;
 import org.eclipse.datatools.connectivity.oda.design.util.DesignUtil;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 
 /**
  * Test cases for loading and saving OdaDesignSession utility in DesignUtil.  
@@ -151,7 +160,62 @@
 
         goldenFile = new File( getSampleDbResourceFilePath() );
         assertTrue( compareFileContent( goldenFile, tempOut ) );
-}
+    }
+    
+    public void testCreateFilterDesign()
+    {
+        final String filterExprExtId = "org.eclipse.datatools.connectivity.oda.design.tests";   //$NON-NLS-1$
+        
+        File goldenFile = new File( getSampleDbTestFilePath() );
+        OdaDesignSession design = loadOdaDesignSession( goldenFile );
+        DataSetDesign dataSetDesign = design.getResponseDataSetDesign();
+        
+        FilterExpressionVariable exprVariable = DesignFactory.eINSTANCE.createFilterExpressionVariable();
+        exprVariable.setIdentifier( "CUSTOMERNAME" ); //$NON-NLS-1$
+        exprVariable.setNativeDataTypeCode( 4 ); // integer
+        
+        FilterExpressionArguments exprArgs = DesignFactory.eINSTANCE.createFilterExpressionArguments();
+
+        DataSetParameters dataSetParams = dataSetDesign.getParameters();
+        Iterator<ParameterDefinition> iter = dataSetParams.getParameterDefinitions().iterator();
+        while( iter.hasNext() )
+        {
+            exprArgs.addDynamicParameter( (ParameterDefinition) EcoreUtil.copy( iter.next() ) );
+        }
+        
+        exprArgs.addStaticValue( new Integer( 123 ) );
+        
+        CustomExpression customExpr1 = DesignFactory.eINSTANCE.createCustomExpression();
+        customExpr1.setDeclaringExtensionId( filterExprExtId );
+        customExpr1.setId( "1007" ); //$NON-NLS-1$
+        customExpr1.setContextVariable( exprVariable );
+        customExpr1.setContextArguments( exprArgs );
+
+        CustomExpression customExpr2 = DesignFactory.eINSTANCE.createCustomExpression();
+        customExpr2.setDeclaringExtensionId( filterExprExtId );
+        customExpr2.setId( "10005" ); //$NON-NLS-1$
+        customExpr2.setContextVariable( exprVariable );
+
+        OrExpression orExpr = DesignFactory.eINSTANCE.createOrExpression();
+        orExpr.add( customExpr1 );
+        orExpr.add( customExpr2 );
+        
+        dataSetDesign.setFilter( orExpr );
+        
+        // test the created filter expressions are valid
+        try
+        {
+            DesignUtil.validateObject( dataSetDesign );
+        }
+        catch( IllegalStateException ex )
+        {
+            fail();
+        }  
+        
+        // test saving updated design session with the filter expression
+        File tempOut = getTempOutFile();
+        saveDesignSession( design, tempOut );
+    }
     
     private void saveDesignSession( OdaDesignSession design, File tempOut )
     {