Bug 213907 Provide a copy constructor for SubqueryDefinition.
Engine need a copy constructor to generate a SubqueryDefinition from an ISubqueryDefinition and change the name of the query.
data/org.eclipse.birt.report.data.adapter/src/org/eclipse/birt/report/data/adapter/impl/DataRequestSessionImpl.java
List iHiers = new ArrayList();
		for ( int j = 0; j < hiers.size( ); j++ )
		{
			TabularHierarchyHandle hierhandle = (TabularHierarchyHandle) hiers.get( 0 );
			List levels = hierhandle.getContents( TabularHierarchyHandle.LEVELS_PROP );
			ILevelDefn[] levelInHier = null;
			if( hierhandle.getLevelCount( ) == 1 )
				levelInHier = new ILevelDefn[1];
			else
				levelInHier = new ILevelDefn[hierhandle.getLevelCount( )+1];
			String[] leafLevelKeyColumn = new String[levels.size( )];
			for ( int k = 0; k < levels.size( ); k++ )
			{
				TabularLevelHandle level = (TabularLevelHandle) levels.get( k );
				List levelKeys = new ArrayList();
				Iterator it = level.attributesIterator( );
				while( it.hasNext( ) )
				{
					LevelAttributeHandle levelAttr = (LevelAttributeHandle)it.next( );
					levelKeys.add( OlapExpressionUtil.getAttributeColumnName( level.getName( ),
							levelAttr.getName( ) ) );
				}
				if ( DesignChoiceConstants.LEVEL_TYPE_DYNAMIC.equals( level.getLevelType( ) )
						&& level.getDisplayColumnName( ) != null )
				{
					levelKeys.add( OlapExpressionUtil.getDisplayColumnName( level.getName( ) ) );
				}
				leafLevelKeyColumn[k] = level.getName( );
				
				levelInHier[k] = CubeElementFactory.createLevelDefinition( level.getName( ),