IReportContext reportContext ) throws BirtException
ExecutionContext context ) throws BirtException
	IOdaDataSetDesign newExtendedDataSet( OdaDataSetHandle modelDataSet,			IReportContext reportContext ) throws BirtException	{		OdaDataSetDesign dteDataSet = new OdaDataSetDesign( modelDataSet				.getQualifiedName( ) );		IBaseDataSetEventHandler eventHandler = new DataSetScriptExecutor(				modelDataSet, reportContext );		dteDataSet.setEventHandler( eventHandler );		// Adapt base class properties		adaptBaseDataSet( modelDataSet, dteDataSet );		// Adapt extended data set elements		// Set query text; if binding exists, use its result; otherwise 		// use static design		String queryTextBinding = modelDataSet.getPropertyBinding( 				OdaDataSet.QUERY_TEXT_PROP );		if ( needPropertyBinding( )				&& queryTextBinding != null && queryTextBinding.length( ) > 0 )		{			dteDataSet.setQueryText( evaluatePropertyBindingExpr( queryTextBinding ) );		}		else		{			dteDataSet.setQueryText( modelDataSet.getQueryText( ) );		}		// type of extended data set		dteDataSet.setExtensionID( modelDataSet.getExtensionID( ) );		// result set name		dteDataSet.setPrimaryResultSetName( modelDataSet.getResultSetName( ) );		// static ROM properties defined by the ODA driver extension		Map staticProps = getExtensionProperties( modelDataSet, modelDataSet				.getExtensionPropertyDefinitionList( ) );		if ( staticProps != null && !staticProps.isEmpty( ) )		{			Iterator propNamesItr = staticProps.keySet( ).iterator( );			while ( propNamesItr.hasNext( ) )			{				String propName = (String)propNamesItr.next( );				assert ( propName != null  );				String propValue;				String bindingExpr = modelDataSet.getPropertyBinding( propName );				if ( needPropertyBinding( )						&& bindingExpr != null && bindingExpr.length( ) > 0 )				{					propValue = this.evaluatePropertyBindingExpr( bindingExpr );				}				else				{					propValue = ( String ) staticProps.get( propName );				}				dteDataSet.addPublicProperty( ( String ) propName, propValue );			}		}		// private driver properties / private runtime data		Iterator elmtIter = modelDataSet.privateDriverPropertiesIterator( );		if ( elmtIter != null )		{			while ( elmtIter.hasNext( ) )			{				ExtendedPropertyHandle modelProp = ( ExtendedPropertyHandle ) elmtIter						.next( );				dteDataSet.addPrivateProperty( modelProp.getName( ), modelProp						.getValue( ) );			}		}		return dteDataSet;	}