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 8ee0a1a03d83f5670b9f762483b1103012fec4f7..38579bf7d210ba6d0815ffbc6a1022ddfca05527 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 @@ -39,6 +39,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteri import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableModelReference; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; +import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; @@ -279,16 +280,16 @@ public interface ICommonClientService extends IClientService /** * Lists the entities matching the search. */ - public ResultSet<MatchingEntity> listMatchingEntities( + public TypedTableResultSet<MatchingEntity> listMatchingEntities( final SearchableEntity searchableEntityOrNull, final String queryText, final boolean useWildcardSearchMode, - final IResultSetConfig<String, MatchingEntity> resultSetConfig) + final IResultSetConfig<String, TableModelRowWithObject<MatchingEntity>> resultSetConfig) throws UserFailureException; /** * Like {@link #prepareExportSamples(TableExportCriteria)}, but for matching entites. */ - public String prepareExportMatchingEntities(final TableExportCriteria<MatchingEntity> criteria) + public String prepareExportMatchingEntities(final TableExportCriteria<TableModelRowWithObject<MatchingEntity>> criteria) throws UserFailureException; /** @@ -561,7 +562,7 @@ public interface ICommonClientService extends IClientService * Returns {@link ExternalData} fulfilling given {@link RelatedDataSetCriteria}. */ public ResultSetWithEntityTypes<ExternalData> searchForDataSets( - RelatedDataSetCriteria criteria, + RelatedDataSetCriteria<? extends IEntityInformationHolder> criteria, final IResultSetConfig<String, 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 86b0b7aa8c2750783eac81a0b5b5ade223ed8f5d..c2e752a83a9776337ab6f8decde47c8b689c7bbc 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 @@ -41,6 +41,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteri import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableModelReference; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; +import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; @@ -265,11 +266,11 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync */ public void listMatchingEntities(final SearchableEntity searchableEntity, final String queryText, final boolean useWildcardSearchMode, - final IResultSetConfig<String, MatchingEntity> resultSetConfig, - final AsyncCallback<ResultSet<MatchingEntity>> asyncCallback); + final IResultSetConfig<String, TableModelRowWithObject<MatchingEntity>> resultSetConfig, + final AsyncCallback<TypedTableResultSet<MatchingEntity>> asyncCallback); /** @see ICommonClientService#prepareExportMatchingEntities(TableExportCriteria) */ - public void prepareExportMatchingEntities(TableExportCriteria<MatchingEntity> exportCriteria, + public void prepareExportMatchingEntities(TableExportCriteria<TableModelRowWithObject<MatchingEntity>> exportCriteria, AsyncCallback<String> callback); /** @see ICommonClientService#listProjects(DefaultResultSetConfig) */ @@ -468,7 +469,7 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync /** * @see ICommonClientService#searchForDataSets(RelatedDataSetCriteria, IResultSetConfig) */ - public void searchForDataSets(RelatedDataSetCriteria criteria, + public void searchForDataSets(RelatedDataSetCriteria<? extends IEntityInformationHolder> criteria, final IResultSetConfig<String, ExternalData> resultSetConfig, final AsyncCallback<ResultSetWithEntityTypes<ExternalData>> callback); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java index 0965bbea4d0995129a995bcb1c618e0bc5bcf6e3..9fbfde34bf308a2152a603e58d81a9de1c98a5a8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java @@ -16,9 +16,14 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs.ENTITY_TYPE; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs.IDENTIFIER; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs.MATCHING_FIELD; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs.REGISTRATOR; import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.createOrDelete; import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.edit; +import java.util.Arrays; import java.util.List; import java.util.Set; @@ -27,40 +32,39 @@ import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.button.Button; +import com.google.gwt.user.client.rpc.AsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; 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.model.MatchingEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.MatchingEntityModel.MatchingEntityColumnKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PersonRenderer; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; 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.ICellListener; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; -import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; 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.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.MatchingEntity; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * A {@link LayoutContainer} extension which displays the matching entities. * * @author Christian Ribeaud */ -final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, MatchingEntityModel> +public final class MatchingEntitiesPanel extends TypedTableGrid<MatchingEntity> { static final String PREFIX = GenericConstants.ID_PREFIX + "matching-entities-panel_"; @@ -93,9 +97,9 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma updateDefaultRefreshButton(); registerLinkClickListenerFor(MatchingEntityColumnKind.IDENTIFIER.id(), - new ICellListener<MatchingEntity>() + new ICellListener<TableModelRowWithObject<MatchingEntity>>() { - public void handle(MatchingEntity rowItem, boolean keyPressed) + public void handle(TableModelRowWithObject<MatchingEntity> rowItem, boolean keyPressed) { showEntityViewer(rowItem, false, keyPressed); } @@ -149,9 +153,10 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma } @Override - protected void showEntityViewer(MatchingEntity matchingEntity, boolean editMode, + protected void showEntityViewer(TableModelRowWithObject<MatchingEntity> object, boolean editMode, boolean inBackground) { + MatchingEntity matchingEntity = object.getObjectOrNull(); final EntityKind entityKind = matchingEntity.getEntityKind(); BasicEntityType entityType = matchingEntity.getEntityType(); final IClientPluginFactory clientPluginFactory = @@ -167,46 +172,51 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma } @Override - protected ColumnDefsAndConfigs<MatchingEntity> createColumnsDefinition() + protected ColumnDefsAndConfigs<TableModelRowWithObject<MatchingEntity>> createColumnsDefinition() { - ColumnDefsAndConfigs<MatchingEntity> schema = - BaseEntityModel.createColumnConfigs( - MatchingEntityModel.getStaticColumnsDefinition(), viewContext); - schema.setGridCellRendererFor(MatchingEntityColumnKind.IDENTIFIER.id(), - createInternalLinkCellRenderer()); + ColumnDefsAndConfigs<TableModelRowWithObject<MatchingEntity>> schema = + super.createColumnsDefinition(); + schema.setGridCellRendererFor(REGISTRATOR, PersonRenderer.REGISTRATOR_RENDERER); + schema.setGridCellRendererFor(IDENTIFIER, createInternalLinkCellRenderer()); return schema; } @Override - protected MatchingEntityModel createModel(GridRowModel<MatchingEntity> entity) + protected String translateColumnIdToDictionaryKey(String columnID) { - return new MatchingEntityModel(entity); + return columnID.toLowerCase(); } @Override - protected void listEntities(DefaultResultSetConfig<String, MatchingEntity> resultSetConfig, - AbstractAsyncCallback<ResultSet<MatchingEntity>> callback) + protected void listTableRows( + DefaultResultSetConfig<String, TableModelRowWithObject<MatchingEntity>> resultSetConfig, + AsyncCallback<TypedTableResultSet<MatchingEntity>> callback) { - callback.addOnSuccessAction(new ShowResultSetCutInfo<ResultSet<MatchingEntity>>(viewContext)); + ShowResultSetCutInfo<TypedTableResultSet<MatchingEntity>> info = + new ShowResultSetCutInfo<TypedTableResultSet<MatchingEntity>>(viewContext); + if (callback instanceof AbstractAsyncCallback) + { + ((AbstractAsyncCallback<TypedTableResultSet<MatchingEntity>>) callback) + .addOnSuccessAction(info); + } viewContext.getService().listMatchingEntities(searchableEntity, queryText, useWildcardSearchMode, resultSetConfig, callback); } @Override - protected void prepareExportEntities(TableExportCriteria<MatchingEntity> exportCriteria, + protected void prepareExportEntities(TableExportCriteria<TableModelRowWithObject<MatchingEntity>> exportCriteria, AbstractAsyncCallback<String> callback) { viewContext.getService().prepareExportMatchingEntities(exportCriteria, callback); } @Override - protected List<IColumnDefinition<MatchingEntity>> getInitialFilters() + protected List<String> getColumnIdsOfFilters() { - return asColumnFilters(new MatchingEntityColumnKind[] - { MatchingEntityColumnKind.ENTITY_TYPE, MatchingEntityColumnKind.IDENTIFIER, - MatchingEntityColumnKind.MATCHING_FIELD }); + return Arrays.asList(ENTITY_TYPE, IDENTIFIER, MATCHING_FIELD); } + @Override public DatabaseModificationKind[] getRelevantModifications() { return new DatabaseModificationKind[] @@ -218,6 +228,7 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma createOrDelete(ObjectKind.VOCABULARY_TERM), edit(ObjectKind.VOCABULARY_TERM) }; } + @Override public void update(Set<DatabaseModificationKind> observedModifications) { refreshGridSilently(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java index 5a6c0070e52c818bb2a807e8423fd54fa6090ad5..ba483bc4e812453139d0a3d49ed2de73a24037be 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java @@ -36,19 +36,20 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget. import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WidgetUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RelatedDataSetCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; +import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * Dialog used to show a tab with Data Sets related to entities like samples and experiments. * * @author Piotr Buczek */ -public final class ShowRelatedDatasetsDialog extends - AbstractDataConfirmationDialog<List<? extends IEntityInformationHolderWithPermId>> +public final class ShowRelatedDatasetsDialog<E extends IEntityInformationHolder> extends + AbstractDataConfirmationDialog<List<TableModelRowWithObject<E>>> { - public static void showRelatedDatasetsTab( + public static <E extends IEntityInformationHolder> void showRelatedDatasetsTab( final IViewContext<ICommonClientServiceAsync> viewContext, - final RelatedDataSetCriteria criteria) + final RelatedDataSetCriteria<E> criteria) { final AbstractTabItemFactory tabFactory = new AbstractTabItemFactory() { @@ -94,15 +95,15 @@ public final class ShowRelatedDatasetsDialog extends private final IViewContext<ICommonClientServiceAsync> viewContext; - private final TableExportCriteria<? extends IEntityInformationHolderWithPermId> displayedEntities; + private final TableExportCriteria<TableModelRowWithObject<E>> displayedEntities; private final int displayedEntitiesCount; private Radio allOrSelectedRadio; public ShowRelatedDatasetsDialog(IViewContext<ICommonClientServiceAsync> viewContext, - List<? extends IEntityInformationHolderWithPermId> selectedEntities, - TableExportCriteria<? extends IEntityInformationHolderWithPermId> displayedEntities, + List<TableModelRowWithObject<E>> selectedEntities, + TableExportCriteria<TableModelRowWithObject<E>> displayedEntities, int displayedEntitiesCount) { super(viewContext, selectedEntities, viewContext @@ -151,11 +152,11 @@ public final class ShowRelatedDatasetsDialog extends protected void executeConfirmedAction() { final boolean selected = getSelected(); - RelatedDataSetCriteria criteria = createCriteria(selected); + RelatedDataSetCriteria<E> criteria = createCriteria(selected); showRelatedDatasetsTab(viewContext, criteria); } - private RelatedDataSetCriteria createCriteria(boolean selected) + private RelatedDataSetCriteria<E> createCriteria(boolean selected) { if (getSelected()) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java index 8b88e8edf1501a8f92f99fc70f0274356e6b7d66..fa4eaa6ccf14e05801d1ea4b93b89f7ff74e1676 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java @@ -27,8 +27,8 @@ import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.DOMUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.lang.StringEscapeUtils; +import ch.systemsx.cisd.openbis.generic.shared.basic.IRegistratorHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.SimplePersonRenderer; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractRegistrationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; @@ -50,7 +50,7 @@ public final class PersonRenderer /** * Registrator renderer. Works only with {@link TableModelRowWithObject} wrapping a - * subclass of {@link AbstractRegistrationHolder}. + * DTO implementing {@link IRegistratorHolder}. */ public static final GridCellRenderer<BaseEntityModel<?>> REGISTRATOR_RENDERER = new GridCellRenderer<BaseEntityModel<?>>() @@ -61,7 +61,7 @@ public final class PersonRenderer ListStore<BaseEntityModel<?>> store, Grid<BaseEntityModel<?>> grid) { Person registrator = - ((TableModelRowWithObject<AbstractRegistrationHolder>) model + ((TableModelRowWithObject<IRegistratorHolder>) model .getBaseObject()).getObjectOrNull().getRegistrator(); return PersonRenderer.createPersonAnchor(registrator); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java index 3b7fe3b87d82d86ef2c8d5084f0d6115975bbb0c..84b823ca075373e0d952ca13d321ca2bd90f53d8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java @@ -29,6 +29,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback; 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.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ShowRelatedDatasetsDialog; 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; @@ -43,11 +44,14 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.Co import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListenerAndLinkGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabHelper; 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.ResultSet; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetFetchConfig.ResultSetFetchMode; 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.IColumnDefinition; +import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.ISerializable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; @@ -76,6 +80,36 @@ public abstract class TypedTableGrid<T extends ISerializable> */ private static final int MAX_SHOWN_COLUMNS = 200; + /** + * If user selected some entities in given browser first a dialog is shown where he can select + * between showing data sets related to selected/displayed entities. Then a tab is displayed + * where these related data sets are listed.<br> + * <br> + * If no entities were selected in given browser the tab is displayed where data sets related to + * all entities displayed in the grid are listed. + */ + protected static final <E extends IEntityInformationHolder> void showRelatedDataSets( + final IViewContext<ICommonClientServiceAsync> viewContext, + final TypedTableGrid<E> browser) + { + final List<TableModelRowWithObject<E>> selectedEntities = + browser.getSelectedBaseObjects(); + final TableExportCriteria<TableModelRowWithObject<E>> displayedEntities = + browser.createTableExportCriteria(); + if (selectedEntities.isEmpty()) + { + // no entity selected - show datasets related to all displayed + RelatedDataSetCriteria<E> relatedCriteria = + RelatedDataSetCriteria.<E>createDisplayedEntities(displayedEntities); + ShowRelatedDatasetsDialog.showRelatedDatasetsTab(viewContext, relatedCriteria); + } else + { + // > 0 entity selected - show dialog with all/selected radio + new ShowRelatedDatasetsDialog<E>(viewContext, selectedEntities, displayedEntities, + browser.getTotalCount()).show(); + } + } + private final class CellListenerAndLinkGenerator implements ICellListenerAndLinkGenerator<T> { private final EntityKind entityKind; @@ -191,6 +225,10 @@ public abstract class TypedTableGrid<T extends ISerializable> private GridCellRenderer<BaseEntityModel<?>> tryGetSpecificRenderer(DataTypeCode dataType) { + if (dataType == null) + { + return null; + } // NOTE: keep in sync with AbstractPropertyColRenderer.getPropertyColRenderer switch (dataType) { 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 1a4042cc49430ad4e871e7907e422714309d40a7..b42270620e6b095cd26eb3ce6ab39a487a2deee3 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 @@ -30,6 +30,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetCo 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.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; @@ -48,16 +49,16 @@ public class RelatedDataSetGrid extends AbstractExternalDataGrid public static IDisposableComponent create( final IViewContext<ICommonClientServiceAsync> viewContext, - final RelatedDataSetCriteria relatedCriteria) + final RelatedDataSetCriteria<? extends IEntityInformationHolder> relatedCriteria) { RelatedDataSetGrid grid = new RelatedDataSetGrid(viewContext, relatedCriteria); return grid.asDisposableWithoutToolbar(); } - private RelatedDataSetCriteria relatedCriteria; + private RelatedDataSetCriteria<? extends IEntityInformationHolder> relatedCriteria; private RelatedDataSetGrid(final IViewContext<ICommonClientServiceAsync> viewContext, - final RelatedDataSetCriteria relatedCriteria) + final RelatedDataSetCriteria<? extends IEntityInformationHolder> relatedCriteria) { super(viewContext, BROWSER_ID, GRID_ID, DisplayTypeIDGenerator.RELATED_DATA_SET_GRID); this.relatedCriteria = relatedCriteria; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java index 8600473c47182cd9e205b7d949b7cb97851942cd..1544b83257f23cd4d1d723c42cc72a8b2997f543 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java @@ -85,6 +85,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.M import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.RealNumberRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ComponentEventLogger; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ComponentEventLogger.EventPair; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind; 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.framework.IColumnDefinitionUI; @@ -104,6 +105,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetFetchConf import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; 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.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; import ch.systemsx.cisd.openbis.generic.shared.basic.URLMethodWithParameters; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; @@ -113,6 +115,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKin import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SortInfo; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SortInfo.SortDir; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * @author Tomasz Pylak @@ -1678,35 +1681,4 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod protected abstract Dialog createDialog(List<T> data, IBrowserGridActionInvoker invoker); } - /** - * If user selected some entities in given browser first a dialog is shown where he can select - * between showing data sets related to selected/displayed entities. Then a tab is displayed - * where these related data sets are listed.<br> - * <br> - * If no entities were selected in given browser the tab is displayed where data sets related to - * all entities displayed in the grid are listed. - */ - // NOTE: This method cannot be externalized from AbstractBrowserGrid because it uses some - // AbstractBrowserGrid's protected methods - protected static final <E extends IEntityInformationHolderWithPermId> void showRelatedDataSets( - final IViewContext<ICommonClientServiceAsync> viewContext, - final AbstractBrowserGrid<E, ? extends BaseEntityModel<E>> browser) - { - final List<? extends IEntityInformationHolderWithPermId> selectedEntities = - browser.getSelectedBaseObjects(); - final TableExportCriteria<? extends IEntityInformationHolderWithPermId> displayedEntities = - browser.createTableExportCriteria(); - if (selectedEntities.isEmpty()) - { - // no entity selected - show datasets related to all displayed - RelatedDataSetCriteria relatedCriteria = - RelatedDataSetCriteria.createDisplayedEntities(displayedEntities); - ShowRelatedDatasetsDialog.showRelatedDatasetsTab(viewContext, relatedCriteria); - } else - { - // > 0 entity selected - show dialog with all/selected radio - new ShowRelatedDatasetsDialog(viewContext, selectedEntities, displayedEntities, - browser.getTotalCount()).show(); - } - } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java index cd8a5ba49a5a7edbf043a23147afab8b9a4366bd..593244e3cbb8e183f6237a5262be24e20c3932d9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java @@ -119,7 +119,7 @@ public class SampleSearchHitGrid extends SampleBrowserGrid2 implements IDetailed // TableModelRowWithObject doesn't implement IEntityInformationHolder. // Changing the code is relatively easy but the method showRelatedDataSets() // is also used by MatchingEntitiesPanel. -// showRelatedDataSets(viewContext, SampleSearchHitGrid.this); + showRelatedDataSets(viewContext, SampleSearchHitGrid.this); } }); addButton(showRelatedDatasetsButton); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/MatchingEntitiesPanelColumnIDs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/MatchingEntitiesPanelColumnIDs.java new file mode 100644 index 0000000000000000000000000000000000000000..e3354f0e4a213c97a7cfb3c78107a2f67143dbd5 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/MatchingEntitiesPanelColumnIDs.java @@ -0,0 +1,34 @@ +/* + * Copyright 2010 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.dto; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.MatchingEntitiesPanel; + +/** + * IDs of static columns of {@link MatchingEntitiesPanel}. + * + * @author Franz-Josef Elmer + */ +public class MatchingEntitiesPanelColumnIDs +{ + public static final String ENTITY_KIND = "ENTITY_KIND"; + public static final String ENTITY_TYPE = "ENTITY_TYPE"; + public static final String IDENTIFIER = "IDENTIFIER"; + public static final String REGISTRATOR = "REGISTRATOR"; + public static final String MATCHING_FIELD = "MATCHING_FIELD"; + public static final String MATCHING_TEXT = "MATCHING_TEXT"; +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/RelatedDataSetCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/RelatedDataSetCriteria.java index 38fb6b12a7854fcc994e8612f5dc36010736afd4..8cf7bd04be49c622d9eef6ce85b13bfaaf0e970a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/RelatedDataSetCriteria.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/RelatedDataSetCriteria.java @@ -22,6 +22,7 @@ import com.google.gwt.user.client.rpc.IsSerializable; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * Criteria for listing <i>data sets</i> related to {@link MatchingEntity}s like samples and @@ -29,40 +30,40 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; * * @author Piotr Buczek */ -public class RelatedDataSetCriteria implements IsSerializable +public class RelatedDataSetCriteria<E extends IEntityInformationHolder> implements IsSerializable { - private TableExportCriteria<? extends IEntityInformationHolder> displayedEntitiesOrNull; + private TableExportCriteria<TableModelRowWithObject<E>> displayedEntitiesOrNull; - private List<? extends IEntityInformationHolder> selectedEntitiesOrNull; + private List<TableModelRowWithObject<E>> selectedEntitiesOrNull; - public static RelatedDataSetCriteria createDisplayedEntities( - TableExportCriteria<? extends IEntityInformationHolder> displayedEntities) + public static <E extends IEntityInformationHolder> RelatedDataSetCriteria<E> createDisplayedEntities( + TableExportCriteria<TableModelRowWithObject<E>> displayedEntities) { - return new RelatedDataSetCriteria(displayedEntities, null); + return new RelatedDataSetCriteria<E>(displayedEntities, null); } - public static RelatedDataSetCriteria createSelectedEntities( - List<? extends IEntityInformationHolder> selectedEntities) + public static <E extends IEntityInformationHolder> RelatedDataSetCriteria<E> createSelectedEntities( + List<TableModelRowWithObject<E>> selectedEntities) { - return new RelatedDataSetCriteria(null, selectedEntities); + return new RelatedDataSetCriteria<E>(null, selectedEntities); } private RelatedDataSetCriteria( - TableExportCriteria<? extends IEntityInformationHolder> displayedEntitiesOrNull, - List<? extends IEntityInformationHolder> selectedEntitiesOrNull) + TableExportCriteria<TableModelRowWithObject<E>> displayedEntitiesOrNull, + List<TableModelRowWithObject<E>> selectedEntitiesOrNull) { assert (displayedEntitiesOrNull == null) != (selectedEntitiesOrNull == null) : "Exactly one arg must be null and one non-null"; this.displayedEntitiesOrNull = displayedEntitiesOrNull; this.selectedEntitiesOrNull = selectedEntitiesOrNull; } - public TableExportCriteria<? extends IEntityInformationHolder> tryGetDisplayedEntities() + public TableExportCriteria<TableModelRowWithObject<E>> tryGetDisplayedEntities() { return displayedEntitiesOrNull; } - public List<? extends IEntityInformationHolder> tryGetSelectedEntities() + public List<TableModelRowWithObject<E>> tryGetSelectedEntities() { return selectedEntitiesOrNull; } @@ -73,27 +74,27 @@ public class RelatedDataSetCriteria implements IsSerializable } @SuppressWarnings("unused") - private TableExportCriteria<? extends IEntityInformationHolder> getDisplayedEntitiesOrNull() + private TableExportCriteria<TableModelRowWithObject<E>> getDisplayedEntitiesOrNull() { return displayedEntitiesOrNull; } @SuppressWarnings("unused") private void setDisplayedEntitiesOrNull( - TableExportCriteria<? extends IEntityInformationHolder> displayedEntitiesOrNull) + TableExportCriteria<TableModelRowWithObject<E>> displayedEntitiesOrNull) { this.displayedEntitiesOrNull = displayedEntitiesOrNull; } @SuppressWarnings("unused") - private List<? extends IEntityInformationHolder> getSelectedEntitiesOrNull() + private List<TableModelRowWithObject<E>> getSelectedEntitiesOrNull() { return selectedEntitiesOrNull; } @SuppressWarnings("unused") private void setSelectedEntitiesOrNull( - List<? extends IEntityInformationHolder> selectedEntitiesOrNull) + List<TableModelRowWithObject<E>> selectedEntitiesOrNull) { this.selectedEntitiesOrNull = selectedEntitiesOrNull; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleGridColumnIDs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleGridColumnIDs.java index f76ce82d9e0ba9e50f2862b4f406ac6684d2df8c..7519883774a28820e36420d8c7845f810e38f5ab 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleGridColumnIDs.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleGridColumnIDs.java @@ -16,9 +16,11 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.dto; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid2; + /** - * + * IDs of static columns of {@link SampleBrowserGrid2}. * * @author Franz-Josef Elmer */ 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 b53383b07f639fb4e765a9527253e66165b560a9..b7bd39ef9b6458fd5296ef7fa6d674e285268d56 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 @@ -69,6 +69,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.CacheManager import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.DataProviderAdapter; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IOriginalDataProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSet; +import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.MatchingEntitiesProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.SampleProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.SpacesProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.TableDataProviderFactory; @@ -430,7 +431,7 @@ public final class CommonClientService extends AbstractClientService implements } public final String prepareExportMatchingEntities( - final TableExportCriteria<MatchingEntity> criteria) + final TableExportCriteria<TableModelRowWithObject<MatchingEntity>> criteria) { return prepareExportEntities(criteria); } @@ -540,7 +541,7 @@ public final class CommonClientService extends AbstractClientService implements } public ResultSetWithEntityTypes<ExternalData> searchForDataSets( - RelatedDataSetCriteria criteria, + RelatedDataSetCriteria<? extends IEntityInformationHolder> criteria, final IResultSetConfig<String, ExternalData> resultSetConfig) { final String sessionToken = getSessionToken(); @@ -549,15 +550,21 @@ public final class CommonClientService extends AbstractClientService implements commonServer, sessionToken, entities)); } - private DataSetRelatedEntities extractRelatedEntities(RelatedDataSetCriteria criteria) + private <E extends IEntityInformationHolder> DataSetRelatedEntities extractRelatedEntities( + RelatedDataSetCriteria<E> criteria) { - List<? extends IEntityInformationHolder> entities = criteria.tryGetSelectedEntities(); - if (entities == null) + List<TableModelRowWithObject<E>> rows = criteria.tryGetSelectedEntities(); + if (rows == null) { - TableExportCriteria<? extends IEntityInformationHolder> displayedEntitiesCriteria = + TableExportCriteria<TableModelRowWithObject<E>> displayedEntitiesCriteria = criteria.tryGetDisplayedEntities(); assert displayedEntitiesCriteria != null : "displayedEntitiesCriteria is null"; - entities = fetchCachedEntities(displayedEntitiesCriteria).extractOriginalObjects(); + rows = fetchCachedEntities(displayedEntitiesCriteria).extractOriginalObjects(); + } + List<E> entities = new ArrayList<E>(); + for (TableModelRowWithObject<E> row : rows) + { + entities.add(row.getObjectOrNull()); } return new DataSetRelatedEntities(entities); } @@ -582,16 +589,21 @@ public final class CommonClientService extends AbstractClientService implements }); } - public final ResultSet<MatchingEntity> listMatchingEntities( + public final TypedTableResultSet<MatchingEntity> listMatchingEntities( final SearchableEntity searchableEntityOrNull, final String queryText, final boolean useWildcardSearchMode, - final IResultSetConfig<String, MatchingEntity> resultSetConfig) + final IResultSetConfig<String, TableModelRowWithObject<MatchingEntity>> resultSetConfig) { - final String sessionToken = getSessionToken(); - final ch.systemsx.cisd.openbis.generic.shared.dto.SearchableEntity[] matchingEntities = + ch.systemsx.cisd.openbis.generic.shared.dto.SearchableEntity[] matchingEntities = SearchableEntityTranslator.translate(searchableEntityOrNull); - return listEntities(resultSetConfig, new ListMatchingEntitiesOriginalDataProvider( - commonServer, sessionToken, matchingEntities, queryText, useWildcardSearchMode)); + MatchingEntitiesProvider provider = + new MatchingEntitiesProvider(commonServer, getSessionToken(), matchingEntities, + queryText, useWildcardSearchMode); + DataProviderAdapter<MatchingEntity> dataProvider = + new DataProviderAdapter<MatchingEntity>(provider); + ResultSet<TableModelRowWithObject<MatchingEntity>> resultSet = + listEntities(resultSetConfig, dataProvider); + return new TypedTableResultSet<MatchingEntity>(resultSet); } public ResultSet<EntityTypePropertyType<?>> listPropertyTypeAssignments( diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..55432068f1c8887cdfcc63b6a7416911934a38a4 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java @@ -0,0 +1,80 @@ +/* + * Copyright 2010 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.server.resultset; + +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs.ENTITY_KIND; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs.ENTITY_TYPE; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs.IDENTIFIER; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs.MATCHING_FIELD; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs.MATCHING_TEXT; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs.REGISTRATOR; + +import java.util.List; + +import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; +import ch.systemsx.cisd.openbis.generic.shared.dto.SearchableEntity; +import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; + +/** + * + * + * @author Franz-Josef Elmer + */ +public class MatchingEntitiesProvider extends AbstractCommonTableModelProvider<MatchingEntity> +{ + private final SearchableEntity[] matchingEntities; + private final String queryText; + private final boolean useWildcardSearchMode; + + public MatchingEntitiesProvider(ICommonServer commonServer, String sessionToken, + SearchableEntity[] matchingEntities, String queryText, boolean useWildcardSearchMode) + { + super(commonServer, sessionToken); + this.matchingEntities = matchingEntities; + this.queryText = queryText; + this.useWildcardSearchMode = useWildcardSearchMode; + } + + @Override + protected TypedTableModel<MatchingEntity> createTableModel() + { + List<MatchingEntity> entities = + commonServer.listMatchingEntities(sessionToken, matchingEntities, queryText, + useWildcardSearchMode); + TypedTableModelBuilder<MatchingEntity> builder = new TypedTableModelBuilder<MatchingEntity>(); + builder.addColumn(ENTITY_KIND); + builder.addColumn(ENTITY_TYPE); + builder.addColumn(IDENTIFIER).withDefaultWidth(140); + builder.addColumn(REGISTRATOR); + builder.addColumn(MATCHING_FIELD).withDefaultWidth(140); + builder.addColumn(MATCHING_TEXT).withDefaultWidth(200); + for (MatchingEntity matchingEntity : entities) + { + builder.addRow(matchingEntity); + builder.column(ENTITY_KIND).addString(matchingEntity.getEntityKind().getDescription()); + builder.column(ENTITY_TYPE).addString(matchingEntity.getEntityType().getCode()); + builder.column(IDENTIFIER).addString(matchingEntity.getIdentifier()); + builder.column(REGISTRATOR).addPerson(matchingEntity.getRegistrator()); + builder.column(MATCHING_FIELD).addString(matchingEntity.getFieldDescription()); + builder.column(MATCHING_TEXT).addString(matchingEntity.getTextFragment()); + } + return builder.getModel(); + } + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolder.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolder.java index fa040a1703f99fa9f262fd3d77963b9bce886d4a..818184320380c9d95f28a79d01165ee6fc5af216 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolder.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolder.java @@ -25,7 +25,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; * * @author Piotr Buczek */ -public interface IEntityInformationHolder extends IIdAndCodeHolder +public interface IEntityInformationHolder extends ISerializable, IIdAndCodeHolder { /** * Returns the entity type of this matching entity. diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IRegistratorHolder.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IRegistratorHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..1589dacff417dfbd597e18adad7de096b02ca9c7 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IRegistratorHolder.java @@ -0,0 +1,30 @@ +/* + * Copyright 2010 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.shared.basic; + +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; + +/** + * Interface of DTOs having a registrator attribute. + * + * @author Franz-Josef Elmer + */ +public interface IRegistratorHolder extends ISerializable +{ + public Person getRegistrator(); + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractRegistrationHolder.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractRegistrationHolder.java index 3b456b44f89f7474dbc71a4e522cab643f4567f3..ef613642c0e8ab9676de422a745ad9cb5a45467b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractRegistrationHolder.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractRegistrationHolder.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; import java.util.Date; +import ch.systemsx.cisd.openbis.generic.shared.basic.IRegistratorHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.ISerializable; /** @@ -25,7 +26,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.ISerializable; * * @author Christian Ribeaud */ -public abstract class AbstractRegistrationHolder implements ISerializable +public abstract class AbstractRegistrationHolder implements ISerializable, IRegistratorHolder { private static final long serialVersionUID = ServiceVersionHolder.VERSION; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MatchingEntity.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MatchingEntity.java index f23e617aa1ba6d260b66819ff060d57dcf90a5bc..6057524dec3028dc53e278129e4504fa40108643 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MatchingEntity.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MatchingEntity.java @@ -17,6 +17,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; +import ch.systemsx.cisd.openbis.generic.shared.basic.IRegistratorHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.ISerializable; /** @@ -25,7 +26,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.ISerializable; * * @author Christian Ribeaud */ -public final class MatchingEntity implements ISerializable, IEntityInformationHolderWithPermId +public final class MatchingEntity implements ISerializable, IEntityInformationHolderWithPermId, IRegistratorHolder { private static final long serialVersionUID = 1L; @@ -154,6 +155,7 @@ public final class MatchingEntity implements ISerializable, IEntityInformationHo final MatchingEntity entity = this; return new IEntityInformationHolderWithPermId() { + private static final long serialVersionUID = ServiceVersionHolder.VERSION; public Long getId() { return entity.getId(); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java index bef27edf6673ffca633cdec969d4712754ecad60..3480859a1216820911c5b04a75b3cc389c2a8268 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java @@ -59,6 +59,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKin 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.ServiceVersionHolder; import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.IPhosphoNetXClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.IndistinguishableProteinInfo; import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.Peptide; @@ -356,6 +357,7 @@ public class ProteinViewer extends AbstractViewerWithVerticalSplit<IEntityInform public static class DatasetInformationHolder implements IEntityInformationHolderWithIdentifier { + private static final long serialVersionUID = ServiceVersionHolder.VERSION; private final ProteinDetails proteinDetails; public DatasetInformationHolder(ProteinDetails proteinDetails)