[262874] ODA Data Filtering Specification model - minor refactoring
diff --git a/plugins/org.eclipse.datatools.connectivity.oda.design.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.datatools.connectivity.oda.design.ui/.settings/org.eclipse.jdt.core.prefs
index 05f6590..190e001 100644
--- a/plugins/org.eclipse.datatools.connectivity.oda.design.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.datatools.connectivity.oda.design.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,13 +1,3 @@
-#Fri Apr 13 14:14:14 PDT 2007
+#Thu Jan 29 23:00:30 PST 2009
 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.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-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.nonExternalizedStringLiteral=warning
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 e9eba46..5dc35e5 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
@@ -5,7 +5,7 @@
 Bundle-Version: 3.0.8.qualifier
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Export-Package: org.eclipse.datatools.connectivity.oda.design.internal.ui,
  org.eclipse.datatools.connectivity.oda.design.ui.designsession,
  org.eclipse.datatools.connectivity.oda.design.ui.manifest,
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 736972b..b403e5d 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
@@ -701,6 +701,7 @@
      * @return  an instance of {@link ExpressionDefinition}, or null if no matching definition is found
      * @since DTP 1.7
      */
+    @SuppressWarnings("restriction")
     public static ExpressionDefinition getExtensionCustomDefinition( CustomExpression customExpr )
     {
         if( customExpr == null )
@@ -712,11 +713,12 @@
      * <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 extensionId   unique 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
      */
+    @SuppressWarnings("restriction")
     public static ExpressionDefinition getExtensionCustomDefinition( String extensionId, String exprId )
     {
         try
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 904260e..fd15bf4 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
@@ -358,10 +358,12 @@
 	 * <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
+     * @throws OdaException if data source error occurs
+     * @throws UnsupportedOperationException    
+     *                      if the specified filter expression includes element(s) that are not supported
 	 * @since 3.2 (DTP 1.7)
 	 */
-//	public void setFilterSpec( Expression filterExpr ) throws OdaException;
+//	public void setFilterSpec( Expression filterExpr ) throws OdaException, UnsupportedOperationException;
 
 	/**
      * <strong>EXPERIMENTAL</strong>.
diff --git a/tests/org.eclipse.datatools.connectivity.oda.consumer.testdriver/META-INF/MANIFEST.MF b/tests/org.eclipse.datatools.connectivity.oda.consumer.testdriver/META-INF/MANIFEST.MF
index 60b6c98..45f6977 100644
--- a/tests/org.eclipse.datatools.connectivity.oda.consumer.testdriver/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.datatools.connectivity.oda.consumer.testdriver/META-INF/MANIFEST.MF
@@ -2,9 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: DTP ODA Consumer Test Driver Plug-in
 Bundle-SymbolicName: org.eclipse.datatools.connectivity.oda.consumer.testdriver; singleton:=true
-Bundle-Version: 3.1.0.200703161
+Bundle-Version: 3.2.0.qualifier
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
-Require-Bundle: org.eclipse.datatools.connectivity.oda;bundle-version="[3.1.0,4.0.0)"
+Require-Bundle: org.eclipse.datatools.connectivity.oda;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.3.0,4.0.0)"
 Eclipse-LazyStart: true
 Export-Package: org.eclipse.datatools.connectivity.oda.consumer.testdriver;x-friends:="org.eclipse.datatools.connectivity.oda.consumer.tests"
diff --git a/tests/org.eclipse.datatools.connectivity.oda.consumer.testdriver/plugin.xml b/tests/org.eclipse.datatools.connectivity.oda.consumer.testdriver/plugin.xml
index 99335ae..0e63aa4 100644
--- a/tests/org.eclipse.datatools.connectivity.oda.consumer.testdriver/plugin.xml
+++ b/tests/org.eclipse.datatools.connectivity.oda.consumer.testdriver/plugin.xml
@@ -52,5 +52,99 @@
                odaScalarDataType="Boolean"/>
       </dataSet>
    </extension>
+     <extension
+           id="filterExtension"
+           point="org.eclipse.datatools.connectivity.oda.filterExpressions">
+        <contributor
+              testerClass="org.eclipse.datatools.connectivity.oda.consumer.testdriver.filter.impl.FilterExprTester">
+         <supportedDataSetType
+               odaDataSetId="org.eclipse.datatools.connectivity.oda.consumer.testdriver.dataSet"
+               odaDataSourceId="org.eclipse.datatools.connectivity.oda.consumer.testdriver">
+         </supportedDataSetType>
+         <supportedDataSetType
+               odaDataSetId="org.eclipse.datatools.connectivity.oda.consumer.testdriver.jdbc.dbprofile.sqbDataSet"
+               odaDataSourceId="org.eclipse.datatools.connectivity.oda.consumer.testdriver.jdbc.dbprofile">
+         </supportedDataSetType>
+         <supportedOdaExpression
+               expressionId="AndExpression">
+         </supportedOdaExpression>
+         <supportedOdaExpression
+               expressionId="OrExpression">
+         </supportedOdaExpression>
+         <supportedOdaExpression
+               expressionId="NotExpression">
+         </supportedOdaExpression>
+        </contributor>
+        <customExpression
+              displayName="Equal to"
+              id="0"
+              isNegatable="true"
+              isOptionable="true"
+              maxArguments="*"
+              minArguments="1">
+        </customExpression>
+        <customExpression
+              displayName="Between"
+              id="1001"
+              isNegatable="true"
+              isOptionable="true"
+              maxArguments="2"
+              minArguments="1">
+           <variableRestriction
+                 variableType="ResultSetColumn">
+              <variableOdaDataTypeRestriction
+                    odaScalarDataType="String">
+              </variableOdaDataTypeRestriction>
+              <variableOdaDataTypeRestriction
+                  odaScalarDataType="Integer">
+              </variableOdaDataTypeRestriction>
+         	  <variableOdaDataTypeRestriction
+            	  odaScalarDataType="Double">
+         	  </variableOdaDataTypeRestriction>
+         	  <variableOdaDataTypeRestriction
+               	  odaScalarDataType="Decimal">
+         	  </variableOdaDataTypeRestriction>
+         	  <variableOdaDataTypeRestriction
+               	  odaScalarDataType="Date">
+         	  </variableOdaDataTypeRestriction>
+         	  <variableOdaDataTypeRestriction
+               	  odaScalarDataType="Time">
+         	  </variableOdaDataTypeRestriction>
+         	  <variableOdaDataTypeRestriction
+               	  odaScalarDataType="Timestamp">
+         	  </variableOdaDataTypeRestriction>
+           </variableRestriction>
+        </customExpression>
+        <customExpression
+              displayName="In"
+              id="1003"
+              isNegatable="true"
+              isOptionable="true"
+              maxArguments="*"
+              minArguments="1">
+        </customExpression>
+        <customExpression
+              displayName="IsNull"
+              id="1005"
+              isNegatable="true"
+              isOptionable="false"
+              maxArguments="0"
+              minArguments="0">
+        </customExpression>
+        <customExpression
+              displayName="IsInstanceOf"
+              id="2000"
+              isNegatable="true"
+              isOptionable="false"
+              maxArguments="1"
+              minArguments="1">
+           <variableRestriction
+                 variableType="InstanceOf">
+              <variableClassRestriction
+                    class="org.eclipse.datatools.connectivity.oda.consumer.testdriver.OrderItem">
+              </variableClassRestriction>
+           </variableRestriction>
+        </customExpression>
+     </extension>
    
 </plugin>
diff --git a/tests/org.eclipse.datatools.connectivity.oda.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.datatools.connectivity.oda.tests/META-INF/MANIFEST.MF
index 0a8d9c4..9961ee1 100644
--- a/tests/org.eclipse.datatools.connectivity.oda.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.datatools.connectivity.oda.tests/META-INF/MANIFEST.MF
@@ -2,10 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: DTP ODA Tests Suite
 Bundle-SymbolicName: org.eclipse.datatools.connectivity.oda.tests;singleton:=true
-Bundle-Version: 3.1.3.200702081
+Bundle-Version: 3.2.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.datatools.connectivity.oda;bundle-version="[3.1.3,4.0.0)",
+Require-Bundle: org.eclipse.datatools.connectivity.oda;bundle-version="[3.2.0,4.0.0)",
  org.junit;bundle-version="[3.8.1,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.3.0,4.0.0)"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Bundle-RequiredExecutionEnvironment: J2SE-1.5