Bug 207889 NOT IN filter of table doesn't work and throws exceptions when preview[07]
Description: Exception occurs when preview a table with NOT IN filter[07] Build number: 2.3.0.v20071029-0630 Steps to reproduce: 1, New a CUSTOMERS Dataset 2, Drag dataset into layout 3, Select the table and specify a Not IN filter: row["CUSTOMERNUMBER"] Not In 131 4, Preview Expected result: The filter works and preview should be ok Actual result: Exception occurs Error log: The filter definition using expression "row["CUSTOMERNUMBER"]" is not valid. Conditional operator is not supported: 0 data.engine.BadFilterDefn ( 1 time(s) ) detail : org.eclipse.birt.data.engine.core.DataException: The filter definition using expression "row["CUSTOMERNUMBER"]" is not valid.Conditional operator is not supported: 0 at org.eclipse.birt.data.engine.impl.FilterByRow.process(FilterByRow.java:237) at org.eclipse.birt.data.engine.executor.cache.RowResultSet.processFetchEvent(RowResultSet.java:134) at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:98) at org.eclipse.birt.data.engine.executor.cache.ExpandableRowResultSet.next(ExpandableRowResultSet.java:64) at org.eclipse.birt.data.engine.executor.cache.SmartCacheHelper.populateData(SmartCacheHelper.java:299) at org.eclipse.birt.data.engine.executor.cache.SmartCacheHelper.initInstance(SmartCacheHelper.java:271) at org.eclipse.birt.data.engine.executor.cache.SmartCacheHelper.getResultSetCache(SmartCacheHelper.java:233) at org.eclipse.birt.data.engine.executor.cache.SmartCache.<init>(SmartCache.java:73) at org.eclipse.birt.data.engine.executor.transform.pass.PassUtil.populateOdiResultSet(PassUtil.java:146) at org.eclipse.birt.data.engine.executor.transform.pass.PassUtil.pass(PassUtil.java:63) at org.eclipse.birt.data.engine.executor.transform.pass.FilterCalculator.doFiltering(FilterCalculator.java:117) at org.eclipse.birt.data.engine.executor.transform.pass.FilterCalculator.applyFilters(FilterCalculator.java:90) at org.eclipse.birt.data.engine.executor.transform.pass.FilterCalculator.applyFilters(FilterCalculator.java:64)
data/org.eclipse.birt.report.data.adapter/src/org/eclipse/birt/report/data/adapter/api/DataAdapterUtil.java
new Integer( IConditionalExpression.OP_LIKE ) );
		filterOptMap.put( DesignChoiceConstants.FILTER_OPERATOR_TOP_N,
				new Integer( IConditionalExpression.OP_TOP_N ) );
		filterOptMap.put( DesignChoiceConstants.FILTER_OPERATOR_BOTTOM_N,
				new Integer( IConditionalExpression.OP_BOTTOM_N ) );
		filterOptMap.put( DesignChoiceConstants.FILTER_OPERATOR_TOP_PERCENT,
				new Integer( IConditionalExpression.OP_TOP_PERCENT ) );
		filterOptMap.put( DesignChoiceConstants.FILTER_OPERATOR_BOTTOM_PERCENT,
				new Integer( IConditionalExpression.OP_BOTTOM_PERCENT ) );
		filterOptMap.put( DesignChoiceConstants.FILTER_OPERATOR_MATCH,
				new Integer( IConditionalExpression.OP_MATCH ) );
		filterOptMap.put( DesignChoiceConstants.FILTER_OPERATOR_NOT_LIKE,
				new Integer( IConditionalExpression.OP_NOT_LIKE ) );
		filterOptMap.put( DesignChoiceConstants.FILTER_OPERATOR_NOT_MATCH,
				new Integer( IConditionalExpression.OP_NOT_MATCH ) );
		filterOptMap.put( DesignChoiceConstants.FILTER_OPERATOR_IN,
				new Integer( IConditionalExpression.OP_IN ) );
	}
	/**
	 * This method is used to register the Java Script Objects which are defined in the scope of
	 * source ResultSet ( might be IResultSet or CubeCursor ) to target scope. One possible client
	 * of this method is Report Engine. A classic use case is that instead of register its own "row" object 
	 * the Report Engine can simply call this method with proper argument so that the "row" object
	 * registered in IResultIterator's scope, that is, JSResultSetRow, can be accessed by engine using
	 * engine scope. 
	 *   
	 * @param targetScope
	 * @param source
	 */
	public static void registerJSObject( Scriptable targetScope,