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 a4ea41631590d1763ac2e17e6bae00221ad06876..253cf47e82d13e0138a2f328b8b93e4cfceee143 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 @@ -21,6 +21,7 @@ import java.util.List; import ch.systemsx.cisd.openbis.generic.client.web.client.IClientService; 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.ResultSetWithEntityTypes; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; @@ -85,7 +86,7 @@ public interface IPhosphoNetXClientService extends IClientService TableExportCriteria<SampleWithPropertiesAndAbundance> exportCriteria) throws UserFailureException; - public ResultSet<Sample> listRawDataSamples(IResultSetConfig<String, Sample> criteria) + public ResultSetWithEntityTypes<Sample> listRawDataSamples(IResultSetConfig<String, Sample> criteria) throws UserFailureException; public String prepareExportRawDataSamples(TableExportCriteria<Sample> exportCriteria) 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 256196ea6d8fdb92a57d1a935d7bc047d6ae9d68..d2ed071900908be4b02b0ca866fc04b0e23f12ee 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 @@ -23,6 +23,7 @@ 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.IResultSetConfig; 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.TableExportCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; @@ -104,7 +105,7 @@ public interface IPhosphoNetXClientServiceAsync extends IClientServiceAsync /** @see IPhosphoNetXClientService#listRawDataSamples(IResultSetConfig) */ public void listRawDataSamples(IResultSetConfig<String, Sample> criteria, - AsyncCallback<ResultSet<Sample>> callback); + AsyncCallback<ResultSetWithEntityTypes<Sample>> callback); /** @see IPhosphoNetXClientService#prepareExportRawDataSamples(TableExportCriteria) */ public void prepareExportRawDataSamples(TableExportCriteria<Sample> exportCriteria, 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 0dac34d682d302cdb81e42c8584f030328696354..23292509eda0192e4a124febb89ab37313ae65f0 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 @@ -22,7 +22,9 @@ import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.appl import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.application.Dict.COPY_DATA_SETS_MESSAGE; import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.application.Dict.COPY_DATA_SETS_TITLE; +import java.util.ArrayList; import java.util.List; +import java.util.Set; import com.extjs.gxt.ui.client.widget.Dialog; import com.extjs.gxt.ui.client.widget.button.Button; @@ -33,6 +35,7 @@ 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.VoidAsyncCallback; 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.grid.AbstractSimpleBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; @@ -42,9 +45,14 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ID import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractDataConfirmationDialog; 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.ResultSetWithEntityTypes; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition; +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.EntityType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityTypePropertyType; +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.DatabaseModificationKind.ObjectKind; import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.IPhosphoNetXClientServiceAsync; @@ -115,6 +123,8 @@ class RawDataSampleGrid extends AbstractSimpleBrowserGrid<Sample> private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; + private Set<BasicEntityType> shownEntityTypesOrNull; + RawDataSampleGrid(IViewContext<IPhosphoNetXClientServiceAsync> viewContext) { super(viewContext.getCommonViewContext(), BROWSER_ID, GRID_ID, true, @@ -153,7 +163,26 @@ class RawDataSampleGrid extends AbstractSimpleBrowserGrid<Sample> @Override protected ColumnDefsAndConfigs<Sample> createColumnsDefinition() { - ColumnDefsAndConfigs<Sample> schema = super.createColumnsDefinition(); + IColumnDefinitionKind<Sample>[] columnsDefinition = getStaticColumnsDefinition(); + EntityGridModelFactory<Sample> factory = new EntityGridModelFactory<Sample>(columnsDefinition); + ArrayList<PropertyType> propertyTypes = new ArrayList<PropertyType>(); + if (shownEntityTypesOrNull != null) + { + for (BasicEntityType type : shownEntityTypesOrNull) + { + if (type instanceof EntityType) + { + EntityType entityType = (EntityType) type; + List<? extends EntityTypePropertyType<?>> etpts = entityType.getAssignedPropertyTypes(); + for (EntityTypePropertyType<?> entityTypePropertyType : etpts) + { + propertyTypes.add(entityTypePropertyType.getPropertyType()); + } + } + } + } + System.out.println(shownEntityTypesOrNull + " " + propertyTypes); + ColumnDefsAndConfigs<Sample> schema = factory.createColumnsSchema(viewContext, propertyTypes); GridCellRenderer<BaseEntityModel<?>> linkCellRenderer = createInternalLinkCellRenderer(); schema.setGridCellRendererFor(RawDataSampleColDefKind.CODE.id(), linkCellRenderer); return schema; @@ -167,9 +196,26 @@ class RawDataSampleGrid extends AbstractSimpleBrowserGrid<Sample> @Override protected void listEntities(DefaultResultSetConfig<String, Sample> resultSetConfig, - AbstractAsyncCallback<ResultSet<Sample>> callback) + final AbstractAsyncCallback<ResultSet<Sample>> callback) { - specificViewContext.getService().listRawDataSamples(resultSetConfig, callback); + AbstractAsyncCallback<ResultSetWithEntityTypes<Sample>> extendedCallback = + new AbstractAsyncCallback<ResultSetWithEntityTypes<Sample>>(viewContext) + { + @Override + protected void process(ResultSetWithEntityTypes<Sample> result) + { + shownEntityTypesOrNull = result.getAvailableEntityTypes(); + callback.onSuccess(result.getResultSet()); +// refreshColumnsSettingsIfNecessary(); + } + + @Override + public void finishOnFailure(Throwable caught) + { + callback.finishOnFailure(caught); + } + }; + specificViewContext.getService().listRawDataSamples(resultSetConfig, extendedCallback); } @Override 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 0782a2ac3cd0683ec26bb5817ac788019f38ad23..75e3d1843aede398fd7601580ff79f7efae3d73d 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 @@ -26,6 +26,7 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.servlet.IRequestContextProvider; 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.ResultSetWithEntityTypes; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; import ch.systemsx.cisd.openbis.generic.client.web.server.AbstractClientService; import ch.systemsx.cisd.openbis.generic.client.web.server.translator.UserFailureExceptionTranslator; @@ -185,11 +186,11 @@ public class PhosphoNetXClientService extends AbstractClientService implements return prepareExportEntities(exportCriteria); } - public ResultSet<Sample> listRawDataSamples(IResultSetConfig<String, Sample> criteria) + public ResultSetWithEntityTypes<Sample> listRawDataSamples(IResultSetConfig<String, Sample> criteria) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { final String sessionToken = getSessionToken(); - return listEntities(criteria, new RawDataSampleProvider(rawDataService, sessionToken)); + return listEntitiesWithTypes(criteria, new RawDataSampleProvider(rawDataService, sessionToken)); } public String prepareExportRawDataSamples(TableExportCriteria<Sample> exportCriteria) @@ -204,5 +205,4 @@ public class PhosphoNetXClientService extends AbstractClientService implements rawDataService.copyRawData(getSessionToken(), rawDataSampleIDs); } - }