Bug 208501 AdapterException occurs when preview a crosstab with a integer type static level[1102]
Description: AdapterException occurs when preview a crosstab with a integer type static level[1102] Build number: 2.3.0.v20071102-0630 Steps to reproduce: 1, New a cube from CUSTOMERS 2, New a static level has two Member 1 and 2. 1's expression is dataSetRow["CUSTOMERNUMBER"]>250. 2's expression is dataSetRow["CUSTOMERNUMBER"]<250 3, New a crosstab using the cube 4, Preview Expected result: If we can convert Memeber 1 and 2 to integer type, the preview should be ok. If we do not do this convert we should throws out a proper exception. Actual result: org.eclipse.birt.report.data.adapter.api.AdapterException: java.lang.String OCCURS Error log: java.lang.String ( 2 time(s) ) detail : org.eclipse.birt.report.data.adapter.api.AdapterException: java.lang.String at org.eclipse.birt.report.data.adapter.impl.DataRequestSessionImpl.prepare(DataRequestSessionImpl.java:479) at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doPrepareQuery(DteDataEngine.java:100) at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.prepare(AbstractDataEngine.java:138) at org.eclipse.birt.report.engine.executor.ReportExecutor.execute(ReportExecutor.java:94) at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:59) at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplciateReportExecutor.execute(SuppressDuplciateReportExecutor.java:51) at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:59) at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:138)
data/org.eclipse.birt.report.data.adapter/src/org/eclipse/birt/report/data/adapter/impl/DataRequestSessionImpl.java
measureNames.add( measure.getName( ) );
			}
		}
		IDimension[] dimensions = populateDimensions( cubeMaterializer,
				cubeHandle,
				candidateAppContext,
				stopSign );
		String[][] factTableKey = new String[dimensions.length][];
		String[][] dimensionKey = new String[dimensions.length][];
		for ( int i = 0; i < dimensions.length; i++ )
		{
			TabularDimensionHandle dim = (TabularDimensionHandle) cubeHandle.getDimension( dimensions[i].getName( ) );
			TabularHierarchyHandle hier = (TabularHierarchyHandle) dim.getDefaultHierarchy( );
			if ( cubeHandle.getDataSet( ).equals( hier.getDataSet( ) ) || hier.getDataSet( ) == null )
			{
				String[] keyNames = dimensions[i].getHierarchy().getLevels()[dimensions[i]
						.getHierarchy().getLevels().length - 1].getKeyNames();
				for( int j = 0; j < keyNames.length; j++)                                       						
				{
					keyNames[j] = dimensions[i].getName() + "/" + keyNames[j];
				}
				factTableKey[i] = keyNames;
				dimensionKey[i] = factTableKey[i];
			}
			else
			{
				Iterator it = cubeHandle.joinConditionsIterator( );
				if ( !it.hasNext() )
					throw new AdapterException( ResourceConstants.MISSING_JOIN_CONDITION, dim.getName() );