Bug 180401 If the fact table has duplicate level, the driver can not handle that fact table[1102]
Description: I create a fact table: 1,1,male,USA,1,Beer,Drinking,"Jan 1, 2007 12:00 AM",30,6 2,1,male,USA,2,Diaper,Baby,"Jan 1, 2007 12:00 AM",100,2 .... 9,4,male,China,3,Noodle,FastFood,"Apr 2, 2007 12:00 AM",28,7 10,4,male,China,5,Coffee,Drinking,"Apr 2, 2007 12:00 AM",20,2 I use male and China as the row level and Noodle(product type) as column level. I have discussed with Mingxia, because of our driver thinks that the China and Noodle are duplicate in two rows, it is a invalid fact table. But we think it is a good fact table. And that kind of fact table will be often used. I have attached the report design to reproduce the bug. Build number: 2.2.0.v20070330-0630 error log: null ( 1 time(s) ) detail : org.eclipse.birt.data.engine.core.DataException at org.eclipse.birt.data.engine.olap.api.query.impl.CubeQueryResults.getCubeCursor(CubeQueryResults.java:75) at org.eclipse.birt.report.engine.data.dte.CubeResultSet.<init>(CubeResultSet.java:76) at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteCube(DteDataEngine.java:192) at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:119) at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:189) at org.eclipse.birt.report.engine.extension.internal.ExecutorContext.executeQuery(ExecutorContext.java:62) at org.eclipse.birt.report.item.crosstab.core.re.executor.BaseCrosstabExecutor.executeQuery(BaseCrosstabExecutor.java:89) at org.eclipse.birt.report.item.crosstab.core.re.executor.CrosstabReportItemExecutor.execute(CrosstabReportItemExecutor.java:92) at org.eclipse.birt.report.engine.executor.ExtendedItemExecutor.execute(ExtendedItemExecutor.java:89) at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:36) at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layoutChildren(HTMLPageLM.java:124) at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:82) at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:88) at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:205) at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:125) at org.eclipse.birt.report.service.ReportEngineService.runAndRenderReport(Unknown Source) at org.eclipse.birt.report.service.ReportEngineService.runAndRenderReport(Unknown Source) at org.eclipse.birt.report.service.BirtViewerReportService.runAndRenderReport(Unknown Source) at org.eclipse.birt.report.service.actionhandler.BirtGetPageAllActionHandler.__execute(Unknown Source) at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(Unknown Source) at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(Unknown Source) at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(Unknown Source) at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleGetPageAll(Unknown Source
data/org.eclipse.birt.report.data.adapter/src/org/eclipse/birt/report/data/adapter/impl/DataSetIterator.java
}
	}
	/**
	 * 
	 *
	 */
	private class ResultMeta
	{
		
		private HashMap columnMetaMap;
		private HashMap indexMap;
		/**
		 * Constructor.
		 * @param columnMetas
		 */
		ResultMeta( List columnMetas )
		{
			this.columnMetaMap = new HashMap( );
			this.indexMap = new HashMap( );
			for ( int i = 0; i < columnMetas.size( ); i++ )
			{
				ColumnMeta columnMeta = (ColumnMeta) columnMetas.get( i );
				columnMeta.setIndex( i + 1 );
				this.columnMetaMap.put( columnMeta.getName( ), columnMeta );
				this.indexMap.put( new Integer( i + 1 ), columnMeta );
			}
		}
		/**
		 * 
		 * @param fieldName