String oldOdaXmlName = "org.eclipse.birt.report.data.oda.xml" ; String newOdaXmlName = "org.eclipse.datatools.enablement.oda.xml" ;
	private void parseODADataSourceExtensionID( Attributes attrs,			boolean extensionNameRequired )	{		String extensionID = getAttrib( attrs,				DesignSchemaConstants.EXTENSION_ID_ATTRIB );		if ( StringUtil.isBlank( extensionID ) )		{			if ( !extensionNameRequired )				return;			SemanticError e = new SemanticError( element,					SemanticError.DESIGN_EXCEPTION_MISSING_EXTENSION );			RecoverableError.dealMissingInvalidExtension( handler, e );			return;		}		if ( handler.versionNumber < VersionUtil.VERSION_3_0_0 )		{			if ( OBSOLETE_FLAT_FILE_ID.equalsIgnoreCase( extensionID ) )				extensionID = NEW_FLAT_FILE_ID;		}		else		{			// after version 3.2.7 , add convert fuction.			//TODO in the future if needs , maybe can increase version number.						try			{				ExtensionManifest extension = ManifestExplorer.getInstance( )						.getExtensionManifest( extensionID );				if ( extension != null && extension.isDeprecated( ) )				{					extensionID = extension.getRelatedDataSourceId( );				}			}			catch ( OdaException e )			{				// do nothing.			}			catch ( IllegalArgumentException e )			{				// TODO I don't think here should meet IllegalArgumentException.			}		}				setProperty( IOdaExtendableElementModel.EXTENSION_ID_PROP,				extensionID );		// get the provider to check whether this is a valid oda extension		provider = ( (OdaDataSource) element ).getProvider( );		if ( provider == null )			return;		if ( provider instanceof OdaDummyProvider )		{			SemanticError e = new SemanticError( element,					new String[]{extensionID},					SemanticError.DESIGN_EXCEPTION_EXTENSION_NOT_FOUND );			RecoverableError.dealMissingInvalidExtension( handler, e );			isValidExtensionId = false;		}	}