diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGridColumnDefinitionUI.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGridColumnDefinitionUI.java index f8fd602772511b60be2873fc028bbbc45b098220..d557d2f3445d67dcca5dd1827c23f9d4b78da996 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGridColumnDefinitionUI.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGridColumnDefinitionUI.java @@ -121,4 +121,10 @@ public class TypedTableGridColumnDefinitionUI<T extends Serializable> extends { return header.tryGetVocabulary(); } + + @Override + public boolean isCustom() + { + return false; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/GridCustomColumnDefinition.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/GridCustomColumnDefinition.java index 51fbc2fdbee74f0423456ed99bdf8d2d51dd40fd..693e87981fb9c2a842868e1930310cca644e810d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/GridCustomColumnDefinition.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/GridCustomColumnDefinition.java @@ -140,4 +140,10 @@ public class GridCustomColumnDefinition<T> implements IColumnDefinitionUI<T> private GridCustomColumnDefinition() { } + + @Override + public boolean isCustom() + { + return true; + } } \ No newline at end of file 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 5b70afc2a01f802eeae0b34be6e592d8f186c037..c9fdce86c681461fd982ff2e18a06a47201830e1 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 @@ -119,6 +119,7 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.metaproject.IMetapr import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.metaproject.MetaprojectIdentifierId; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.metaproject.MetaprojectTechIdId; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.sample.SampleTechIdId; +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.IIdHolder; @@ -295,6 +296,21 @@ public final class CommonClientService extends AbstractClientService implements // Not directly needed but this refreshes the session. String session = getSessionToken(); final TableExportCriteria<T> exportCriteria = getAndRemoveExportCriteria(exportDataKey); + + // Remove custom column definitions, as they are not needed in export (and are expensive to + // calculate). + Set<IColumnDefinition<T>> availableColumns = exportCriteria.getAvailableColumns(); + Set<IColumnDefinition<T>> nonCustomColumns = new HashSet<IColumnDefinition<T>>(); + for (IColumnDefinition<T> def : availableColumns) + { + if (def.isCustom() == false) + { + nonCustomColumns.add(def); + } + } + availableColumns.retainAll(nonCustomColumns); + exportCriteria.getColumnDefs().retainAll(nonCustomColumns); + final GridRowModels<T> entities = fetchCachedEntities(exportCriteria); EntityKind entityKindForUpdate = exportCriteria.getEntityKindForUpdateOrNull(); if (entityKindForUpdate != null) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java index fb9629d311b01249657d5bfb00690fb54beb5727..991979b056b8ab9b19ce3266980ce2e4b09ea645 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java @@ -223,6 +223,12 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se { throw new UnsupportedOperationException(); } + + @Override + public boolean isCustom() + { + return false; + } }); } this.customColumnsProvider = customColumnsProvider; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IColumnDefinition.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IColumnDefinition.java index b5a1ce152a0dc8baa08e7eb7c2f8a9688e45dc91..efde92ff9142c4265270351bbc150778016fa144 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IColumnDefinition.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IColumnDefinition.java @@ -48,4 +48,7 @@ public interface IColumnDefinition<T> extends IsSerializable /** Tries to get specified property or <code>null</code> if not found. */ String tryToGetProperty(String key); + /** Returns true if this is a custom column */ + boolean isCustom(); + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/TypedTableGridColumnDefinition.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/TypedTableGridColumnDefinition.java index bba96e8f7ae99520860e7c699bd0b4b6d741d3ca..e5fc51a99dad377b386b2efa335367b3337c9d4d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/TypedTableGridColumnDefinition.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/TypedTableGridColumnDefinition.java @@ -106,4 +106,10 @@ public class TypedTableGridColumnDefinition<T extends Serializable> implements // The check of index is needed because the column is applied to the wrong model return index < values.size() ? values.get(index) : null; } + + @Override + public boolean isCustom() + { + return false; + } } \ No newline at end of file diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManagerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManagerTest.java index 5260ac348bfb8da8cf93a06ee31aeb80b34de186..4765ac38765c45f116e4f46511534b14eccd223f 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManagerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManagerTest.java @@ -1154,6 +1154,12 @@ public final class CachedResultSetManagerTest extends AssertJUnit return "a".equals(key) ? "42" : null; } + @Override + public boolean isCustom() + { + return false; + } + }; }