IBaseDataSetDesign leftDataSet = new BaseDataSetDesign(jc.getLeftDataSet( )); IBaseDataSetDesign rightDataSet = new BaseDataSetDesign(jc.getRightDataSet( ));
IBaseDataSetDesign leftDataSet = null; IBaseDataSetDesign rightDataSet = null;  List dataSets = handle.getModuleHandle( ).getAllDataSets( ); for( int i = 0; i < dataSets.size( ); i++ ) { DataSetHandle dsHandle = (DataSetHandle)dataSets.get( i ); if( dsHandle.getName( )!= null) { if( dsHandle.getName( ).equals( jc.getLeftDataSet( ) )) { leftDataSet = createDataSetDesign( dsHandle ); }  if( dsHandle.getName( ).equals( jc.getRightDataSet( ) )) { rightDataSet = createDataSetDesign( dsHandle ); } } }
	private IJointDataSetDesign newJointDataSet( JointDataSetHandle handle, ExecutionContext context2 ) throws BirtException	{		Iterator it = handle.joinConditionsIterator( );		List joinConditions = new ArrayList();				JoinConditionHandle jc = null;				while( it.hasNext( ) )		{			jc = (JoinConditionHandle)it.next( );			joinConditions.add( new JoinConditionExpression( new ScriptExpression( jc.getLeftExpression( )), new ScriptExpression(jc.getRightExpression( )),toDteJoinOperator(jc.getOperator( )))) ;		}				IBaseDataSetDesign leftDataSet = new BaseDataSetDesign(jc.getLeftDataSet( ));		IBaseDataSetDesign rightDataSet = new BaseDataSetDesign(jc.getRightDataSet( ));		int joinType = toDteJoinType(jc.getJoinType( ));				IBaseDataSetEventHandler eventHandler = new DataSetScriptExecutor(				handle, context );		JointDataSetDesign dteDataSet = new JointDataSetDesign(handle.getName( ), leftDataSet, rightDataSet, joinType, joinConditions);		dteDataSet.setEventHandler( eventHandler );		// Adapt base class properties		adaptBaseDataSet( handle, dteDataSet );		return dteDataSet;	}