From 52c0089d600d0627036fb77808b6ec92ae923ea4 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 12 Oct 2010 15:35:25 +0000 Subject: [PATCH] LMS-1782 RawDataSampleGrid is now subclass of TypedTableGrid SVN: 18272 --- .../web/client/IPhosphoNetXClientService.java | 11 +- .../IPhosphoNetXClientServiceAsync.java | 11 +- .../application/RawDataProcessingMenu.java | 24 ++-- .../client/application/RawDataSampleGrid.java | 123 ++++++++--------- .../web/server/PhosphoNetXClientService.java | 19 ++- .../web/server/RawDataSampleProvider.java | 124 +++++------------- .../basic/dto/RawDataSampleGridIDs.java | 40 ++++++ .../web/server/RawDataSampleProviderTest.java | 64 +++++---- 8 files changed, 202 insertions(+), 214 deletions(-) create mode 100644 rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/basic/dto/RawDataSampleGridIDs.java diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/IPhosphoNetXClientService.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/IPhosphoNetXClientService.java index 1ac8e9d605c..a96a353f59c 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/IPhosphoNetXClientService.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/IPhosphoNetXClientService.java @@ -19,13 +19,14 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client; import java.util.List; import ch.systemsx.cisd.openbis.generic.client.web.client.IClientService; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig; 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.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.dto.ListProteinByExperimentAndReferenceCriteria; import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.dto.ListProteinByExperimentCriteria; @@ -91,10 +92,10 @@ public interface IPhosphoNetXClientService extends IClientService TableExportCriteria<SampleWithPropertiesAndAbundance> exportCriteria) throws UserFailureException; - public GenericTableResultSet listRawDataSamples( - IResultSetConfig<String, TableModelRow> criteria) throws UserFailureException; + public TypedTableResultSet<Sample> listRawDataSamples( + IResultSetConfig<String, TableModelRowWithObject<Sample>> criteria) throws UserFailureException; - public String prepareExportRawDataSamples(TableExportCriteria<TableModelRow> exportCriteria) + public String prepareExportRawDataSamples(TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria) throws UserFailureException; public void processRawData(String dataSetProcessingKey, long[] rawDataSampleIDs, diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/IPhosphoNetXClientServiceAsync.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/IPhosphoNetXClientServiceAsync.java index 6070c64ed03..58fa462c1c2 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/IPhosphoNetXClientServiceAsync.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/IPhosphoNetXClientServiceAsync.java @@ -21,12 +21,13 @@ import java.util.List; import com.google.gwt.user.client.rpc.AsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.IClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig; 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.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.dto.ListProteinByExperimentAndReferenceCriteria; import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.dto.ListProteinByExperimentCriteria; @@ -104,11 +105,11 @@ public interface IPhosphoNetXClientServiceAsync extends IClientServiceAsync AsyncCallback<String> callback); /** @see IPhosphoNetXClientService#listRawDataSamples(IResultSetConfig) */ - public void listRawDataSamples(IResultSetConfig<String, TableModelRow> criteria, - AsyncCallback<GenericTableResultSet> callback); + public void listRawDataSamples(IResultSetConfig<String, TableModelRowWithObject<Sample>> criteria, + AsyncCallback<TypedTableResultSet<Sample>> callback); /** @see IPhosphoNetXClientService#prepareExportRawDataSamples(TableExportCriteria) */ - public void prepareExportRawDataSamples(TableExportCriteria<TableModelRow> exportCriteria, + public void prepareExportRawDataSamples(TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria, AsyncCallback<String> callback); /** @see IPhosphoNetXClientService#processRawData(String, long[], String) */ diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataProcessingMenu.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataProcessingMenu.java index c5b6a051489..be8e69c95c8 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataProcessingMenu.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataProcessingMenu.java @@ -37,9 +37,9 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMess import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.TextToolItem; 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.ISerializableComparable; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SerializableComparableIDDecorator; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.IPhosphoNetXClientServiceAsync; /** @@ -50,11 +50,11 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.IPhosphoNet public class RawDataProcessingMenu extends TextToolItem { private static final class CopyConfirmationDialog extends - AbstractDataConfirmationDialog<List<TableModelRow>> + AbstractDataConfirmationDialog<List<TableModelRowWithObject<Sample>>> { private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; - private final List<TableModelRow> samples; + private final List<TableModelRowWithObject<Sample>> samples; private final DatastoreServiceDescription datastoreServiceDescription; @@ -63,7 +63,7 @@ public class RawDataProcessingMenu extends TextToolItem private CopyConfirmationDialog( IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext, DatastoreServiceDescription datastoreServiceDescription, - List<TableModelRow> samples, String title) + List<TableModelRowWithObject<Sample>> samples, String title) { super(specificViewContext, samples, title); this.specificViewContext = specificViewContext; @@ -93,13 +93,7 @@ public class RawDataProcessingMenu extends TextToolItem long[] rawDataSampleIDs = new long[samples.size()]; for (int i = 0; i < samples.size(); i++) { - TableModelRow row = samples.get(i); - ISerializableComparable c = row.getValues().get(0); - if (c instanceof SerializableComparableIDDecorator == false) - { - throw new IllegalArgumentException("Missing id: " + c); - } - rawDataSampleIDs[i] = ((SerializableComparableIDDecorator) c).getID(); + rawDataSampleIDs[i] = samples.get(i).getObjectOrNull().getId(); } specificViewContext.getService().processRawData(datastoreServiceDescription.getKey(), rawDataSampleIDs, dataSetTypeField.getValue(), @@ -120,10 +114,10 @@ public class RawDataProcessingMenu extends TextToolItem } private final IViewContext<IPhosphoNetXClientServiceAsync> viewContext; - private final IDelegatedActionWithResult<List<TableModelRow>> selectedDataProvider; + private final IDelegatedActionWithResult<List<TableModelRowWithObject<Sample>>> selectedDataProvider; public RawDataProcessingMenu(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - IDelegatedActionWithResult<List<TableModelRow>> selectedDataProvider) + IDelegatedActionWithResult<List<TableModelRowWithObject<Sample>>> selectedDataProvider) { super(viewContext.getMessage(Dict.COPY_DATA_SETS_BUTTON_LABEL)); this.viewContext = viewContext; @@ -166,7 +160,7 @@ public class RawDataProcessingMenu extends TextToolItem public void execute() { String title = viewContext.getMessage(COPY_DATA_SETS_TITLE); - List<TableModelRow> selectedSamples = selectedDataProvider.execute(); + List<TableModelRowWithObject<Sample>> selectedSamples = selectedDataProvider.execute(); new CopyConfirmationDialog(viewContext, datastoreServiceDescription, selectedSamples, title).show(); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java index aaa17d03e99..bdb907fef27 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java @@ -24,39 +24,35 @@ import java.util.List; import com.google.gwt.user.client.rpc.AsyncCallback; 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.DatabaseModificationAwareComponent; +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.LinkExtractor; 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.GenericTableBrowserGrid; -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.util.IDelegatedActionWithResult; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericTableResultSet; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; 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.dto.BasicEntityType; +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.DatabaseModificationKind.ObjectKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SerializableComparableIDDecorator; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.IPhosphoNetXClientServiceAsync; +import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.RawDataSampleGridIDs; /** * @author Franz-Josef Elmer */ -class RawDataSampleGrid extends GenericTableBrowserGrid +class RawDataSampleGrid extends TypedTableGrid<Sample> { - public static final String BROWSER_ID = GenericConstants.ID_PREFIX + "raw_data_sample_browser"; - - public static final String GRID_ID = BROWSER_ID + "-grid"; + public static final String GRID_ID = RawDataSampleGridIDs.BROWSER_ID + "-grid"; public static DatabaseModificationAwareComponent create( final IViewContext<IPhosphoNetXClientServiceAsync> viewContext) { RawDataSampleGrid grid = new RawDataSampleGrid(viewContext); - DisposableEntityChooser<TableModelRow> disposable = grid.asDisposableWithoutToolbar(); + DisposableEntityChooser<TableModelRowWithObject<Sample>> disposable = grid.asDisposableWithoutToolbar(); return new DatabaseModificationAwareComponent(disposable.getComponent(), disposable); } @@ -64,45 +60,83 @@ class RawDataSampleGrid extends GenericTableBrowserGrid RawDataSampleGrid(IViewContext<IPhosphoNetXClientServiceAsync> viewContext) { - super(viewContext.getCommonViewContext(), BROWSER_ID, GRID_ID, true, + super(viewContext.getCommonViewContext(), GRID_ID, true, PhosphoNetXDisplayTypeIDGenerator.RAW_DATA_SAMPLE_BROWSER_GRID); specificViewContext = viewContext; - registerLinkClickListenerFor("CODE", new ICellListener<TableModelRow>() - { - public void handle(TableModelRow rowItem, boolean keyPressed) - { - showEntityViewer(rowItem, false, keyPressed); - } - }); allowMultipleSelection(); addEntityOperationsLabel(); RawDataProcessingMenu button = new RawDataProcessingMenu(viewContext, - new IDelegatedActionWithResult<List<TableModelRow>>() + new IDelegatedActionWithResult<List<TableModelRowWithObject<Sample>>>() { - public List<TableModelRow> execute() + public List<TableModelRowWithObject<Sample>> execute() { return getSelectedBaseObjects(); } }); enableButtonOnSelectedItems(button); addButton(button); + linkMSInjectionSample(); + linkBiologicalSample(); + } + + private void linkMSInjectionSample() + { + registerListenerAndLinkGenerator(RawDataSampleGridIDs.CODE, + new ICellListenerAndLinkGenerator<Sample>() + { + + public void handle(TableModelRowWithObject<Sample> rowItem, + boolean specialKeyPressed) + { + showEntityInformationHolderViewer(rowItem.getObjectOrNull(), false, + specialKeyPressed); + } + + public String tryGetLink(Sample entity) + { + return LinkExtractor.tryExtract(entity); + } + }); + } + + private void linkBiologicalSample() + { + registerListenerAndLinkGenerator(RawDataSampleGridIDs.PARENT, + new ICellListenerAndLinkGenerator<Sample>() + { + + public void handle(TableModelRowWithObject<Sample> rowItem, + boolean specialKeyPressed) + { + showEntityInformationHolderViewer(rowItem.getObjectOrNull() + .getGeneratedFrom(), false, specialKeyPressed); + } + + public String tryGetLink(Sample entity) + { + return LinkExtractor.tryExtract(entity.getGeneratedFrom()); + } + }); } @Override - protected void listTableRows(IResultSetConfig<String, TableModelRow> resultSetConfig, - AsyncCallback<GenericTableResultSet> callback) + protected void listTableRows( + DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig, + AsyncCallback<TypedTableResultSet<Sample>> callback) { specificViewContext.getService().listRawDataSamples(resultSetConfig, callback); } @Override - protected void prepareExportEntities(TableExportCriteria<TableModelRow> exportCriteria, + protected void prepareExportEntities( + TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria, AbstractAsyncCallback<String> callback) { specificViewContext.getService().prepareExportRawDataSamples(exportCriteria, callback); } + @Override public DatabaseModificationKind[] getRelevantModifications() { return new DatabaseModificationKind[] @@ -112,37 +146,4 @@ class RawDataSampleGrid extends GenericTableBrowserGrid edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT) }; } - @Override - protected void showEntityViewer(final TableModelRow entity, boolean editMode, boolean active) - { - showEntityInformationHolderViewer(new IEntityInformationHolderWithPermId() - { - - public String getCode() - { - return entity.getValues().get(0).toString(); - } - - public Long getId() - { - return ((SerializableComparableIDDecorator) entity.getValues().get(0)).getID(); - } - - public BasicEntityType getEntityType() - { - return new BasicEntityType("MS_INJECTION"); - } - - public EntityKind getEntityKind() - { - return EntityKind.SAMPLE; - } - - public String getPermId() - { - return null; - } - - }, editMode, active); - } } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientService.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientService.java index 3ff68d5ee71..7617666ad7e 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientService.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientService.java @@ -25,15 +25,17 @@ import org.springframework.stereotype.Component; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.servlet.IRequestContextProvider; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig; 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.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.server.AbstractClientService; +import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.DataProviderAdapter; import ch.systemsx.cisd.openbis.generic.client.web.server.translator.UserFailureExceptionTranslator; import ch.systemsx.cisd.openbis.generic.shared.IServer; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; import ch.systemsx.cisd.openbis.plugin.phosphonetx.BuildAndEnvironmentInfo; import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.IPhosphoNetXClientService; @@ -210,17 +212,20 @@ public class PhosphoNetXClientService extends AbstractClientService implements return prepareExportEntities(exportCriteria); } - public GenericTableResultSet listRawDataSamples( - IResultSetConfig<String, TableModelRow> criteria) + public TypedTableResultSet<Sample> listRawDataSamples( + IResultSetConfig<String, TableModelRowWithObject<Sample>> criteria) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { final String sessionToken = getSessionToken(); RawDataSampleProvider rawDataSampleProvider = new RawDataSampleProvider(proteomicsDataService, sessionToken); - ResultSet<TableModelRow> resultSet = listEntities(criteria, rawDataSampleProvider); - return new GenericTableResultSet(resultSet, rawDataSampleProvider.getGenericHeaders()); + DataProviderAdapter<Sample> dataProvider = + new DataProviderAdapter<Sample>(rawDataSampleProvider); + ResultSet<TableModelRowWithObject<Sample>> resultSet = listEntities(criteria, dataProvider); + return new TypedTableResultSet<Sample>(resultSet); } - public String prepareExportRawDataSamples(TableExportCriteria<TableModelRow> exportCriteria) + public String prepareExportRawDataSamples(TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria) { return prepareExportEntities(exportCriteria); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java index fa2a5b588ed..2bb47a0b14e 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java @@ -16,120 +16,68 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.server; -import java.util.ArrayList; -import java.util.HashSet; +import static ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.RawDataSampleGridIDs.CODE; +import static ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.RawDataSampleGridIDs.EXPERIMENT; +import static ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.RawDataSampleGridIDs.PARENT; +import static ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.RawDataSampleGridIDs.REGISTRATION_DATE; + import java.util.List; -import ch.rinn.restrictions.Private; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.client.web.server.AbstractOriginalDataProviderWithoutHeaders; -import ch.systemsx.cisd.openbis.generic.client.web.server.GenericColumnsHelper; -import ch.systemsx.cisd.openbis.generic.client.web.server.GenericColumnsHelper.Column; -import ch.systemsx.cisd.openbis.generic.client.web.server.GenericColumnsHelper.PropertyColumns; +import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.ITableModelProvider; +import ch.systemsx.cisd.openbis.generic.server.util.TypedTableModelBuilder; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.IProteomicsDataServiceInternal; import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.dto.MsInjectionSample; /** * @author Franz-Josef Elmer */ -class RawDataSampleProvider extends AbstractOriginalDataProviderWithoutHeaders<TableModelRow> +class RawDataSampleProvider implements ITableModelProvider<Sample> { - - @Private - static final String EXPERIMENT = "EXPERIMENT"; - - @Private - static final String PARENT = "PARENT"; - - @Private - static final String REGISTRATION_DATE = "REGISTRATION_DATE"; - - @Private - static final String CODE = "CODE"; - private final IProteomicsDataServiceInternal service; private final String sessionToken; + private TypedTableModel<Sample> model; + RawDataSampleProvider(IProteomicsDataServiceInternal service, String sessionToken) { this.service = service; this.sessionToken = sessionToken; } - public List<TableModelRow> getOriginalData() throws UserFailureException + public TypedTableModel<Sample> getTableModel() { - return GenericColumnsHelper.createTableRows(getColumns()); - } - - public List<TableModelColumnHeader> getGenericHeaders() - { - List<Column> columns = getColumns(); - List<TableModelColumnHeader> headers = - new ArrayList<TableModelColumnHeader>(columns.size()); - for (Column column : columns) + if (model == null) { - headers.add(column.getHeader()); - } - return headers; - } - - private List<Column> getColumns() - { - List<MsInjectionSample> samples = service.listRawDataSamples(sessionToken); - Column codeColumn = - new Column(TableModelColumnHeader.untitledLinkableStringHeader(0, CODE)); - Column dateColumn = - new Column(TableModelColumnHeader.untitledStringHeader(1, REGISTRATION_DATE)); - Column parentColumn = new Column(TableModelColumnHeader.untitledStringHeader(2, PARENT)); - Column experimentColumn = new Column(TableModelColumnHeader.untitledStringHeader(3, EXPERIMENT)); - List<Column> columns = new ArrayList<Column>(); - columns.add(codeColumn); - columns.add(dateColumn); - columns.add(parentColumn); - columns.add(experimentColumn); - int fixedColumns = columns.size(); - PropertyColumns samplePropertyColumns = new PropertyColumns(); - PropertyColumns parentPropertyColumns = new PropertyColumns(); - for (int i = 0; i < samples.size(); i++) - { - Sample sample = samples.get(i).getSample(); - codeColumn.addStringWithID(i, sample.getCode(), sample.getId()); - dateColumn.addDate(i, sample.getRegistrationDate()); - Sample parent = sample.getGeneratedFrom(); - parentColumn.addStringWithID(i, parent.getIdentifier(), parent.getId()); - Experiment experiment = parent.getExperiment(); - if (experiment != null) + List<MsInjectionSample> samples = service.listRawDataSamples(sessionToken); + TypedTableModelBuilder<Sample> builder = new TypedTableModelBuilder<Sample>(); + builder.addColumn(CODE).withDataType(DataTypeCode.VARCHAR); + builder.addColumn(REGISTRATION_DATE).withDataType(DataTypeCode.TIMESTAMP).withDefaultWidth(190); + builder.addColumn(PARENT).withDataType(DataTypeCode.VARCHAR); + builder.addColumn(EXPERIMENT).withDataType(DataTypeCode.VARCHAR); + for (MsInjectionSample msInjectionSample : samples) { - experimentColumn.addStringWithID(i, experiment.getIdentifier(), experiment.getId()); + Sample sample = msInjectionSample.getSample(); + builder.addRow(sample); + builder.column(CODE).addString(sample.getCode()); + builder.column(REGISTRATION_DATE).addDate(sample.getRegistrationDate()); + Sample parent = sample.getGeneratedFrom(); + builder.column(PARENT).addString(parent.getIdentifier()); + Experiment experiment = parent.getExperiment(); + if (experiment != null) + { + builder.column(EXPERIMENT).addString(experiment.getIdentifier()); + } + builder.columnGroup("MS").addProperties("", sample.getProperties()); + builder.columnGroup("BIO_").addProperties(parent.getProperties()); } - addPropertyTypes(samplePropertyColumns, i, sample); - addPropertyTypes(parentPropertyColumns, i, sample.getGeneratedFrom()); - } - int nextIndex = samplePropertyColumns.reindexColumns(fixedColumns); - parentPropertyColumns.reindexColumns(nextIndex); - HashSet<String> commonColumns = new HashSet<String>(samplePropertyColumns.getColumnCodes()); - commonColumns.retainAll(parentPropertyColumns.getColumnCodes()); - if (commonColumns.isEmpty() == false) - { - parentPropertyColumns.addPrefixToColumnHeaderCodes("BIO_"); - } - columns.addAll(samplePropertyColumns.getColumns()); - columns.addAll(parentPropertyColumns.getColumns()); - return columns; - } - - private void addPropertyTypes(PropertyColumns columns, int index, Sample sample) - { - for (IEntityProperty property : sample.getProperties()) - { - columns.add(index, property); + model = builder.getModel(); } + return model; } } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/basic/dto/RawDataSampleGridIDs.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/basic/dto/RawDataSampleGridIDs.java new file mode 100644 index 00000000000..448c219661a --- /dev/null +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/shared/basic/dto/RawDataSampleGridIDs.java @@ -0,0 +1,40 @@ +/* + * 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.plugin.phosphonetx.shared.basic.dto; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; + + +/** + * + * + * @author Franz-Josef Elmer + */ +public class RawDataSampleGridIDs +{ + public static final String BROWSER_ID = GenericConstants.ID_PREFIX + "raw_data_sample_browser"; + + public static final String EXPERIMENT = BROWSER_ID + "_" + "EXPERIMENT"; + + public static final String PARENT = BROWSER_ID + "_" + "PARENT"; + + public static final String REGISTRATION_DATE = BROWSER_ID + "_" + "REGISTRATION_DATE"; + + public static final String CODE = BROWSER_ID + "_" + "CODE"; + + +} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java index aca3bb7dec8..61c92451561 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java @@ -16,9 +16,9 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.server; -import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.server.RawDataSampleProvider.CODE; -import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.server.RawDataSampleProvider.PARENT; -import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.server.RawDataSampleProvider.REGISTRATION_DATE; +import static ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.RawDataSampleGridIDs.CODE; +import static ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.RawDataSampleGridIDs.PARENT; +import static ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.basic.dto.RawDataSampleGridIDs.REGISTRATION_DATE; import java.util.ArrayList; import java.util.Date; @@ -39,6 +39,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.IProteomicsDataServiceInternal; import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.dto.MsInjectionSample; @@ -67,9 +69,10 @@ public class RawDataSampleProviderTest extends AbstractServerTestCase { prepareListRawDataSamples(); - List<TableModelColumnHeader> headers = provider.getGenericHeaders(); + List<TableModelColumnHeader> headers = provider.getTableModel().getHeader(); - assertColumns(headers); + assertFixedColumns(headers); + assertEquals(4, headers.size()); context.assertIsSatisfied(); } @@ -81,9 +84,15 @@ public class RawDataSampleProviderTest extends AbstractServerTestCase Sample ms3 = sample("MS3", sample("DE", "gamma", "alpha"), "two"); prepareListRawDataSamples(ms1, ms2, ms3); - List<TableModelColumnHeader> headers = provider.getGenericHeaders(); + List<TableModelColumnHeader> headers = provider.getTableModel().getHeader(); - assertColumns(headers, "one", "two", "alpha", "beta", "gamma"); + assertFixedColumns(headers); + assertPropertyHeader("one", "ONE", 4, headers); + assertPropertyHeader("two", "TWO", 5, headers); + assertPropertyHeader("alpha", "BIO_ALPHA", 6, headers); + assertPropertyHeader("beta", "BIO_BETA", 7, headers); + assertPropertyHeader("gamma", "BIO_GAMMA", 8, headers); + assertEquals(9, headers.size()); context.assertIsSatisfied(); } @@ -92,7 +101,7 @@ public class RawDataSampleProviderTest extends AbstractServerTestCase { prepareListRawDataSamples(); - List<TableModelRow> data = provider.getOriginalData(); + List<TableModelRowWithObject<Sample>> data = provider.getTableModel().getRows(); assertEquals(0, data.size()); context.assertIsSatisfied(); @@ -110,12 +119,14 @@ public class RawDataSampleProviderTest extends AbstractServerTestCase Sample ms3 = sample("MS3", parent, "2"); prepareListRawDataSamples(ms1, ms2, ms3); - List<TableModelRow> data = provider.getOriginalData(); + TypedTableModel<Sample> tableModel = provider.getTableModel(); + List<TableModelRowWithObject<Sample>> data = tableModel.getRows(); assertEquals(3, data.size()); - assertRow("MS1, Mon Mar 30 17:18:20 CET 1970, /G/ABC, null, null, 3.0, 6, 4, null", data.get(0)); - assertRow("MS2, Mon Mar 30 17:20:00 CET 1970, /G/DE, null, null, 3.0, null, 5, 5", data.get(1)); - assertRow("MS3, Mon Mar 30 17:21:40 CET 1970, /G/FG, /G/P/E1, 1, null, 5, null, 6", data.get(2)); + assertEquals("[null, null, null, null, 2, one, alpha, beta, gamma]", tableModel.getHeader().toString()); + assertRow("MS1, Mon Mar 30 17:18:20 CET 1970, /G/ABC, , , 3.0, 6, 4, ", data.get(0)); + assertRow("MS2, Mon Mar 30 17:20:00 CET 1970, /G/DE, , , 3.0, , 5, 5", data.get(1)); + assertRow("MS3, Mon Mar 30 17:21:40 CET 1970, /G/FG, /G/P/E1, 1, , 5, , 6", data.get(2)); context.assertIsSatisfied(); } @@ -134,45 +145,32 @@ public class RawDataSampleProviderTest extends AbstractServerTestCase assertEquals(expectedRow, builder.toString()); } - private void assertColumns(List<TableModelColumnHeader> headers, - String... expectedTitles) - { - assertFixedColumns(headers); - for (int i = 0; i < expectedTitles.length; i++) - { - assertPropertyHeader(expectedTitles[i], i + 4, headers); - } - assertEquals(expectedTitles.length + 4, headers.size()); - } - private void assertFixedColumns(List<TableModelColumnHeader> headers) { - assertUntitledHeader(CODE, 0, true, DataTypeCode.VARCHAR, headers.get(0)); - assertUntitledHeader(REGISTRATION_DATE, 1, false, DataTypeCode.VARCHAR, headers.get(1)); - assertUntitledHeader(PARENT, 2, false, DataTypeCode.VARCHAR, headers.get(2)); + assertUntitledHeader(CODE, 0, DataTypeCode.VARCHAR, headers.get(0)); + assertUntitledHeader(REGISTRATION_DATE, 1, DataTypeCode.TIMESTAMP, headers.get(1)); + assertUntitledHeader(PARENT, 2, DataTypeCode.VARCHAR, headers.get(2)); } private void assertUntitledHeader(String expectedCode, int expectedIndex, - boolean expectedlinkableFlag, DataTypeCode expectedType, TableModelColumnHeader header) + DataTypeCode expectedType, TableModelColumnHeader header) { - assertHeader(null, expectedCode, expectedIndex, expectedlinkableFlag, expectedType, - header); + assertHeader(null, expectedCode, expectedIndex, expectedType, header); } - private void assertPropertyHeader(String expectedLabel, int index, List<TableModelColumnHeader> headers) + private void assertPropertyHeader(String expectedLabel, String expectedCode, int index, List<TableModelColumnHeader> headers) { DataTypeCode type = DataTypeCode.values()[expectedLabel.length()]; TableModelColumnHeader header = headers.get(index); - assertHeader(expectedLabel, expectedLabel.toUpperCase(), index, false, type, header); + assertHeader(expectedLabel, expectedCode, index, type, header); } private void assertHeader(String expectedTitle, String expectedCode, int expectedIndex, - boolean expectedlinkableFlag, DataTypeCode expectedType, TableModelColumnHeader header) + DataTypeCode expectedType, TableModelColumnHeader header) { assertEquals(expectedTitle, header.getTitle()); assertEquals(expectedCode, header.getId()); assertEquals(expectedIndex, header.getIndex()); - assertEquals(expectedlinkableFlag, header.isLinkable()); assertEquals(expectedType, header.getDataType()); } -- GitLab