Navigation Menu

Skip to content

Commit

Permalink
Partly fixed for a potential bug of duplicated dataset and datamodel
Browse files Browse the repository at this point in the history
names.
  • Loading branch information
Xusong Yuan committed Aug 26, 2013
1 parent 6d30211 commit 393e211
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 95 deletions.
Expand Up @@ -31,6 +31,7 @@
import org.eclipse.birt.report.designer.util.DEUtil;
import org.eclipse.birt.report.model.api.CachedMetaDataHandle;
import org.eclipse.birt.report.model.api.DataSetHandle;
import org.eclipse.birt.report.model.api.ModuleHandle;
import org.eclipse.birt.report.model.api.ResultSetColumnHandle;
import org.eclipse.birt.report.model.api.activity.SemanticException;
import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn;
Expand Down Expand Up @@ -58,15 +59,18 @@
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableColumn;


public class DataSetBindingSelector extends BaseDialog
{

public static final String NONE = Messages.getString( "BindingPage.None" ); //$NON-NLS-1$
private CheckboxTableViewer columnViewers;
private Combo dataSetCombo;
private String dataSetName;
private DataSetHandle datasetHandle;
private String[] columns;
private boolean validateEmptyResults=false;
private List<DataSetHandle> datasets;

private static final IChoice[] DATA_TYPE_CHOICES = DEUtil.getMetaDataDictionary( )
.getStructure( ComputedColumn.COMPUTED_COLUMN_STRUCT )
Expand Down Expand Up @@ -234,21 +238,25 @@ public void widgetSelected( SelectionEvent e )

protected void createDataSetContents( Composite parent )
{

if ( dataSetName != null )
{
Label lb = new Label( parent, SWT.NONE );
lb.setText( Messages.getString( "DataSetBindingSelector.Label.SelectBindingColumns" ) ); //$NON-NLS-1$
GridData data = new GridData( GridData.FILL_HORIZONTAL );
data.horizontalSpan = 2;
lb.setLayoutData( data );

}
else
{
Label dateSetLabel = new Label( parent, SWT.NONE );
dateSetLabel.setText( Messages.getString( "DataSetBindingSelector.Combo.DataSet" ) ); //$NON-NLS-1$
dataSetCombo = new Combo( parent, SWT.BORDER | SWT.READ_ONLY );
dataSetCombo.setItems( getAvailableDatasetItems( ) );
ModuleHandle handle = SessionHandleAdapter.getInstance( ).getReportDesignHandle( );
datasets=org.eclipse.birt.report.designer.internal.ui.util.UIUtil.getVisibleDataSetHandles(handle);
for(int i=0;i<datasets.size();i++){
dataSetCombo.add(datasets.get(i).getQualifiedName());
}
dataSetCombo.select( 0 );
GridData data = new GridData( GridData.FILL_HORIZONTAL );
dataSetCombo.setLayoutData( data );
Expand All @@ -264,78 +272,46 @@ public void widgetSelected( SelectionEvent e )
}

}

private DataSetHandle getSelectedDataSet(){
return (DataSetHandle)datasets.get(dataSetCombo.getSelectionIndex());
}
protected void handleDatasetComboSelectedEvent( )
{
if ( dataSetName != null )
Iterator iter = null;
DataSetHandle handle=null;
if(datasetHandle!=null){
handle=datasetHandle;
}else if(dataSetName!=null){
handle=DataUtil.findDataSet(dataSetName);
}else{
handle =getSelectedDataSet();
}
if ( handle != null )
{
DataSetHandle datasetHandle=DataUtil.findDataSet(dataSetName);

Iterator iter = null;
if ( datasetHandle != null )
{
try
{
CachedMetaDataHandle cmdh = DataSetUIUtil.getCachedMetaDataHandle( datasetHandle );
iter = cmdh.getResultSet( ).iterator( );
}
catch ( SemanticException e )
{
ExceptionHandler.handle( e );
}
}
else
try
{
iter = new LinkedDataSetAdapter( ).getDataSetResLinkedDataModel( dataSetName );
CachedMetaDataHandle cmdh = DataSetUIUtil.getCachedMetaDataHandle( handle );
iter = cmdh.getResultSet( ).iterator( );
}
if ( iter != null )
catch ( SemanticException e )
{
columnViewers.setInput( iter );
}
else
{
columnViewers.setInput( Collections.EMPTY_LIST.iterator( ) );
ExceptionHandler.handle( e );
}

}
else
{
if ( dataSetCombo.getSelectionIndex( ) > 0 )
{
String dataset = dataSetCombo.getItem( dataSetCombo.getSelectionIndex( ) );
DataSetHandle datasetHandle = SessionHandleAdapter.getInstance( )
.getModule( )
.findDataSet( dataset );
Iterator iter = null;
if ( datasetHandle != null )
{
try
{
CachedMetaDataHandle cmdh = DataSetUIUtil.getCachedMetaDataHandle( datasetHandle );
iter = cmdh.getResultSet( ).iterator( );
}
catch ( SemanticException e )
{
ExceptionHandler.handle( e );
}
}
else
{
iter = new LinkedDataSetAdapter( ).getDataSetResLinkedDataModel( dataset );
}
if ( iter != null )
{
columnViewers.setInput( iter );
}
else
{
columnViewers.setInput( Collections.EMPTY_LIST.iterator( ) );
}
}
else
{
columnViewers.setInput( Collections.EMPTY_LIST.iterator( ) );
}
iter = new LinkedDataSetAdapter( ).getDataSetResLinkedDataModel( dataSetName );
}
if ( iter != null )
{
columnViewers.setInput( iter );
}
else
{
columnViewers.setInput( Collections.EMPTY_LIST.iterator( ) );
}

}

private Object[] result;
Expand All @@ -344,7 +320,7 @@ protected void okPressed( )
{

result = new Object[3];
if ( dataSetName != null || dataSetCombo.getSelectionIndex( ) > 0 )
if ( dataSetName != null || dataSetCombo.getSelectionIndex( ) > -1 )
{
if ( dataSetName == null )
{
Expand Down Expand Up @@ -401,15 +377,6 @@ public Object getResult( )
return result;
}

protected String[] getAvailableDatasetItems( )
{
String[] dataSets = ChoiceSetFactory.getDataSets( );
String[] newList = new String[dataSets.length + 1];
newList[0] = NONE;
System.arraycopy( dataSets, 0, newList, 1, dataSets.length );
return newList;
}

public void setDataSet( String dataSetName )
{
this.dataSetName = dataSetName;
Expand Down Expand Up @@ -444,4 +411,15 @@ public void setValidateEmptyResults(boolean validateEmptyResults) {
this.validateEmptyResults = validateEmptyResults;
}

public DataSetHandle getDatasetHandle() {
return datasetHandle;
}

public void setDatasetHandle(DataSetHandle datasetHandle) {
if(datasetHandle!=null){
this.datasetHandle = datasetHandle;
this.dataSetName=datasetHandle.getQualifiedName();
}
}

}
Expand Up @@ -1381,30 +1381,9 @@ protected static DesignElementHandle performInsertString(
protected static TableHandle performInsertDataSet( DataSetHandle model )
throws SemanticException
{
// DataSetItemModel[] columns = DataSetManager.getCurrentInstance( )
// .getColumns( model, false );
// if ( columns == null || columns.length == 0 )
// {
// return null;
// }
// // TableHandle tableHandle = SessionHandleAdapter.getInstance( )
// // .getReportDesignHandle( )
// // .getElementFactory( )
// // .newTableItem( null, columns.length );
// CachedMetaDataHandle cachedMetadata = DataSetUIUtil.getCachedMetaDataHandle( model );
// List columList = new ArrayList( );
//
// for ( Iterator iter = cachedMetadata.getResultSet( ).iterator( ); iter.hasNext( ); )
// {
// ResultSetColumnHandle element = (ResultSetColumnHandle) iter.next( );
// columList.add( element );
// }
// ResultSetColumnHandle[] columns = (ResultSetColumnHandle[]) columList.toArray( new ResultSetColumnHandle[columList.size( )] );


DataSetBindingSelector selector=new DataSetBindingSelector( UIUtil.getDefaultShell( ),
Messages.getString( "DataSetBindingSelectorPage.Title" ) );
selector.setDataSet(model.getElement().getName());
selector.setDatasetHandle(model);
selector.setValidateEmptyResults(true);
if ( selector.open( ) == Window.OK )
{
Expand Down
Expand Up @@ -82,6 +82,7 @@
import org.eclipse.birt.report.designer.ui.preferences.PreferenceFactory;
import org.eclipse.birt.report.designer.ui.views.ElementAdapterManager;
import org.eclipse.birt.report.designer.ui.views.attributes.providers.ChoiceSetFactory;
import org.eclipse.birt.report.designer.ui.views.attributes.providers.LinkedDataSetAdapter;
import org.eclipse.birt.report.designer.util.ColorManager;
import org.eclipse.birt.report.designer.util.DEUtil;
import org.eclipse.birt.report.designer.util.FontManager;
Expand Down Expand Up @@ -3315,4 +3316,15 @@ public static boolean containsFocusControl( Control container )

return false;
}
public static List<DataSetHandle> getVisibleDataSetHandles(ModuleHandle handle){
ArrayList<DataSetHandle> list = new ArrayList<DataSetHandle>( );
for ( Iterator iterator = handle.getVisibleDataSets( ).iterator( ); iterator.hasNext( ); )
{
DataSetHandle dataSetHandle = (DataSetHandle) iterator.next( );
list.add( dataSetHandle );
}
LinkedDataSetAdapter adapter = new LinkedDataSetAdapter();
list.addAll(adapter.getVisibleLinkedDataSetsDataSetHandles(handle));
return list;
}
}
Expand Up @@ -4,6 +4,8 @@
import java.util.Iterator;
import java.util.List;

import org.eclipse.birt.report.model.api.DataSetHandle;
import org.eclipse.birt.report.model.api.ModuleHandle;
import org.eclipse.birt.report.model.api.ReportItemHandle;

public interface ILinkedDataSetHelper
Expand All @@ -14,5 +16,7 @@ public interface ILinkedDataSetHelper
public boolean setLinkedDataModel( ReportItemHandle handle, Object value );

public Iterator getResultSetIterator( String datasetName );

public List<DataSetHandle> getVisibleLinkedDataSetsDataSetHandles(ModuleHandle handle);

}
Expand Up @@ -6,10 +6,23 @@
import java.util.List;

import org.eclipse.birt.report.designer.ui.views.ElementAdapterManager;
import org.eclipse.birt.report.model.api.DataSetHandle;
import org.eclipse.birt.report.model.api.ModuleHandle;
import org.eclipse.birt.report.model.api.ReportItemHandle;

public class LinkedDataSetAdapter
{

public List<DataSetHandle> getVisibleLinkedDataSetsDataSetHandles(ModuleHandle handle )
{
ILinkedDataSetHelper helper = (ILinkedDataSetHelper) ElementAdapterManager.getAdapter( this,
ILinkedDataSetHelper.class );
if ( helper != null )
{
return helper.getVisibleLinkedDataSetsDataSetHandles(handle);
}
return new ArrayList<DataSetHandle>( );
}

public List<String> getVisibleLinkedDataSets( )
{
Expand Down

0 comments on commit 393e211

Please sign in to comment.