diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java index f0cf89c75bea883335d0dfc07d6541fd7f32843f..17e324c1aad7d70c99543de0e5880e042361f5ab 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java @@ -282,7 +282,8 @@ public interface ICommonClientService extends IClientService /** * Like {@link #prepareExportSamples(TableExportCriteria)}, but for data set search hits. */ - public String prepareExportDataSetSearchHits(TableExportCriteria<ExternalData> exportCriteria) + public String prepareExportDataSetSearchHits( + TableExportCriteria<TableModelRowWithObject<ExternalData>> exportCriteria) throws UserFailureException; /** @@ -474,22 +475,24 @@ public interface ICommonClientService extends IClientService /** * For given <var>sampleId</var> returns corresponding list of {@link ExternalData}. */ - public ResultSetWithEntityTypes<ExternalData> listSampleDataSets(final TechId sampleId, - DefaultResultSetConfig<String, ExternalData> criteria, + public TypedTableResultSet<ExternalData> listSampleDataSets(final TechId sampleId, + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> criteria, final boolean showOnlyDirectlyConnected) throws UserFailureException; /** * For given <var>experimentId</var> returns corresponding list of {@link ExternalData}. */ - public ResultSetWithEntityTypes<ExternalData> listExperimentDataSets(final TechId experimentId, - DefaultResultSetConfig<String, ExternalData> criteria) throws UserFailureException; + public TypedTableResultSet<ExternalData> listExperimentDataSets(final TechId experimentId, + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> criteria) + throws UserFailureException; /** * For given <var>datasetId</var> in given relationship <var>role</var> returns corresponding * list of {@link ExternalData}. */ - public ResultSetWithEntityTypes<ExternalData> listDataSetRelationships(TechId datasetId, - DataSetRelationshipRole role, DefaultResultSetConfig<String, ExternalData> criteria) + public TypedTableResultSet<ExternalData> listDataSetRelationships(TechId datasetId, + DataSetRelationshipRole role, + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> criteria) throws UserFailureException; /** @@ -596,17 +599,16 @@ public interface ICommonClientService extends IClientService /** * Returns {@link ExternalData} fulfilling given {@link DetailedSearchCriteria}. */ - public ResultSetWithEntityTypes<ExternalData> searchForDataSets( - DetailedSearchCriteria criteria, - final IResultSetConfig<String, ExternalData> resultSetConfig) + public TypedTableResultSet<ExternalData> searchForDataSets(DetailedSearchCriteria criteria, + final IResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig) throws UserFailureException; /** * Returns {@link ExternalData} fulfilling given {@link RelatedDataSetCriteria}. */ - public ResultSetWithEntityTypes<ExternalData> searchForDataSets( + public TypedTableResultSet<ExternalData> searchForDataSets( RelatedDataSetCriteria<? extends IEntityInformationHolder> criteria, - final IResultSetConfig<String, ExternalData> resultSetConfig) + final IResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig) throws UserFailureException; /** diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java index c85e961b5499a2fc613a742ffff20c4bd112597e..b7e6c1b315d49a79b319f0c239d7f043b0eeb6ac 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java @@ -250,7 +250,8 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync /** * @see ICommonClientService#prepareExportDataSetSearchHits(TableExportCriteria) */ - public void prepareExportDataSetSearchHits(TableExportCriteria<ExternalData> exportCriteria, + public void prepareExportDataSetSearchHits( + TableExportCriteria<TableModelRowWithObject<ExternalData>> exportCriteria, AsyncCallback<String> callback); /** @see ICommonClientService#listPropertyTypes(boolean) */ @@ -397,24 +398,24 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync * @see ICommonClientService#listSampleDataSets(TechId, DefaultResultSetConfig, boolean) */ public void listSampleDataSets(TechId sampleId, - DefaultResultSetConfig<String, ExternalData> criteria, + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> criteria, boolean showOnlyDirectlyConnected, - AsyncCallback<ResultSetWithEntityTypes<ExternalData>> asyncCallback); + AsyncCallback<TypedTableResultSet<ExternalData>> asyncCallback); /** * @see ICommonClientService#listExperimentDataSets(TechId, DefaultResultSetConfig) */ public void listExperimentDataSets(TechId experimentId, - DefaultResultSetConfig<String, ExternalData> criteria, - AsyncCallback<ResultSetWithEntityTypes<ExternalData>> asyncCallback); + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> criteria, + AsyncCallback<TypedTableResultSet<ExternalData>> asyncCallback); /** * @see ICommonClientService#listDataSetRelationships(TechId, DataSetRelationshipRole, * DefaultResultSetConfig) */ public void listDataSetRelationships(TechId datasetId, DataSetRelationshipRole role, - DefaultResultSetConfig<String, ExternalData> resultSetConfig, - AsyncCallback<ResultSetWithEntityTypes<ExternalData>> callback); + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig, + AsyncCallback<TypedTableResultSet<ExternalData>> callback); /** * @see ICommonClientService#listSearchableEntities() @@ -497,16 +498,16 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync * @see ICommonClientService#searchForDataSets(DetailedSearchCriteria, IResultSetConfig) */ public void searchForDataSets(DetailedSearchCriteria criteria, - final IResultSetConfig<String, ExternalData> resultSetConfig, - final AsyncCallback<ResultSetWithEntityTypes<ExternalData>> callback); + final IResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig, + final AsyncCallback<TypedTableResultSet<ExternalData>> callback); /** * @see ICommonClientService#searchForDataSets(RelatedDataSetCriteria, IResultSetConfig) */ public void searchForDataSets( RelatedDataSetCriteria<? extends IEntityInformationHolder> criteria, - final IResultSetConfig<String, ExternalData> resultSetConfig, - final AsyncCallback<ResultSetWithEntityTypes<ExternalData>> callback); + final IResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig, + final AsyncCallback<TypedTableResultSet<ExternalData>> callback); /** * @see ICommonClientService#listMaterialTypes() @@ -707,7 +708,8 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync AsyncCallback<IEntityInformationHolderWithPermId> openEntityDetailsTabCallback); /** - * @see ICommonClientService#getTemplate(EntityKind, String, boolean, boolean, boolean, BatchOperationKind) + * @see ICommonClientService#getTemplate(EntityKind, String, boolean, boolean, boolean, + * BatchOperationKind) */ public void getTemplate(EntityKind kind, String type, boolean autoGenerate, boolean withExperiments, boolean withSpace, BatchOperationKind operationKind, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java index 9a594d635157ad2648473aaa9067d5509e4e4c11..fba084f5195dc8fc00537c8d15f407cea312ebc7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java @@ -86,7 +86,7 @@ public class DataSetSearchLocatorResolver { IDisposableComponent browser = DataSetSearchHitGrid.createWithInitialSearchCriteria(viewContext, - searchCriteria); + searchCriteria, false); return createTab(Dict.DATA_SET_SEARCH, browser); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java index a8142e595397ef5c018d45a811161082d1ee647d..b2568a1966b90e61b618e70cfd91c12b6f59a620 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java @@ -16,8 +16,8 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data; -import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.edit; - +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Set; @@ -35,107 +35,74 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.EntityGridModelFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.CommonExternalDataColDefKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractEntityBrowserGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PersonRenderer; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractEntityGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.GridUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IBrowserGridActionInvoker; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListener; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListenerAndLinkGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICriteriaProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesCriteriaProvider; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesFilterUtil; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabAction; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedActionWithResult; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.TextToolItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedDatasetCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.DatasetImageOverviewUtilities; -import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; -import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition; -import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Code; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * @author Franz-Josef Elmer */ -public abstract class AbstractExternalDataGrid - extends - AbstractEntityBrowserGrid<ExternalData, BaseEntityModel<ExternalData>, PropertyTypesCriteria> +public abstract class AbstractExternalDataGrid extends AbstractEntityGrid<ExternalData> { - /** lists datasets and collects statistics about all datasets types */ - abstract protected void listDatasets( - DefaultResultSetConfig<String, ExternalData> resultSetConfig, - AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>> callback); - public static final String SHOW_DETAILS_BUTTON_ID_SUFFIX = "_show-details-button"; - // Set of entity types which are currently shown in this grid. - // Used to decide which property columns should be shown. - // Note: content depends on the current grid content. - private Set<BasicEntityType> shownEntityTypesOrNull; - private final ICriteriaProvider<PropertyTypesCriteria> criteriaProvider; protected AbstractExternalDataGrid(final IViewContext<ICommonClientServiceAsync> viewContext, String browserId, String gridId, DisplayTypeIDGenerator displayTypeIDGenerator) { - super(viewContext, gridId, false, displayTypeIDGenerator); + super(viewContext, browserId, true, displayTypeIDGenerator); this.criteriaProvider = createCriteriaProvider(); setId(browserId); - updateCriteriaProviderAndRefresh(); extendBottomToolbar(); + linkProject(); + } - ICellListener<ExternalData> containerClickListener = - new OpenEntityDetailsTabCellClickListener() + private void linkProject() + { + registerListenerAndLinkGenerator(ExternalDataGridColumnIDs.PROJECT, + new ICellListenerAndLinkGenerator<ExternalData>() { - @Override - protected IEntityInformationHolderWithPermId getEntity(ExternalData rowItem) + public void handle(TableModelRowWithObject<ExternalData> rowItem, + boolean specialKeyPressed) { - return rowItem.tryGetContainer(); + final Project project = + rowItem.getObjectOrNull().getExperiment().getProject(); + final String href = LinkExtractor.tryExtract(project); + OpenEntityDetailsTabHelper.open(viewContext, project, + specialKeyPressed, href); } - }; - registerLinkClickListenerFor(CommonExternalDataColDefKind.CONTAINER.id(), - containerClickListener); - ICellListener<ExternalData> experimentClickListener = - new OpenEntityDetailsTabCellClickListener() - { - @Override - protected IEntityInformationHolderWithPermId getEntity(ExternalData rowItem) - { - return rowItem.getExperiment(); - } - }; - registerLinkClickListenerFor(CommonExternalDataColDefKind.EXPERIMENT.id(), - experimentClickListener); - registerLinkClickListenerFor(CommonExternalDataColDefKind.EXPERIMENT_IDENTIFIER.id(), - experimentClickListener); - - ICellListener<ExternalData> sampleClickListener = - new OpenEntityDetailsTabCellClickListener() - { - @Override - protected IEntityInformationHolderWithPermId getEntity(ExternalData rowItem) + public String tryGetLink(ExternalData entity, + ISerializableComparable comparableValue) { - return rowItem.getSample(); + final Experiment exp = entity.getExperiment(); + return exp == null ? null : LinkExtractor.tryExtract(exp.getProject()); } - }; - registerLinkClickListenerFor(CommonExternalDataColDefKind.SAMPLE.id(), sampleClickListener); - registerLinkClickListenerFor(CommonExternalDataColDefKind.SAMPLE_IDENTIFIER.id(), - sampleClickListener); + }); } // adds show, show-details and invalidate buttons @@ -157,7 +124,8 @@ public abstract class AbstractExternalDataGrid { @Override - protected Dialog createDialog(List<ExternalData> dataSets, + protected Dialog createDialog( + List<TableModelRowWithObject<ExternalData>> dataSets, IBrowserGridActionInvoker invoker) { return new DataSetListDeletionConfirmationDialog(viewContext, @@ -174,7 +142,8 @@ public abstract class AbstractExternalDataGrid new AbstractCreateDialogListener() { @Override - protected Dialog createDialog(List<ExternalData> dataSets, + protected Dialog createDialog( + List<TableModelRowWithObject<ExternalData>> dataSets, IBrowserGridActionInvoker invoker) { return new DataSetUploadConfirmationDialog(dataSets, @@ -197,7 +166,6 @@ public abstract class AbstractExternalDataGrid allowMultipleSelection(); } - @Override protected ICriteriaProvider<PropertyTypesCriteria> getCriteriaProvider() { return criteriaProvider; @@ -217,47 +185,15 @@ public abstract class AbstractExternalDataGrid public PropertyTypesCriteria tryGetCriteria() { PropertyTypesCriteria propertyTypesCriteria = super.tryGetCriteria(); - return PropertyTypesFilterUtil.filterPropertyTypesForEntityTypes( - propertyTypesCriteria, entityKind, shownEntityTypesOrNull); + return propertyTypesCriteria; } }; } @Override - protected final void listEntities(DefaultResultSetConfig<String, ExternalData> resultSetConfig, - final AbstractAsyncCallback<ResultSet<ExternalData>> callback) - { - AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>> extendedCallback = - new AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>>(viewContext) - { - @Override - protected void process(ResultSetWithEntityTypes<ExternalData> result) - { - shownEntityTypesOrNull = result.getAvailableEntityTypes(); - callback.onSuccess(result.getResultSet()); - refreshColumnsSettingsIfNecessary(); - } - - @Override - public void finishOnFailure(Throwable caught) - { - callback.finishOnFailure(caught); - } - }; - listDatasets(resultSetConfig, extendedCallback); - } - - private abstract class OpenEntityDetailsTabCellClickListener implements - ICellListener<ExternalData> + protected String translateColumnIdToDictionaryKey(String columnID) { - protected abstract IEntityInformationHolderWithPermId getEntity(ExternalData rowItem); - - public final void handle(ExternalData rowItem, boolean keyPressed) - { - final IEntityInformationHolderWithPermId entity = getEntity(rowItem); - new OpenEntityDetailsTabAction(entity, viewContext, keyPressed).execute(); - } - + return columnID.toLowerCase(); } private final TextToolItem createArchivingMenu() @@ -269,22 +205,23 @@ public abstract class AbstractExternalDataGrid public final static class SelectedAndDisplayedItems { // describes all items which are displayed in the grid (including all grid pages) - private final TableExportCriteria<ExternalData> displayedItemsConfig; + private final TableExportCriteria<TableModelRowWithObject<ExternalData>> displayedItemsConfig; // currently selected items - private final List<ExternalData> selectedItems; + private final List<TableModelRowWithObject<ExternalData>> selectedItems; private final int displayedItemsCount; - public SelectedAndDisplayedItems(List<ExternalData> selectedItems, - TableExportCriteria<ExternalData> displayedItemsConfig, int displayedItemsCount) + public SelectedAndDisplayedItems(List<TableModelRowWithObject<ExternalData>> selectedItems, + TableExportCriteria<TableModelRowWithObject<ExternalData>> displayedItemsConfig, + int displayedItemsCount) { this.displayedItemsConfig = displayedItemsConfig; this.selectedItems = selectedItems; this.displayedItemsCount = displayedItemsCount; } - public TableExportCriteria<ExternalData> getDisplayedItemsConfig() + public TableExportCriteria<TableModelRowWithObject<ExternalData>> getDisplayedItemsConfig() { return displayedItemsConfig; } @@ -294,17 +231,31 @@ public abstract class AbstractExternalDataGrid return displayedItemsCount; } - public List<ExternalData> getSelectedItems() + public List<TableModelRowWithObject<ExternalData>> getSelectedItems() { return selectedItems; } + public List<ExternalData> getSelectedDataSets() + { + List<ExternalData> dataSets = new ArrayList<ExternalData>(); + for (TableModelRowWithObject<ExternalData> item : selectedItems) + { + dataSets.add(item.getObjectOrNull()); + } + return dataSets; + } + public DisplayedOrSelectedDatasetCriteria createCriteria(boolean selected) { if (selected) { - List<ExternalData> items = getSelectedItems(); - List<String> datasetCodes = Code.extractCodes(items); + List<TableModelRowWithObject<ExternalData>> items = getSelectedItems(); + List<String> datasetCodes = new ArrayList<String>(); + for (TableModelRowWithObject<ExternalData> row : items) + { + datasetCodes.add(row.getObjectOrNull().getCode()); + } return DisplayedOrSelectedDatasetCriteria.createSelectedItems(datasetCodes); } else { @@ -327,34 +278,15 @@ public abstract class AbstractExternalDataGrid } @Override - protected BaseEntityModel<ExternalData> createModel(GridRowModel<ExternalData> entity) - { - return getColumnsFactory().createModel(entity, - viewContext.getDisplaySettingsManager().getRealNumberFormatingParameters()); - } - - protected ColumnDefsAndConfigs<ExternalData> createColumnsSchema() - { - return getColumnsFactory().createColumnsSchema(viewContext, criteria.tryGetPropertyTypes(), - viewContext.getDisplaySettingsManager().getRealNumberFormatingParameters()); - } - - @Override - protected ColumnDefsAndConfigs<ExternalData> createColumnsDefinition() + protected ColumnDefsAndConfigs<TableModelRowWithObject<ExternalData>> createColumnsDefinition() { - ColumnDefsAndConfigs<ExternalData> schema = createColumnsSchema(); - GridCellRenderer<BaseEntityModel<?>> linkRenderer = createInternalLinkCellRenderer(); - schema.setGridCellRendererFor(CommonExternalDataColDefKind.CONTAINER.id(), linkRenderer); - schema.setGridCellRendererFor(CommonExternalDataColDefKind.SAMPLE.id(), linkRenderer); - schema.setGridCellRendererFor(CommonExternalDataColDefKind.SAMPLE_IDENTIFIER.id(), - linkRenderer); - schema.setGridCellRendererFor(CommonExternalDataColDefKind.EXPERIMENT.id(), linkRenderer); - schema.setGridCellRendererFor(CommonExternalDataColDefKind.EXPERIMENT_IDENTIFIER.id(), - linkRenderer); - schema.setGridCellRendererFor(CommonExternalDataColDefKind.PROJECT.id(), linkRenderer); - schema.setGridCellRendererFor(CommonExternalDataColDefKind.SHOW_DETAILS_LINK.id(), + ColumnDefsAndConfigs<TableModelRowWithObject<ExternalData>> schema = + super.createColumnsDefinition(); + schema.setGridCellRendererFor(ExternalDataGridColumnIDs.REGISTRATOR, + PersonRenderer.REGISTRATOR_RENDERER); + schema.setGridCellRendererFor(ExternalDataGridColumnIDs.SHOW_DETAILS_LINK, createShowDetailsLinkCellRenderer()); - schema.setGridCellRendererFor(CommonExternalDataColDefKind.OVERVIEW.id(), + schema.setGridCellRendererFor(ExternalDataGridColumnIDs.OVERVIEW, createOverviewCellRenderer()); return schema; } @@ -405,63 +337,32 @@ public abstract class AbstractExternalDataGrid return false; } - private EntityGridModelFactory<ExternalData> getColumnsFactory() - { - return new EntityGridModelFactory<ExternalData>(viewContext, getStaticColumnsDefinition()); - } - - @Override - protected IColumnDefinitionKind<ExternalData>[] getStaticColumnsDefinition() - { - return CommonExternalDataColDefKind.values(); - } - @Override - protected List<IColumnDefinition<ExternalData>> getInitialFilters() + protected List<String> getColumnIdsOfFilters() { - return asColumnFilters(new CommonExternalDataColDefKind[] - { CommonExternalDataColDefKind.CODE, CommonExternalDataColDefKind.FILE_FORMAT_TYPE }); + return Arrays.asList(ExternalDataGridColumnIDs.CODE, + ExternalDataGridColumnIDs.FILE_FORMAT_TYPE); } @Override - protected void prepareExportEntities(TableExportCriteria<ExternalData> exportCriteria, + protected void prepareExportEntities( + TableExportCriteria<TableModelRowWithObject<ExternalData>> exportCriteria, AbstractAsyncCallback<String> callback) { viewContext.getService().prepareExportDataSetSearchHits(exportCriteria, callback); } @Override - public Set<DatabaseModificationKind> getGridRelevantModifications() + public DatabaseModificationKind[] getRelevantModifications() { - final Set<DatabaseModificationKind> relevantMods = - getGridRelevantModifications(ObjectKind.DATA_SET); - relevantMods.add(edit(ObjectKind.EXPERIMENT)); - relevantMods.add(edit(ObjectKind.SAMPLE)); - DatabaseModificationKind.addAny(relevantMods, ObjectKind.VOCABULARY_TERM); - return relevantMods; - } - - @Override - protected boolean hasColumnsDefinitionChanged(PropertyTypesCriteria newCriteria) - { - List<PropertyType> newPropertyTypes = newCriteria.tryGetPropertyTypes(); - List<PropertyType> prevPropertyTypes = - (criteria == null ? null : criteria.tryGetPropertyTypes()); - if (newPropertyTypes == null) - { - return false; // nothing chosen - } - if (prevPropertyTypes == null) - { - return true; // first selection - } - return newPropertyTypes.equals(prevPropertyTypes) == false; + return GridUtils.getRelevantModifications(ObjectKind.DATA_SET, getCriteriaProvider()); } @Override - protected void showEntityViewer(ExternalData dataSet, boolean editMode, boolean inBackground) + protected void showEntityViewer(TableModelRowWithObject<ExternalData> dataSet, + boolean editMode, boolean inBackground) { - showEntityInformationHolderViewer(dataSet, editMode, inBackground); + showEntityInformationHolderViewer(dataSet.getObjectOrNull(), editMode, inBackground); } @Override @@ -469,10 +370,4 @@ public abstract class AbstractExternalDataGrid { return EntityKind.DATA_SET; } - - @Override - protected EntityType tryToGetEntityType() - { - return null; - } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ComputationData.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ComputationData.java index ff13463a256b1ff0cd02a71f50d112a1a2583165..4c4e316911b3d7bd7aaa4a9710aa7759d2387513 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ComputationData.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ComputationData.java @@ -16,12 +16,14 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data; +import java.util.ArrayList; import java.util.List; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.AbstractExternalDataGrid.SelectedAndDisplayedItems; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.SelectedOrAllDataSetsRadioProvider.ISelectedDataSetsProvider; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; class ComputationData implements ISelectedDataSetsProvider { @@ -53,6 +55,13 @@ class ComputationData implements ISelectedDataSetsProvider public List<ExternalData> getSelectedDataSets() { - return selectedAndDisplayedItems.getSelectedItems(); + List<TableModelRowWithObject<ExternalData>> selectedItems = + selectedAndDisplayedItems.getSelectedItems(); + List<ExternalData> dataSets = new ArrayList<ExternalData>(); + for (TableModelRowWithObject<ExternalData> item : selectedItems) + { + dataSets.add(item.getObjectOrNull()); + } + return dataSets; } } \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetArchivingMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetArchivingMenu.java index 0782aedd519781b75c4270ff205bd7af823dfe52..fe32086bd072a979d8cf04a60a4579923eea184b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetArchivingMenu.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetArchivingMenu.java @@ -170,7 +170,8 @@ public class DataSetArchivingMenu extends TextToolItem public List<ExternalData> getSelectedDataSets() { - return selectedAndDisplayedItems.getSelectedItems(); + List<ExternalData> selectedDataSets = selectedAndDisplayedItems.getSelectedDataSets(); + return selectedDataSets; } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetListDeletionConfirmationDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetListDeletionConfirmationDialog.java index 54e15734d3af063a418e7ca7a87c8d2febe3cd29..89deacdfaf4bae4ed36ac2494e6dbb393b1c3255 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetListDeletionConfirmationDialog.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetListDeletionConfirmationDialog.java @@ -32,14 +32,15 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelecte import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletionType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; // TODO extend AbstractDataListTrashDeletionConfirmationDialog when trash is working properly public final class DataSetListDeletionConfirmationDialog extends - AbstractDataListDeletionConfirmationDialog<ExternalData> + AbstractDataListDeletionConfirmationDialog<TableModelRowWithObject<ExternalData>> { private final SelectedAndDisplayedItems selectedAndDisplayedItemsOrNull; - private final ExternalData singleData; + private final TableModelRowWithObject<ExternalData> singleData; protected CheckBox force; @@ -55,7 +56,7 @@ public final class DataSetListDeletionConfirmationDialog extends public DataSetListDeletionConfirmationDialog( IViewContext<ICommonClientServiceAsync> viewContext, - AsyncCallback<Void> deletionCallback, ExternalData data) + AsyncCallback<Void> deletionCallback, TableModelRowWithObject<ExternalData> data) { super(viewContext, Collections.singletonList(data), deletionCallback); this.singleData = data; @@ -80,9 +81,9 @@ public final class DataSetListDeletionConfirmationDialog extends deletionType, isTrashEnabled() ? false : force.getValue(), deletionCallback); } else { - getViewContext().getCommonService().deleteDataSet(singleData.getCode(), - reason.getValue(), deletionType, isTrashEnabled() ? false : force.getValue(), - deletionCallback); + getViewContext().getCommonService().deleteDataSet( + singleData.getObjectOrNull().getCode(), reason.getValue(), deletionType, + isTrashEnabled() ? false : force.getValue(), deletionCallback); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java index cdab9fb0c9ebb28faf96ced8a700d55affe0ae3b..f7db92b20141ade20540703461fdc973598ada31 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java @@ -34,8 +34,9 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericCon import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ShowResultSetCutInfo; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListenerAndLinkGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.report.ReportGeneratedCallback.IOnReportComponentGeneratedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.search.DetailedDataSetSearchToolbar; @@ -43,12 +44,13 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.search. import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.search.DetailedSearchWindow; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.search.IDetailedSearchHitGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * Grid with detailed data set search results. @@ -68,21 +70,21 @@ public class DataSetSearchHitGrid extends AbstractExternalDataGrid implements public static IDisposableComponent create( final IViewContext<ICommonClientServiceAsync> viewContext) { - return create(viewContext, null); + return create(viewContext, null, false); } - public static DisposableEntityChooser<ExternalData> createWithInitialSearchCriteria( + public static DisposableEntityChooser<TableModelRowWithObject<ExternalData>> createWithInitialSearchCriteria( final IViewContext<ICommonClientServiceAsync> viewContext, - DetailedSearchCriteria searchCriteria) + DetailedSearchCriteria searchCriteria, boolean forChooser) { - return create(viewContext, searchCriteria); + return create(viewContext, searchCriteria, forChooser); } - private static DisposableEntityChooser<ExternalData> create( + private static DisposableEntityChooser<TableModelRowWithObject<ExternalData>> create( final IViewContext<ICommonClientServiceAsync> viewContext, - DetailedSearchCriteria searchCriteriaOrNull) + DetailedSearchCriteria searchCriteriaOrNull, boolean forChooser) { - DataSetSearchHitGrid grid = new DataSetSearchHitGrid(viewContext); + DataSetSearchHitGrid grid = new DataSetSearchHitGrid(viewContext, forChooser); final DetailedSearchWindow searchWindow = new DetailedSearchWindow(viewContext, EntityKind.DATA_SET); @@ -157,16 +159,50 @@ public class DataSetSearchHitGrid extends AbstractExternalDataGrid implements private DetailedSearchCriteria chosenSearchCriteria; - private DataSetSearchHitGrid(final IViewContext<ICommonClientServiceAsync> viewContext) + private final boolean forChooser; + + private DataSetSearchHitGrid(final IViewContext<ICommonClientServiceAsync> viewContext, + boolean forChooser) { super(viewContext, BROWSER_ID, GRID_ID, DisplayTypeIDGenerator.DATA_SET_SEARCH_RESULT_GRID); + this.forChooser = forChooser; + } + + @Override + protected ICellListenerAndLinkGenerator<ExternalData> tryGetCellListenerAndLinkGenerator( + String columnId) + { + if (forChooser) + { + return null; + } + return super.tryGetCellListenerAndLinkGenerator(columnId); + } + + @Override + protected boolean isEditable(BaseEntityModel<TableModelRowWithObject<ExternalData>> model, + String columnID) + { + return forChooser ? false : super.isEditable(model, columnID); + } + + @Override + protected void showNonEditableTableCellMessage( + BaseEntityModel<TableModelRowWithObject<ExternalData>> model, String columnID) + { + if (forChooser) + { + return; + } + super.showNonEditableTableCellMessage(model, columnID); } @Override - protected void listDatasets(DefaultResultSetConfig<String, ExternalData> resultSetConfig, - final AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>> callback) + protected void listTableRows( + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig, + AbstractAsyncCallback<TypedTableResultSet<ExternalData>> callback) { - callback.addOnSuccessAction(new ShowResultSetCutInfo<ResultSetWithEntityTypes<ExternalData>>( + callback.addOnSuccessAction(new ShowResultSetCutInfo<TypedTableResultSet<ExternalData>>( viewContext)); viewContext.getService().searchForDataSets(chosenSearchCriteria, resultSetConfig, callback); } @@ -174,10 +210,6 @@ public class DataSetSearchHitGrid extends AbstractExternalDataGrid implements public void refresh(DetailedSearchCriteria newCriteria, List<PropertyType> propertyTypes) { chosenSearchCriteria = newCriteria; - if (criteria != null) - { - criteria.setPropertyTypes(propertyTypes); - } refresh(); } @@ -191,16 +223,8 @@ public class DataSetSearchHitGrid extends AbstractExternalDataGrid implements super.refresh(); } - @Override - protected ColumnDefsAndConfigs<ExternalData> createColumnsSchema() - { - List<PropertyType> propertyTypes = criteria == null ? null : criteria.tryGetPropertyTypes(); - return DataSetSearchHitModel.createColumnsSchema(viewContext, propertyTypes, viewContext - .getDisplaySettingsManager().getRealNumberFormatingParameters()); - } - /** @return this grid as a disposable component with a specified toolbar at the top. */ - private DisposableEntityChooser<ExternalData> asDisposableWithToolbar( + private DisposableEntityChooser<TableModelRowWithObject<ExternalData>> asDisposableWithToolbar( final LayoutContainerWithDisposableComponent containerHolder, final IDisposableComponent toolbar) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java deleted file mode 100644 index a3ad80b35e60cc6a2b0314767c4d56ed565ecd46..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data; - -import java.util.ArrayList; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.EntityGridModelFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PropertyTypeRenderer; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.CommonExternalDataColDefKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.DataSetPropertyColDef; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesFilterUtil; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RealNumberFormatingParameters; - -/** - * @author Tomasz Pylak - */ -public class DataSetSearchHitModel extends BaseEntityModel<ExternalData> -{ - private static final long serialVersionUID = 1L; - - private static final int PROPERTY_COLUMN_WIDTH = 150; - - public DataSetSearchHitModel(final GridRowModel<ExternalData> entity) - { - super(entity, createColumnsSchema(entity)); - } - - // here we create the columns definition having just one table row. We need them only to render - // column values (headers have been already created), so no message provider is needed. - private static List<IColumnDefinitionUI<ExternalData>> createColumnsSchema( - GridRowModel<ExternalData> entity) - { - List<IColumnDefinitionUI<ExternalData>> list = createCommonColumnsSchema(null); - - List<IEntityProperty> properties = - DataSetPropertyColDef.getDataSetProperties(entity.getOriginalObject()); - List<PropertyType> datasetProperties = extractPropertyTypes(properties); - list.addAll(createDatasetPropertyTypeColDefs(datasetProperties)); - return list; - } - - private static List<IColumnDefinitionUI<ExternalData>> createDatasetPropertyTypeColDefs( - List<PropertyType> propertyTypes) - { - List<IColumnDefinitionUI<ExternalData>> list = createEmptyList(); - for (PropertyType prop : propertyTypes) - { - list.add(createDatasetPropertyTypeColDef(prop, propertyTypes)); - } - return list; - } - - private static ArrayList<IColumnDefinitionUI<ExternalData>> createEmptyList() - { - return new ArrayList<IColumnDefinitionUI<ExternalData>>(); - } - - private static List<PropertyType> extractPropertyTypes( - List<? extends IEntityProperty> properties) - { - List<PropertyType> propertyTypes = new ArrayList<PropertyType>(); - for (IEntityProperty prop : properties) - { - PropertyType propertyType = prop.getPropertyType(); - propertyTypes.add(propertyType); - } - return propertyTypes; - } - - public static ColumnDefsAndConfigs<ExternalData> createColumnsSchema( - IViewContext<?> viewContext, List<PropertyType> mergedPropertyTypesOrNull, - RealNumberFormatingParameters realNumberFormatingParameters) - { - List<IColumnDefinitionUI<ExternalData>> commonColumnsSchema = - createCommonColumnsSchema(viewContext); - ColumnDefsAndConfigs<ExternalData> columns = - ColumnDefsAndConfigs.create(commonColumnsSchema, viewContext); - - if (mergedPropertyTypesOrNull != null) - { - List<PropertyType> datasetProperties = - PropertyTypesFilterUtil.filterDataSetPropertyTypes(mergedPropertyTypesOrNull); - EntityGridModelFactory.createPropertyColumnsSchema(columns, datasetProperties, - realNumberFormatingParameters, viewContext); - } - return columns; - } - - private static IColumnDefinitionUI<ExternalData> createDatasetPropertyTypeColDef( - PropertyType propertyType, List<PropertyType> propertyTypes) - { - String label = PropertyTypeRenderer.getDisplayName(propertyType, propertyTypes); - return new DataSetPropertyColDef(propertyType, true, PROPERTY_COLUMN_WIDTH, label); - } - - private static List<IColumnDefinitionUI<ExternalData>> createCommonColumnsSchema( - IMessageProvider msgProviderOrNull) - { - return createColumnsDefinition(CommonExternalDataColDefKind.values(), msgProviderOrNull); - } -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetUploadConfirmationDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetUploadConfirmationDialog.java index 314d68aa152449c49d675733d0fe65191ea1ee17..65183c3aaf106d42772b7a7851ebe14a5c9eff52 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetUploadConfirmationDialog.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetUploadConfirmationDialog.java @@ -38,12 +38,13 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetUploadParam import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedDatasetCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * @author Franz-Josef Elmer */ public final class DataSetUploadConfirmationDialog extends - AbstractDataConfirmationDialog<List<ExternalData>> + AbstractDataConfirmationDialog<List<TableModelRowWithObject<ExternalData>>> { private static final int FIELD_WIDTH_IN_UPLOAD_DIALOG = 200; @@ -67,7 +68,7 @@ public final class DataSetUploadConfirmationDialog extends private Radio uploadSelectedRadio; - public DataSetUploadConfirmationDialog(List<ExternalData> dataSets, + public DataSetUploadConfirmationDialog(List<TableModelRowWithObject<ExternalData>> dataSets, IDelegatedActionWithResult<SelectedAndDisplayedItems> selectedAndDisplayedItemsAction, int displayedItemsCount, IViewContext<?> viewContext) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/RelatedDataSetGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/RelatedDataSetGrid.java index c291544dfc02a4a6dbd200357fec39abb14d5e74..e02449cb59d32673abd7fff3ae6e4b309767226e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/RelatedDataSetGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/RelatedDataSetGrid.java @@ -17,22 +17,18 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data; -import java.util.List; - import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RelatedDataSetCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; -import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * Grid with data sets related with specified entities. @@ -65,8 +61,9 @@ public class RelatedDataSetGrid extends AbstractExternalDataGrid } @Override - protected void listDatasets(DefaultResultSetConfig<String, ExternalData> resultSetConfig, - final AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>> callback) + protected void listTableRows( + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig, + AbstractAsyncCallback<TypedTableResultSet<ExternalData>> callback) { viewContext.getService().searchForDataSets(relatedCriteria, resultSetConfig, callback); } @@ -81,18 +78,4 @@ public class RelatedDataSetGrid extends AbstractExternalDataGrid super.refresh(); } - @Override - protected DataSetSearchHitModel createModel(GridRowModel<ExternalData> entity) - { - return new DataSetSearchHitModel(entity); - } - - @Override - protected ColumnDefsAndConfigs<ExternalData> createColumnsSchema() - { - List<PropertyType> propertyTypes = criteria == null ? null : criteria.tryGetPropertyTypes(); - return DataSetSearchHitModel.createColumnsSchema(viewContext, propertyTypes, viewContext - .getDisplaySettingsManager().getRealNumberFormatingParameters()); - } - } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java index b0be00f25efd4c28d5ad691fb03a28f038d510fe..1e9c4d7b2c1193aee69e5ad29e6abc80eb88591a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java @@ -36,7 +36,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PersonRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.DisplayedAndSelectedEntities; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; @@ -334,8 +333,7 @@ public class ExperimentBrowserGrid extends AbstractEntityGrid<Experiment> schema.setGridCellRendererFor(ExperimentBrowserGridColumnIDs.REGISTRATOR, PersonRenderer.REGISTRATOR_RENDERER); schema.setGridCellRendererFor(ExperimentBrowserGridColumnIDs.SHOW_DETAILS_LINK, - LinkRenderer.createExternalLinkRenderer(viewContext - .getMessage(Dict.SHOW_DETAILS_LINK_TEXT_VALUE))); + createShowDetailsLinkCellRenderer()); return schema; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/DataSetChooserField.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/DataSetChooserField.java index 190447a8dc1491ed4170862db39cb73793cbfb33..bb4e7eb8c8003e00a0221a13726092415fbafe56 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/DataSetChooserField.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/DataSetChooserField.java @@ -32,6 +32,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchCriteriaConnection; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * A field for selecting a data set from a list. @@ -69,10 +70,19 @@ public class DataSetChooserField extends ChosenEntitySetter<ExternalData> .getAttributeFieldKind(EntityKind.DATA_SET, "CODE")), "*"); criterionList.add(searchCriterion); searchCriteria.setCriteria(criterionList); - DisposableEntityChooser<ExternalData> browser = - DataSetSearchHitGrid.createWithInitialSearchCriteria(viewContext, searchCriteria); - new EntityChooserDialog<ExternalData>(browser, field, "Choose data set", viewContext) - .show(); + DisposableEntityChooser<TableModelRowWithObject<ExternalData>> browser = + DataSetSearchHitGrid.createWithInitialSearchCriteria(viewContext, searchCriteria, + true); + new EntityChooserDialog<TableModelRowWithObject<ExternalData>>(browser, + new IChosenEntitySetter<TableModelRowWithObject<ExternalData>>() + { + + public void setChosenEntity( + TableModelRowWithObject<ExternalData> entityOrNull) + { + field.setChosenEntity(entityOrNull.getObjectOrNull()); + } + }, "Choose data set", viewContext).show(); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityGrid.java index e7c23c7426608b962e29f174642c89d912777fe1..514921e53dc9528d4515087b4944be250085ac38 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityGrid.java @@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid; import java.util.Arrays; import java.util.List; +import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; + import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.EntityPropertyUpdates; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGridColumnIDs; @@ -99,4 +103,10 @@ public abstract class AbstractEntityGrid<E extends IEntityInformationHolderWithP showEntityInformationHolderViewer(row.getObjectOrNull(), editMode, inBackground); } + protected final GridCellRenderer<BaseEntityModel<?>> createShowDetailsLinkCellRenderer() + { + return LinkRenderer.createExternalLinkRenderer(viewContext + .getMessage(Dict.SHOW_DETAILS_LINK_TEXT_VALUE)); + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java index 15be6a785c84b8fdee9557c518fa319d7e7d5a17..f38a116c8c29c539d2f0dd9a61462807d9575a9c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java @@ -25,7 +25,6 @@ import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.Dialog; import com.extjs.gxt.ui.client.widget.button.Button; -import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; @@ -39,7 +38,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.SampleTypeDisplayID; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PersonRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.DisplayedAndSelectedEntities; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor; @@ -410,12 +408,6 @@ public class SampleBrowserGrid extends AbstractEntityGrid<Sample> return definitions; } - protected final GridCellRenderer<BaseEntityModel<?>> createShowDetailsLinkCellRenderer() - { - return LinkRenderer.createExternalLinkRenderer(viewContext - .getMessage(Dict.SHOW_DETAILS_LINK_TEXT_VALUE)); - } - protected boolean isPropertyEditable(EntityType entityType, String propertyColumnNameWithoutPrefix) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DisplayedOrSelectedDatasetCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DisplayedOrSelectedDatasetCriteria.java index 0b80aa828ed27580892ba7fe90e99a2d948e963f..40cae294b6dfe1ee31ca85eaceb967ed5c521c63 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DisplayedOrSelectedDatasetCriteria.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DisplayedOrSelectedDatasetCriteria.java @@ -21,6 +21,7 @@ import java.util.List; import com.google.gwt.user.client.rpc.IsSerializable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * Defines a set of datasets by either enumerating their codes or providing the grid configuration @@ -31,12 +32,12 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; public final class DisplayedOrSelectedDatasetCriteria implements IsSerializable { - private TableExportCriteria<ExternalData> displayedItemsOrNull; + private TableExportCriteria<TableModelRowWithObject<ExternalData>> displayedItemsOrNull; private List<String> selectedDatasetCodesOrNull; public static DisplayedOrSelectedDatasetCriteria createDisplayedItems( - TableExportCriteria<ExternalData> displayedItems) + TableExportCriteria<TableModelRowWithObject<ExternalData>> displayedItems) { return new DisplayedOrSelectedDatasetCriteria(displayedItems, null); } @@ -47,7 +48,7 @@ public final class DisplayedOrSelectedDatasetCriteria implements IsSerializable } private DisplayedOrSelectedDatasetCriteria( - TableExportCriteria<ExternalData> displayedItemsOrNull, + TableExportCriteria<TableModelRowWithObject<ExternalData>> displayedItemsOrNull, List<String> selectedDatasetCodesOrNull) { assert (displayedItemsOrNull == null) != (selectedDatasetCodesOrNull == null) : "Exactly one arg must be null and one non-null"; @@ -55,7 +56,7 @@ public final class DisplayedOrSelectedDatasetCriteria implements IsSerializable this.selectedDatasetCodesOrNull = selectedDatasetCodesOrNull; } - public TableExportCriteria<ExternalData> tryGetDisplayedItems() + public TableExportCriteria<TableModelRowWithObject<ExternalData>> tryGetDisplayedItems() { return displayedItemsOrNull; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java index 8b4960ee139066cc3ad433a0943d2a864fc536a6..2b3355dbdfba19cd9588d479dc609242376aca21 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java @@ -25,7 +25,7 @@ public class ExternalDataGridColumnIDs public static final String DATA_SET_TYPE = "DATA_SET_TYPE"; - public static final String CONTAINER_DATA_SET = "CONTAINER_DATA_SET"; + public static final String CONTAINER_DATASET = "CONTAINER_DATASET"; public static final String ORDER_IN_CONTAINER = "ORDER_IN_CONTAINER"; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java index 562edb14791b99e333892979d3c78be5aeab2735..8d8fdf3e313572310ad23982199db1253c2eb81b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java @@ -68,6 +68,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableModelReferenc import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.InvalidSessionException; import ch.systemsx.cisd.openbis.generic.client.web.server.calculator.ITableDataProvider; +import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractExternalDataProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AttachmentVersionsProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AuthorizationGroupProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.CacheManager; @@ -490,23 +491,35 @@ public final class CommonClientService extends AbstractClientService implements return listEntities(provider, criteria); } - public ResultSetWithEntityTypes<ExternalData> searchForDataSets( - DetailedSearchCriteria criteria, - final IResultSetConfig<String, ExternalData> resultSetConfig) + public TypedTableResultSet<ExternalData> searchForDataSets( + final DetailedSearchCriteria criteria, + final IResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig) { final String sessionToken = getSessionToken(); - return listEntitiesWithTypes(resultSetConfig, new ListDataSetSearchOriginalDataProvider( - commonServer, sessionToken, criteria)); + return listEntities(new AbstractExternalDataProvider(commonServer, sessionToken) + { + @Override + protected List<ExternalData> getDataSets() + { + return commonServer.searchForDataSets(sessionToken, criteria); + } + }, resultSetConfig); } - public ResultSetWithEntityTypes<ExternalData> searchForDataSets( + public TypedTableResultSet<ExternalData> searchForDataSets( RelatedDataSetCriteria<? extends IEntityInformationHolder> criteria, - final IResultSetConfig<String, ExternalData> resultSetConfig) + final IResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig) { final String sessionToken = getSessionToken(); - DataSetRelatedEntities entities = extractRelatedEntities(criteria); - return listEntitiesWithTypes(resultSetConfig, new ListRelatedDataSetOriginalDataProvider( - commonServer, sessionToken, entities)); + final DataSetRelatedEntities entities = extractRelatedEntities(criteria); + return listEntities(new AbstractExternalDataProvider(commonServer, sessionToken) + { + @Override + protected List<ExternalData> getDataSets() + { + return commonServer.listRelatedDataSets(sessionToken, entities); + } + }, resultSetConfig); } private <E extends IEntityInformationHolder> DataSetRelatedEntities extractRelatedEntities( @@ -558,7 +571,8 @@ public final class CommonClientService extends AbstractClientService implements public TypedTableResultSet<EntityTypePropertyType<?>> listPropertyTypeAssignments( DefaultResultSetConfig<String, TableModelRowWithObject<EntityTypePropertyType<?>>> criteria) { - return listEntities(new EntityTypePropertyTypeProvider(commonServer, getSessionToken()), criteria); + return listEntities(new EntityTypePropertyTypeProvider(commonServer, getSessionToken()), + criteria); } public TypedTableResultSet<Space> listGroups( @@ -696,65 +710,49 @@ public final class CommonClientService extends AbstractClientService implements return listEntities(provider, criteria); } - public ResultSetWithEntityTypes<ExternalData> listSampleDataSets(final TechId sampleId, - DefaultResultSetConfig<String, ExternalData> criteria, + public TypedTableResultSet<ExternalData> listSampleDataSets(final TechId sampleId, + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> criteria, final boolean showOnlyDirectlyConnected) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { - return listEntitiesWithTypes(criteria, - new AbstractOriginalDataProviderWithoutHeaders<ExternalData>() - { - @Override - public List<ExternalData> getFullOriginalData() throws UserFailureException - { - final String sessionToken = getSessionToken(); - final List<ExternalData> externalData = - commonServer.listSampleExternalData(sessionToken, sampleId, - showOnlyDirectlyConnected); - return externalData; - } - }); + return listEntities(new AbstractExternalDataProvider(commonServer, getSessionToken()) + { + @Override + protected List<ExternalData> getDataSets() + { + return commonServer.listSampleExternalData(sessionToken, sampleId, + showOnlyDirectlyConnected); + } + }, criteria); } - public ResultSetWithEntityTypes<ExternalData> listExperimentDataSets(final TechId experimentId, - DefaultResultSetConfig<String, ExternalData> criteria) + public TypedTableResultSet<ExternalData> listExperimentDataSets(final TechId experimentId, + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> criteria) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { - return listEntitiesWithTypes(criteria, - new AbstractOriginalDataProviderWithoutHeaders<ExternalData>() - { - - @Override - public List<ExternalData> getFullOriginalData() throws UserFailureException - { - final String sessionToken = getSessionToken(); - final List<ExternalData> externalData = - commonServer.listExperimentExternalData(sessionToken, - experimentId); - return externalData; - } - - }); + return listEntities(new AbstractExternalDataProvider(commonServer, getSessionToken()) + { + @Override + protected List<ExternalData> getDataSets() + { + return commonServer.listExperimentExternalData(sessionToken, experimentId); + } + }, criteria); } - public ResultSetWithEntityTypes<ExternalData> listDataSetRelationships(final TechId datasetId, + public TypedTableResultSet<ExternalData> listDataSetRelationships(final TechId datasetId, final DataSetRelationshipRole role, - final DefaultResultSetConfig<String, ExternalData> criteria) + final DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> criteria) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { - return listEntitiesWithTypes(criteria, - new AbstractOriginalDataProviderWithoutHeaders<ExternalData>() - { - @Override - public List<ExternalData> getFullOriginalData() throws UserFailureException - { - final String sessionToken = getSessionToken(); - final List<ExternalData> externalData = - commonServer.listDataSetRelationships(sessionToken, datasetId, - role); - return externalData; - } - }); + return listEntities(new AbstractExternalDataProvider(commonServer, getSessionToken()) + { + @Override + protected List<ExternalData> getDataSets() + { + return commonServer.listDataSetRelationships(sessionToken, datasetId, role); + } + }, criteria); } // ---------------- end list using cache ---------- @@ -1143,7 +1141,8 @@ public final class CommonClientService extends AbstractClientService implements } - public String prepareExportDataSetSearchHits(TableExportCriteria<ExternalData> exportCriteria) + public String prepareExportDataSetSearchHits( + TableExportCriteria<TableModelRowWithObject<ExternalData>> exportCriteria) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { return prepareExportEntities(exportCriteria); @@ -1761,37 +1760,45 @@ public final class CommonClientService extends AbstractClientService implements return displayedOrSelectedDatasetCriteria.tryGetSelectedItems(); } else { - TableExportCriteria<ExternalData> displayedItemsCriteria = + TableExportCriteria<TableModelRowWithObject<ExternalData>> displayedItemsCriteria = displayedOrSelectedDatasetCriteria.tryGetDisplayedItems(); assert displayedItemsCriteria != null : "displayedItemsCriteria is null"; - List<ExternalData> datasets = + List<TableModelRowWithObject<ExternalData>> datasets = fetchCachedEntities(displayedItemsCriteria).extractOriginalObjects(); if (serviceDescriptionOrNull != null) { datasets = filterDatasets(datasets, serviceDescriptionOrNull); } - return Code.extractCodes(datasets); + List<String> codes = new ArrayList<String>(); + for (TableModelRowWithObject<ExternalData> row : datasets) + { + codes.add(row.getObjectOrNull().getCode()); + } + return codes; } } // returns datasets which have type code belonging to the specified set and belong to the same // dataset store as the plugin - private static List<ExternalData> filterDatasets(List<ExternalData> datasets, + private static List<TableModelRowWithObject<ExternalData>> filterDatasets( + List<TableModelRowWithObject<ExternalData>> datasets, DatastoreServiceDescription serviceDescription) { String[] datasetTypeCodes = serviceDescription.getDatasetTypeCodes(); Set<String> datasetTypeCodesMap = new HashSet<String>(Arrays.asList(datasetTypeCodes)); - List<ExternalData> result = new ArrayList<ExternalData>(); + List<TableModelRowWithObject<ExternalData>> result = + new ArrayList<TableModelRowWithObject<ExternalData>>(); String serviceDatastoreCode = serviceDescription.getDatastoreCode(); - for (ExternalData dataset : datasets) + for (TableModelRowWithObject<ExternalData> row : datasets) { + ExternalData dataset = row.getObjectOrNull(); String datasetTypeCode = dataset.getDataSetType().getCode(); if (datasetTypeCodesMap.contains(datasetTypeCode)) { String datasetDatastoreCode = dataset.getDataStore().getCode(); if (datasetDatastoreCode.equals(serviceDatastoreCode)) { - result.add(dataset); + result.add(row); } } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java index 086f42516bcac0328faab7b479cd2bcacbd9409f..2f828697535c71c558309aa302db45d87e9cc047 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java @@ -18,7 +18,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.server.resultset; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.ARCHIVING_STATUS; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.CODE; -import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.CONTAINER_DATA_SET; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.CONTAINER_DATASET; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.DATA_PRODUCER_CODE; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.DATA_SET_TYPE; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.DATA_STORE_CODE; @@ -51,6 +51,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; @@ -61,7 +62,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; public abstract class AbstractExternalDataProvider extends AbstractCommonTableModelProvider<ExternalData> { - AbstractExternalDataProvider(ICommonServer commonServer, String sessionToken) + public AbstractExternalDataProvider(ICommonServer commonServer, String sessionToken) { super(commonServer, sessionToken); } @@ -73,7 +74,7 @@ public abstract class AbstractExternalDataProvider extends TypedTableModelBuilder<ExternalData> builder = new TypedTableModelBuilder<ExternalData>(); builder.addColumn(CODE).withDefaultWidth(150); builder.addColumn(DATA_SET_TYPE).withDefaultWidth(200); - builder.addColumn(CONTAINER_DATA_SET).withDefaultWidth(150).hideByDefault(); + builder.addColumn(CONTAINER_DATASET).withDefaultWidth(150).hideByDefault(); builder.addColumn(ORDER_IN_CONTAINER).withDefaultWidth(100).hideByDefault(); builder.addColumn(SAMPLE).withDefaultWidth(100).hideByDefault(); builder.addColumn(EXTERNAL_DATA_SAMPLE_IDENTIFIER).withDefaultWidth(200); @@ -99,24 +100,30 @@ public abstract class AbstractExternalDataProvider extends for (ExternalData dataSet : dataSets) { builder.addRow(dataSet); - builder.column(CODE).addString(dataSet.getCode()); + builder.column(CODE).addEntityLink(dataSet, dataSet.getCode()); builder.column(DATA_SET_TYPE).addString(dataSet.getDataSetType().getCode()); ContainerDataSet container = dataSet.tryGetContainer(); - builder.column(CONTAINER_DATA_SET).addString( - container == null ? "" : container.getCode()); + if (container != null) + { + builder.column(CONTAINER_DATASET).addEntityLink(container, container.getCode()); + } Integer orderInContainer = dataSet.getOrderInContainer(); builder.column(ORDER_IN_CONTAINER).addString( orderInContainer == null ? "" : orderInContainer.toString()); - builder.column(SAMPLE).addString(dataSet.getSampleCode()); - builder.column(EXTERNAL_DATA_SAMPLE_IDENTIFIER) - .addString(dataSet.getSampleIdentifier()); - SampleType sampleType = dataSet.getSampleType(); - builder.column(SAMPLE_TYPE).addString(sampleType == null ? "" : sampleType.getCode()); + Sample sample = dataSet.getSample(); + if (sample != null) + { + builder.column(SAMPLE).addEntityLink(sample, sample.getCode()); + builder.column(EXTERNAL_DATA_SAMPLE_IDENTIFIER).addEntityLink(sample, + sample.getIdentifier()); + SampleType sampleType = dataSet.getSampleType(); + builder.column(SAMPLE_TYPE).addString(sampleType.getCode()); + } Experiment experiment = dataSet.getExperiment(); if (experiment != null) { - builder.column(EXPERIMENT).addString(experiment.getCode()); - builder.column(EXTERNAL_DATA_EXPERIMENT_IDENTIFIER).addString( + builder.column(EXPERIMENT).addEntityLink(experiment, experiment.getCode()); + builder.column(EXTERNAL_DATA_EXPERIMENT_IDENTIFIER).addEntityLink(experiment, experiment.getIdentifier()); builder.column(EXPERIMENT_TYPE).addString(experiment.getEntityType().getCode()); builder.column(PROJECT).addString(experiment.getProject().getCode()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java index 5d71e5b1badefd730182be1d5aa58c49a200a5e9..b069e2ff1b888aa8792d34c3e6e98ddf94cfc95e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java @@ -274,7 +274,7 @@ final class CommonServerLogger extends AbstractServerLogger implements ICommonSe public final List<ExternalData> listSampleExternalData(final String sessionToken, final TechId sampleId, final boolean showOnlyDirectlyConnected) { - logAccess(sessionToken, "list_external_data", "ID(%s) DIRECT(%s)", sampleId, + logAccess(sessionToken, "list_sample_external_data", "ID(%s) DIRECT(%s)", sampleId, showOnlyDirectlyConnected); return null; } @@ -282,7 +282,7 @@ final class CommonServerLogger extends AbstractServerLogger implements ICommonSe public List<ExternalData> listExperimentExternalData(final String sessionToken, final TechId experimentId) { - logAccess(sessionToken, "list_external_data", "ID(%s)", experimentId); + logAccess(sessionToken, "list_experiment_external_data", "ID(%s)", experimentId); return null; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetRelationshipBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetRelationshipBrowser.java index 39dbd4e50bb6060892209ab07bcddd49eb69ba40..12ec3edfeb52f89cdb0b9cadef77b3b36d0f1a4f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetRelationshipBrowser.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetRelationshipBrowser.java @@ -24,11 +24,12 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.AbstractExternalDataGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetRelationshipRole; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * {@link AbstractExternalDataGrid} containing data sets directly connected with a specified data @@ -85,8 +86,9 @@ public class DataSetRelationshipBrowser extends AbstractExternalDataGrid } @Override - protected void listDatasets(DefaultResultSetConfig<String, ExternalData> resultSetConfig, - final AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>> callback) + protected void listTableRows( + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig, + AbstractAsyncCallback<TypedTableResultSet<ExternalData>> callback) { viewContext.getService().listDataSetRelationships(datasetId, role, resultSetConfig, callback); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetEditForm.java index 409fd76e0522e31eb52324bb9bdac0ffadabc7bb..08fd1c59f1c0830511f787db7a9b2f711d9c0239 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetEditForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetEditForm.java @@ -48,7 +48,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget. import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetUpdates; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet; @@ -58,6 +58,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetTypePropertyType import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.AbstractGenericEntityRegistrationForm; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment.PropertiesEditor; @@ -299,7 +300,7 @@ public final class GenericDataSetEditForm extends { // not best performance but the same solution that is done for experiments // only codes are needed but we extract 'full' object - DefaultResultSetConfig<String, ExternalData> config = + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> config = DefaultResultSetConfig.createFetchAll(); viewContext.getCommonService().listDataSetRelationships(techIdOrNull, DataSetRelationshipRole.CHILD, config, new ListParentsCallback(viewContext)); @@ -329,6 +330,16 @@ public final class GenericDataSetEditForm extends } + private List<ExternalData> extractDataSets(List<TableModelRowWithObject<ExternalData>> rows) + { + List<ExternalData> dataSets = new ArrayList<ExternalData>(); + for (TableModelRowWithObject<ExternalData> row : rows) + { + dataSets.add(row.getObjectOrNull()); + } + return dataSets; + } + private final class DataSetInfoCallback extends AbstractAsyncCallback<ExternalData> { @@ -346,7 +357,7 @@ public final class GenericDataSetEditForm extends } private class ListParentsCallback extends - AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>> + AbstractAsyncCallback<TypedTableResultSet<ExternalData>> { public ListParentsCallback(IViewContext<?> viewContext) @@ -355,9 +366,12 @@ public final class GenericDataSetEditForm extends } @Override - protected void process(ResultSetWithEntityTypes<ExternalData> result) + protected void process(TypedTableResultSet<ExternalData> result) { - parentsArea.setDataSets(result.getResultSet().getList().extractOriginalObjects()); + List<TableModelRowWithObject<ExternalData>> rows = + result.getResultSet().getList().extractOriginalObjects(); + List<ExternalData> dataSets = extractDataSets(rows); + parentsArea.setDataSets(dataSets); if (parentsArea.isVisible()) { parentsArea.setEnabled(true); @@ -489,7 +503,7 @@ public final class GenericDataSetEditForm extends { // not best performance but the same solution that is done for experiments // only codes are needed but we extract 'full' object - DefaultResultSetConfig<String, ExternalData> config = + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> config = DefaultResultSetConfig.createFetchAll(); viewContext.getCommonService().listDataSetRelationships(techIdOrNull, DataSetRelationshipRole.CONTAINER, config, @@ -497,7 +511,7 @@ public final class GenericDataSetEditForm extends } private class ListContainedDataSetsCallback extends - AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>> + AbstractAsyncCallback<TypedTableResultSet<ExternalData>> { public ListContainedDataSetsCallback(IViewContext<?> viewContext) @@ -506,9 +520,11 @@ public final class GenericDataSetEditForm extends } @Override - protected void process(ResultSetWithEntityTypes<ExternalData> result) + protected void process(TypedTableResultSet<ExternalData> result) { - containedArea.setDataSets(result.getResultSet().getList().extractOriginalObjects()); + List<TableModelRowWithObject<ExternalData>> rows = + result.getResultSet().getList().extractOriginalObjects(); + containedArea.setDataSets(extractDataSets(rows)); if (containedArea.isVisible()) { containedArea.setEnabled(true); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java index 78d1130b129f20e3a048b255ebb084c29494bbb4..1706ece268e1ad93c7afdcedfeab533fae2da5c9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java @@ -62,6 +62,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKin import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; /** @@ -151,7 +153,12 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl { public void handleEvent(BaseEvent be) { - final List<ExternalData> dataSets = Arrays.asList(originalData); + TableModelRowWithObject<ExternalData> row = + new TableModelRowWithObject<ExternalData>(originalData, Arrays + .<ISerializableComparable> asList()); + @SuppressWarnings("unchecked") + final List<TableModelRowWithObject<ExternalData>> dataSets = + Arrays.<TableModelRowWithObject<ExternalData>> asList(row); IDelegatedActionWithResult<SelectedAndDisplayedItems> action = new IDelegatedActionWithResult<SelectedAndDisplayedItems>() { @@ -175,8 +182,11 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl final AsyncCallback<Void> callback = isTrashEnabled() ? createDeletionCallback() : createPermanentDeletionCallback(); + TableModelRowWithObject<ExternalData> row = + new TableModelRowWithObject<ExternalData>(getOriginalData(), + Arrays.<ISerializableComparable> asList()); new DataSetListDeletionConfirmationDialog(getViewContext() - .getCommonViewContext(), callback, getOriginalData()).show(); + .getCommonViewContext(), callback, row).show(); } })); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentDataSetBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentDataSetBrowser.java index 0edcbf373b6f7f4e42d941261d73e7e25615ed05..bb9cd4c792a3bdc2bb275d53da00d851f9fea4a5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentDataSetBrowser.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentDataSetBrowser.java @@ -24,10 +24,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.AbstractExternalDataGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * @author Franz-Josef Elmer @@ -76,8 +77,9 @@ public class ExperimentDataSetBrowser extends AbstractExternalDataGrid } @Override - protected void listDatasets(DefaultResultSetConfig<String, ExternalData> resultSetConfig, - final AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>> callback) + protected void listTableRows( + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig, + AbstractAsyncCallback<TypedTableResultSet<ExternalData>> callback) { viewContext.getService().listExperimentDataSets(experimentId, resultSetConfig, callback); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetBrowser.java index 060c51e16707b770cd1d292892106b4c4a1e0712..8ad35c7267e029574b46f67647587f3c07ff48cb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetBrowser.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetBrowser.java @@ -25,10 +25,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.Ab import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleViewer.DataSetConnectionTypeProvider; /** @@ -91,8 +92,9 @@ class SampleDataSetBrowser extends AbstractExternalDataGrid } @Override - protected void listDatasets(DefaultResultSetConfig<String, ExternalData> resultSetConfig, - final AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>> callback) + protected void listTableRows( + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig, + AbstractAsyncCallback<TypedTableResultSet<ExternalData>> callback) { boolean onlyDirectlyConnected = connectionTypeProvider.getShowOnlyDirectlyConnected(); viewContext.getService().listSampleDataSets(sampleId, resultSetConfig, diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DataSetSearchTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DataSetSearchTest.java index 0d92565b7a896d364cfdc8db8b927bbb6bb3ff9f..4bded090efd46e89bf0c07cbe1dd3d88313cf80a 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DataSetSearchTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DataSetSearchTest.java @@ -20,10 +20,10 @@ import com.google.gwt.junit.DoNotRunWith; import com.google.gwt.junit.Platform; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.TopMenu.ActionMenuKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.CommonExternalDataColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.DataSetSearchHitGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.columns.DataSetSearchRow; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.search.FillSearchCriteria; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.CheckTableCommand; import ch.systemsx.cisd.openbis.generic.shared.basic.Row; @@ -50,7 +50,7 @@ public class DataSetSearchTest extends AbstractGWTTestCase final CheckTableCommand checkResultTableCmd = createCheckSearchGridCmd(); checkResultTableCmd.expectedSize(10); DataSetSearchRow row = new DataSetSearchRow(); - row.withCell(CommonExternalDataColDefKind.LOCATION.id(), "a/1"); + row.withCell(ExternalDataGridColumnIDs.LOCATION, "a/1"); row.withPropertyCell("comment", "no comment"); checkResultTableCmd.expectedRow(row); checkResultTableCmd.expectedColumnsNumber(TOTAL_NUM_OF_COLUMNS); @@ -69,10 +69,9 @@ public class DataSetSearchTest extends AbstractGWTTestCase final CheckTableCommand checkResultTableCmd = createCheckSearchGridCmd(); checkResultTableCmd.expectedSize(2); - Row row1 = - createTiffRow().withCell(CommonExternalDataColDefKind.LOCATION.id(), "xxx/yyy/zzz"); + Row row1 = createTiffRow().withCell(ExternalDataGridColumnIDs.LOCATION, "xxx/yyy/zzz"); checkResultTableCmd.expectedRow(row1); - Row row2 = createTiffRow().withCell(CommonExternalDataColDefKind.LOCATION.id(), "a/1"); + Row row2 = createTiffRow().withCell(ExternalDataGridColumnIDs.LOCATION, "a/1"); checkResultTableCmd.expectedRow(row2); remoteConsole.prepare(checkResultTableCmd); @@ -82,8 +81,7 @@ public class DataSetSearchTest extends AbstractGWTTestCase private Row createTiffRow() { - return new DataSetSearchRow().withCell(CommonExternalDataColDefKind.FILE_FORMAT_TYPE.id(), - "TIFF"); + return new DataSetSearchRow().withCell(ExternalDataGridColumnIDs.FILE_FORMAT_TYPE, "TIFF"); } private static CheckTableCommand createCheckSearchGridCmd() diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchTest.java index 6db9328febe779e31e19f943cbf2e9161b93e718..21b09ff98844ed303d97c11a5ccd7b043d99494b 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchTest.java @@ -17,8 +17,8 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.CommonExternalDataColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.RelatedDataSetGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractDefaultTestCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase; @@ -186,7 +186,7 @@ public class SearchTest extends AbstractGWTTestCase private static Row createRelatedDatasetRowWithLocation(String location) { - return new Row().withCell(CommonExternalDataColDefKind.LOCATION.id(), location); + return new Row().withCell(ExternalDataGridColumnIDs.LOCATION, location); } private AbstractDefaultTestCommand showDatasetsRelatedToAllDisplayedEntities() diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ExportSamplesTestCommand.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ExportSamplesTestCommand.java index ac237b3ff92810a3f4fc229a83a7514bda646abb..5570327701af26820e67cdf2b7264cdf53ffef8e 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ExportSamplesTestCommand.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ExportSamplesTestCommand.java @@ -22,9 +22,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAs import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Client; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractEntityGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractDefaultTestCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.GWTTestUtil; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.ITestCommand; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; /** * System tests for the server side of sample export.<BR> @@ -51,8 +53,8 @@ public class ExportSamplesTestCommand extends AbstractDefaultTestCommand public void execute() { - SampleBrowserGrid sampleBrowserGrid = - (SampleBrowserGrid) GWTTestUtil.getWidgetWithID(SampleBrowserGrid.MAIN_BROWSER_ID); + AbstractEntityGrid<Sample> sampleBrowserGrid = + (AbstractEntityGrid<Sample>) GWTTestUtil.getWidgetWithID(SampleBrowserGrid.MAIN_BROWSER_ID); // we do not create view context earlier (e.g. in the class constructor), because we have to // wait until client is loaded and viewContext is available. IViewContext<ICommonClientServiceAsync> viewContext = getViewContext(); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java index 20a416851eb62159188ad83b4911b982664b3c9c..d5eac23240dedd81ee10373867d3b8c94be83463 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java @@ -526,13 +526,14 @@ public final class CommonClientServiceTest extends AbstractClientServiceTest } }); - DefaultResultSetConfig<String, ExternalData> resultSetConfig = + DefaultResultSetConfig<String, TableModelRowWithObject<ExternalData>> resultSetConfig = DefaultResultSetConfig.createFetchAll(); - ResultSetWithEntityTypes<ExternalData> resultSet = + TypedTableResultSet<ExternalData> resultSet = commonClientService.listExperimentDataSets(experimentId, resultSetConfig); - List<ExternalData> list = resultSet.getResultSet().getList().extractOriginalObjects(); + List<TableModelRowWithObject<ExternalData>> list = + resultSet.getResultSet().getList().extractOriginalObjects(); assertEquals(1, list.size()); - DataSet data = list.get(0).tryGetAsDataSet(); + DataSet data = list.get(0).getObjectOrNull().tryGetAsDataSet(); // assertEquals(code, data.getCode()); assertEquals(DATA_STORE_BASE_URL, data.getDataStore().getHostUrl()); assertEquals(DATA_STORE_BASE_URL + "/" + DATA_STORE_SERVER_WEB_APPLICATION_NAME, data diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleDetailsTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleDetailsTest.java index a1584d2dd11dd6dd72ad7905d059269d61c6f80b..afef2865b8b09bbdd1745dff21a19cead07c3bc7 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleDetailsTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleDetailsTest.java @@ -29,6 +29,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetCo import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GridRowModels; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleDisplayCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet; @@ -37,6 +38,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleViewerTest; /** @@ -86,8 +88,6 @@ public class SampleDetailsTest extends GenericSystemTestCase private static final String DIRECTLY_CONNECTED_DATA_SET_CODE = "20081105092159222-2"; - private static final String DEFAULT_DATA_SET_TYPE = "HCS_IMAGE"; - @Test public void testGetMasterPlateDetails() { @@ -186,14 +186,12 @@ public class SampleDetailsTest extends GenericSystemTestCase // directly connected boolean showOnlyDirectlyConnected = true; - final ResultSetWithEntityTypes<ExternalData> directlyConnectedResults = + final TypedTableResultSet<ExternalData> directlyConnectedResults = commonClientService.listSampleDataSets(TechId.create(sample), - DefaultResultSetConfig.<String, ExternalData> createFetchAll(), + DefaultResultSetConfig + .<String, TableModelRowWithObject<ExternalData>> createFetchAll(), showOnlyDirectlyConnected); - assertEquals(1, directlyConnectedResults.getAvailableEntityTypes().size()); - assertEquals(DEFAULT_DATA_SET_TYPE, directlyConnectedResults.getAvailableEntityTypes() - .iterator().next().getCode()); assertEquals(1, directlyConnectedResults.getResultSet().getTotalLength()); final DataSet directlyConnectedDataSet = getDataSet(directlyConnectedResults.getResultSet().getList(), @@ -206,14 +204,12 @@ public class SampleDetailsTest extends GenericSystemTestCase // indirectly connected showOnlyDirectlyConnected = false; - ResultSetWithEntityTypes<ExternalData> indirectlyConnectedResults = + TypedTableResultSet<ExternalData> indirectlyConnectedResults = commonClientService.listSampleDataSets(TechId.create(sample), - DefaultResultSetConfig.<String, ExternalData> createFetchAll(), + DefaultResultSetConfig + .<String, TableModelRowWithObject<ExternalData>> createFetchAll(), showOnlyDirectlyConnected); - assertEquals(1, indirectlyConnectedResults.getAvailableEntityTypes().size()); - assertEquals(DEFAULT_DATA_SET_TYPE, indirectlyConnectedResults.getAvailableEntityTypes() - .iterator().next().getCode()); assertEquals(6, indirectlyConnectedResults.getResultSet().getTotalLength()); // the directly connected data set should still be retrieved @@ -371,11 +367,12 @@ public class SampleDetailsTest extends GenericSystemTestCase return null; // satisfy compiler } - private static ExternalData getDataSet(GridRowModels<ExternalData> list, String identifier) + private static ExternalData getDataSet( + GridRowModels<TableModelRowWithObject<ExternalData>> list, String identifier) { - for (GridRowModel<ExternalData> gridRowModel : list) + for (GridRowModel<TableModelRowWithObject<ExternalData>> gridRowModel : list) { - ExternalData externalData = gridRowModel.getOriginalObject(); + ExternalData externalData = gridRowModel.getOriginalObject().getObjectOrNull(); if (DEBUG) { System.out.println(externalData.getIdentifier()); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ExperimentViewer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ExperimentViewer.java index 40d2da4153db09587c19f9e72d9b42b9fda2c723..7e9d2af995f38753845450df0a8ea6a12a45da1f 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ExperimentViewer.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ExperimentViewer.java @@ -42,7 +42,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ID import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.lang.StringEscapeUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedDatasetCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; @@ -50,6 +50,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.GenericViewContext; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment.GenericExperimentViewer; @@ -109,11 +110,11 @@ public class ExperimentViewer extends GenericExperimentViewer final ContentPanel contentPanel = new ContentPanel(new RowLayout()); contentPanel.setHeading(viewContext.getMessage(Dict.DATA_SET_PROCESSING_SECTION_TITLE)); viewContext.getCommonService().listExperimentDataSets(new TechId(experimentId), - DefaultResultSetConfig.<String, ExternalData> createFetchAll(), - new AbstractAsyncCallback<ResultSetWithEntityTypes<ExternalData>>(viewContext) + DefaultResultSetConfig.<String, TableModelRowWithObject<ExternalData>> createFetchAll(), + new AbstractAsyncCallback<TypedTableResultSet<ExternalData>>(viewContext) { @Override - protected void process(ResultSetWithEntityTypes<ExternalData> result) + protected void process(TypedTableResultSet<ExternalData> result) { AsyncCallback<List<DatastoreServiceDescription>> callBack = createCallback(contentPanel, result); @@ -126,12 +127,12 @@ public class ExperimentViewer extends GenericExperimentViewer } private AsyncCallback<List<DatastoreServiceDescription>> createCallback( - final ContentPanel contentPanel, ResultSetWithEntityTypes<ExternalData> result) + final ContentPanel contentPanel, TypedTableResultSet<ExternalData> result) { final List<String> dataSetCodes = new ArrayList<String>(); - for (GridRowModel<ExternalData> gridRowModel : result.getResultSet().getList()) + for (GridRowModel<TableModelRowWithObject<ExternalData>> gridRowModel : result.getResultSet().getList()) { - dataSetCodes.add(gridRowModel.getOriginalObject().getCode()); + dataSetCodes.add(gridRowModel.getOriginalObject().getObjectOrNull().getCode()); } final DisplayedOrSelectedDatasetCriteria criteria = DisplayedOrSelectedDatasetCriteria.createSelectedItems(dataSetCodes);