if ( logger.isLoggable( Level.FINER ) ) logger.entering( DataEngineImpl.class.getName( ), "prepare", LogUtil.toString( querySpec ) ); if ( dataSources == null ) { IllegalStateException e = new IllegalStateException( "DataEngine has been shutdown" ); logger.logp( Level.WARNING, DataEngineImpl.class.getName( ), "prepare", "DataEngine has been shutdown", e ); throw e; }  if ( logger.isLoggable( Level.FINE ) ) logger.fine( "Start to prepare query: " + LogUtil.toString( querySpec ) ); PreparedDataSourceQuery result = PreparedDataSourceQuery.newInstance( this, querySpec ); logger.fine( "Finished preparing query." );  logger.exiting( DataEngineImpl.class.getName( ), "prepare" ); return result;
return prepare( querySpec, null );
	public IPreparedQuery prepare( IQueryDefinition querySpec )			throws DataException	{		if ( logger.isLoggable( Level.FINER ) )			logger.entering( DataEngineImpl.class.getName( ),					"prepare",					LogUtil.toString( querySpec ) );		if ( dataSources == null )		{			IllegalStateException e = new IllegalStateException( "DataEngine has been shutdown" );			logger.logp( Level.WARNING,					DataEngineImpl.class.getName( ),					"prepare",					"DataEngine has been shutdown",					e );			throw e;		}		if ( logger.isLoggable( Level.FINE ) )			logger.fine( "Start to prepare query: "					+ LogUtil.toString( querySpec ) );		PreparedDataSourceQuery result = PreparedDataSourceQuery.newInstance( this,				querySpec );		logger.fine( "Finished preparing query." );		logger.exiting( DataEngineImpl.class.getName( ), "prepare" );		return result;	}