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 7280afed7042b96ad86e79ecefc835a339e3a31f..7f3ea42160197119c2630f5234c5fa5effc22f04 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 @@ -159,7 +159,8 @@ public interface ICommonClientService extends IClientService */ public ResultSet<MatchingEntity> listMatchingEntities( final SearchableEntity searchableEntityOrNull, final String queryText, - final IResultSetConfig<String> resultSetConfig) throws UserFailureException; + final IResultSetConfig<String, MatchingEntity> resultSetConfig) + throws UserFailureException; /** * Removes the session result set associated with given key. 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 d00f050bd664e20ede8101b486557c1f110b0e9e..860ff671f7566982e4c520a698a7a30b3424fc20 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 @@ -138,7 +138,7 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync * @see ICommonClientService#listMatchingEntities(SearchableEntity, String, IResultSetConfig) */ public void listMatchingEntities(final SearchableEntity searchableEntity, - final String queryText, final IResultSetConfig<String> resultSetConfig, + final String queryText, final IResultSetConfig<String, MatchingEntity> resultSetConfig, final AsyncCallback<ResultSet<MatchingEntity>> asyncCallback); /** 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 a51a45218eac3ab74e21fec08adddb538ade6984..5771d3ffb45e0d31f552eb0be0ecb5732eb23342 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 @@ -81,7 +81,7 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma { List<IColumnDefinitionUI<MatchingEntity>> list = MatchingEntityModel.createColumnsSchema(viewContext); - return ColumnDefsAndConfigs.create(list, true); + return ColumnDefsAndConfigs.create(list); } @Override @@ -91,7 +91,7 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma } @Override - protected void listEntities(DefaultResultSetConfig<String> resultSetConfig, + protected void listEntities(DefaultResultSetConfig<String, MatchingEntity> resultSetConfig, AbstractAsyncCallback<ResultSet<MatchingEntity>> callback) { viewContext.getService().listMatchingEntities(searchableEntity, queryText, resultSetConfig, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentModel.java index 810770e57d560fa7e9b54e3045c2528a0481ac10..4d85f93bfcdea2c412b0d5d0e57766ab721ea737 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentModel.java @@ -81,12 +81,12 @@ public final class ExperimentModel extends AbstractEntityModel<Experiment> IMessageProvider messageProvider, ExperimentType selectedTypeOrNull) { ColumnDefsAndConfigs<Experiment> columns = new ColumnDefsAndConfigs<Experiment>(); - columns.addColumns(createCommonColumnsSchema(messageProvider), true); + columns.addColumns(createCommonColumnsSchema(messageProvider)); if (selectedTypeOrNull != null) { List<IColumnDefinitionUI<Experiment>> propertyColumnsSchema = createPropertyColumnsSchema(selectedTypeOrNull); - columns.addColumns(propertyColumnsSchema, false); + columns.addColumns(propertyColumnsSchema); } return columns; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MatchingEntityModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MatchingEntityModel.java index 223dfe7ded808e0d5f88c9133f141a30da0de1bc..4d2c62b519cdb323855a1050f0a979a234694b6f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MatchingEntityModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MatchingEntityModel.java @@ -66,63 +66,66 @@ public final class MatchingEntityModel extends AbstractEntityModel<MatchingEntit public enum MatchingEntityColumnKind implements IColumnDefinitionKind<MatchingEntity> { - ENTITY_KIND(new AbstractColumnDefinitionKind<MatchingEntity>( - ModelDataPropertyNames.ENTITY_KIND, Dict.ENTITY_KIND) + ENTITY_KIND(new AbstractColumnDefinitionKind<MatchingEntity>(Dict.ENTITY_KIND) { + @Override public String tryGetValue(MatchingEntity entity) { return entity.getEntityKind().getDescription(); } }), - ENTITY_TYPE(new AbstractColumnDefinitionKind<MatchingEntity>( - ModelDataPropertyNames.ENTITY_TYPE, Dict.ENTITY_TYPE) + ENTITY_TYPE(new AbstractColumnDefinitionKind<MatchingEntity>(Dict.ENTITY_TYPE) { + @Override public String tryGetValue(MatchingEntity entity) { return entity.getEntityType().getCode(); } }), - IDENTIFIER(new AbstractColumnDefinitionKind<MatchingEntity>( - ModelDataPropertyNames.IDENTIFIER, Dict.IDENTIFIER, 140, false) + IDENTIFIER(new AbstractColumnDefinitionKind<MatchingEntity>(Dict.IDENTIFIER, 140, false) { + @Override public String tryGetValue(MatchingEntity entity) { return entity.getIdentifier(); } }), - REGISTRATOR(new AbstractColumnDefinitionKind<MatchingEntity>( - ModelDataPropertyNames.REGISTRATOR, Dict.REGISTRATOR) + REGISTRATOR(new AbstractColumnDefinitionKind<MatchingEntity>(Dict.REGISTRATOR) { + @Override public String tryGetValue(MatchingEntity entity) { return renderRegistrator(entity.getRegistrator()); } }), - MATCHING_FIELD(new AbstractColumnDefinitionKind<MatchingEntity>( - ModelDataPropertyNames.MATCHING_FIELD, Dict.MATCHING_FIELD, 140, false) + MATCHING_FIELD(new AbstractColumnDefinitionKind<MatchingEntity>(Dict.MATCHING_FIELD, 140, + false) { + @Override public String tryGetValue(MatchingEntity entity) { return entity.getFieldDescription(); } }), - MATCHING_TEXT(new AbstractColumnDefinitionKind<MatchingEntity>( - ModelDataPropertyNames.MATCHING_TEXT, Dict.MATCHING_TEXT, 200, false) + MATCHING_TEXT(new AbstractColumnDefinitionKind<MatchingEntity>(Dict.MATCHING_TEXT, 200, + false) { + @Override public String tryGetValue(MatchingEntity entity) { return entity.getTextFragment(); } }); - private final IColumnDefinitionKind<MatchingEntity> columnDefinitionKind; + private final AbstractColumnDefinitionKind<MatchingEntity> columnDefinitionKind; - private MatchingEntityColumnKind(IColumnDefinitionKind<MatchingEntity> columnDefinitionKind) + private MatchingEntityColumnKind( + AbstractColumnDefinitionKind<MatchingEntity> columnDefinitionKind) { this.columnDefinitionKind = columnDefinitionKind; } @@ -139,7 +142,7 @@ public final class MatchingEntityModel extends AbstractEntityModel<MatchingEntit public String id() { - return columnDefinitionKind.id(); + return name(); } public boolean isHidden() diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ModelDataPropertyNames.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ModelDataPropertyNames.java index 555255e4f53729618a4e0b73e9bda75a9b64e705..c30e91d96a015bb55eb75a8f7894c0f0e60068be 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ModelDataPropertyNames.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ModelDataPropertyNames.java @@ -19,9 +19,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.model; import com.extjs.gxt.ui.client.data.ModelData; import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample; - /** * Some constants used in {@link ModelData} implementations. These constants are typically used in * {@link ColumnConfig#setId(String)}. Because they serve a different purpose, they should not be @@ -39,9 +36,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample; */ public final class ModelDataPropertyNames { - /** Because <i>Javascript</i> can not handle 'dot' in the property name. */ - private static final String FIELD_PATH_SEPARATOR = "_"; - public static final String CODE = "code"; public static final String FILE_NAME = "fileName"; @@ -56,59 +50,14 @@ public final class ModelDataPropertyNames public static final String ENTITY_TYPE = "entityType"; - public static final String MATCHING_FIELD = "fieldDescription"; - - public static final String MATCHING_TEXT = "textFragment"; - - /** - * This is the path to the experiment field starting from {@link Sample}. - * <p> - * Changing this may mean that sorting no longer works on the server side if result set is used. - * </p> - */ - public static final String EXPERIMENT_FOR_SAMPLE = - "validProcedure" + FIELD_PATH_SEPARATOR + "experiment"; - - /** - * This is the path to the experiment identifier field starting from {@link Sample}. - * <p> - * Changing this may mean that sorting no longer works on the server side if result set is used. - * </p> - */ - public static final String EXPERIMENT_IDENTIFIER_FOR_SAMPLE = - EXPERIMENT_FOR_SAMPLE + FIELD_PATH_SEPARATOR + "experimentIdentifier"; - - /** - * This is the path to the experiment type code field starting from {@link Experiment}. - * <p> - * Changing this may mean that sorting no longer works on the server side if result set is used. - * </p> - */ - public static final String EXPERIMENT_TYPE_CODE_FOR_EXPERIMENT = - "experimentType" + FIELD_PATH_SEPARATOR + "code"; - public static final String FILE_FORMAT_TYPE = "fileFormatType"; public static final String FIRST_NAME = "firstName"; public static final String GROUP = "group"; - /** - * This is the path to the project field starting from {@link Experiment}. - * <p> - * Changing this may mean that sorting no longer works on the server side if result set is used. - * </p> - */ - public static final String GROUP_FOR_EXPERIMENT = "project" + FIELD_PATH_SEPARATOR + "group"; - - public static final String IDENTIFIER = "identifier"; - public static final String DATABASE_INSTANCE = "databaseInstance"; - public static final String IS_GROUP_SAMPLE = "isGroupSample"; - - public static final String IS_INSTANCE_SAMPLE = "isInstanceSample"; - public static final String IS_INVALID = "isInvalid"; public static final String LAST_NAME = "lastName"; @@ -121,15 +70,6 @@ public final class ModelDataPropertyNames public static final String PERSON = "person"; - /** - * This is the path to the project field starting from {@link Sample}. - * <p> - * Changing this may mean that sorting no longer works on the server side if result set is used. - * </p> - */ - public static final String PROJECT_FOR_SAMPLE = - EXPERIMENT_FOR_SAMPLE + FIELD_PATH_SEPARATOR + "project"; - public static final String REGISTRATION_DATE = "registrationDate"; public static final String REGISTRATOR = "registrator"; @@ -138,8 +78,6 @@ public final class ModelDataPropertyNames public static final String ROLES = "roles"; - public static final String SAMPLE_IDENTIFIER = "sampleIdentifier"; - public static final String SAMPLE_TYPE = "sampleType"; public static final String USER_ID = "userId"; @@ -148,8 +86,6 @@ public final class ModelDataPropertyNames public static final String PROJECT = "project"; - public static final String EXPERIMENT_IDENTIFIER = "identifier"; - public static final String VERSIONS = "versions"; public static final String VERSION_FILE_NAME = "versionsFileName"; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/ColumnConfigFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/ColumnConfigFactory.java index a2ca6d45f3836d2b0146917c9dccfe4142755b82..63cef4f131378b852602f577513c3c3be165d994 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/ColumnConfigFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/ColumnConfigFactory.java @@ -39,22 +39,38 @@ public final class ColumnConfigFactory public final static ColumnConfig createRegistratorColumnConfig( final IMessageProvider messageProvider) { - return createDefaultColumnConfig(messageProvider.getMessage(Dict.REGISTRATOR), - ModelDataPropertyNames.REGISTRATOR); + return createRegistratorColumnConfig(messageProvider, ModelDataPropertyNames.REGISTRATOR); + } + + public final static ColumnConfig createRegistratorColumnConfig( + final IMessageProvider messageProvider, String id) + { + return createDefaultColumnConfig(messageProvider.getMessage(Dict.REGISTRATOR), id); } public final static ColumnConfig createCodeColumnConfig(final IMessageProvider messageProvider) { - return createDefaultColumnConfig(messageProvider.getMessage(Dict.CODE), - ModelDataPropertyNames.CODE); + return createCodeColumnConfig(messageProvider, ModelDataPropertyNames.CODE); + } + + public final static ColumnConfig createCodeColumnConfig(final IMessageProvider messageProvider, + String id) + { + return createDefaultColumnConfig(messageProvider.getMessage(Dict.CODE), id); } public final static ColumnConfig createRegistrationDateColumnConfig( final IMessageProvider messageProvider) + { + return createRegistrationDateColumnConfig(messageProvider, + ModelDataPropertyNames.REGISTRATION_DATE); + } + + public final static ColumnConfig createRegistrationDateColumnConfig( + final IMessageProvider messageProvider, String id) { final ColumnConfig registrationDateColumnConfig = - createDefaultColumnConfig(messageProvider.getMessage(Dict.REGISTRATION_DATE), - ModelDataPropertyNames.REGISTRATION_DATE); + createDefaultColumnConfig(messageProvider.getMessage(Dict.REGISTRATION_DATE), id); registrationDateColumnConfig.setWidth(200); return registrationDateColumnConfig; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ExternalDataGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ExternalDataGrid.java index d59484de912a68d2820fcdbbe0f9204cb303f302..b9079c4116236c1d9e150d2b444cb031b1a7836f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ExternalDataGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ExternalDataGrid.java @@ -45,7 +45,7 @@ public class ExternalDataGrid extends AbstractBrowserGrid<ExternalData, External { List<IColumnDefinitionUI<ExternalData>> list = ExternalDataModel.createColumnsSchema(viewContext); - return ColumnDefsAndConfigs.create(list, true); + return ColumnDefsAndConfigs.create(list); } @Override @@ -55,7 +55,7 @@ public class ExternalDataGrid extends AbstractBrowserGrid<ExternalData, External } @Override - protected void listEntities(DefaultResultSetConfig<String> resultSetConfig, + protected void listEntities(DefaultResultSetConfig<String, ExternalData> resultSetConfig, AbstractAsyncCallback<ResultSet<ExternalData>> callback) { // TODO Auto-generated method stub diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/columns/CommonExternalDataColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/columns/CommonExternalDataColDefKind.java index 2ee0436a0343289a6b1344679cec6af62c68f70e..974fa212e1d45c7624b12485b96fbe5a3a314a9a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/columns/CommonExternalDataColDefKind.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/columns/CommonExternalDataColDefKind.java @@ -17,65 +17,65 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.columns; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalData; /** - * - * * @author Franz-Josef Elmer */ public enum CommonExternalDataColDefKind implements IColumnDefinitionKind<ExternalData> { - CODE(new AbstractColumnDefinitionKind<ExternalData>(ModelDataPropertyNames.CODE, Dict.CODE) + CODE(new AbstractColumnDefinitionKind<ExternalData>(Dict.CODE) { + @Override public String tryGetValue(ExternalData entity) { return entity.getCode(); } }), - REGISTRATION_DATE(new AbstractColumnDefinitionKind<ExternalData>( - ModelDataPropertyNames.REGISTRATION_DATE, Dict.REGISTRATION_DATE, 200, false) + REGISTRATION_DATE(new AbstractColumnDefinitionKind<ExternalData>(Dict.REGISTRATION_DATE, 200, + false) { + @Override public String tryGetValue(ExternalData entity) { return renderRegistrationDate(entity); } }), - REGISTRATOR(new AbstractColumnDefinitionKind<ExternalData>(ModelDataPropertyNames.REGISTRATOR, - Dict.REGISTRATOR) + REGISTRATOR(new AbstractColumnDefinitionKind<ExternalData>(Dict.REGISTRATOR) { + @Override public String tryGetValue(ExternalData entity) { return renderRegistrator(entity); } }), - LOCATION(new AbstractColumnDefinitionKind<ExternalData>(ModelDataPropertyNames.LOCATION, - Dict.LOCATION) + LOCATION(new AbstractColumnDefinitionKind<ExternalData>(Dict.LOCATION) { + @Override public String tryGetValue(ExternalData entity) { return entity.getLocation(); } }), - FILE_FORMAT_TYPE(new AbstractColumnDefinitionKind<ExternalData>( - ModelDataPropertyNames.FILE_FORMAT_TYPE, Dict.FILE_FORMAT_TYPE) + FILE_FORMAT_TYPE(new AbstractColumnDefinitionKind<ExternalData>(Dict.FILE_FORMAT_TYPE) { + @Override public String tryGetValue(ExternalData entity) { return entity.getFileFormatType().getCode(); } }); - private final IColumnDefinitionKind<ExternalData> columnDefinitionKind; + private final AbstractColumnDefinitionKind<ExternalData> columnDefinitionKind; - private CommonExternalDataColDefKind(IColumnDefinitionKind<ExternalData> columnDefinitionKind) + private CommonExternalDataColDefKind( + AbstractColumnDefinitionKind<ExternalData> columnDefinitionKind) { this.columnDefinitionKind = columnDefinitionKind; } @@ -92,7 +92,7 @@ public enum CommonExternalDataColDefKind implements IColumnDefinitionKind<Extern public String id() { - return columnDefinitionKind.id(); + return name(); } public boolean isHidden() diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java index 6dd95a463afc057108e8cbe12cdaafa9d6a8b8a8..b3dc2cc09a4b542ef33026913d44f9cee5cc65b2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java @@ -60,14 +60,14 @@ public final class ExperimentBrowserGrid extends AbstractBrowserGrid<Experiment, } @Override - protected void listEntities(DefaultResultSetConfig<String> resultSetConfig, + protected void listEntities(DefaultResultSetConfig<String, Experiment> resultSetConfig, AbstractAsyncCallback<ResultSet<Experiment>> callback) { copyPagingConfig(resultSetConfig); viewContext.getService().listExperiments(criteria, callback); } - private void copyPagingConfig(DefaultResultSetConfig<String> resultSetConfig) + private void copyPagingConfig(DefaultResultSetConfig<String, Experiment> resultSetConfig) { criteria.setLimit(resultSetConfig.getLimit()); criteria.setOffset(resultSetConfig.getOffset()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/columns/CommonExperimentColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/columns/CommonExperimentColDefKind.java index ff24a1a31fe52e4caca609ed12fac8396fc698d3..9d73720f63dbcfe3164af26259a29e55fdadc372 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/columns/CommonExperimentColDefKind.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/columns/CommonExperimentColDefKind.java @@ -17,7 +17,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.columns; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment; @@ -29,80 +28,83 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment; */ public enum CommonExperimentColDefKind implements IColumnDefinitionKind<Experiment> { - CODE(new AbstractColumnDefinitionKind<Experiment>(ModelDataPropertyNames.CODE, Dict.CODE) + CODE(new AbstractColumnDefinitionKind<Experiment>(Dict.CODE) { + @Override public String tryGetValue(Experiment entity) { return entity.getCode(); } }), - EXPERIMENT_TYPE(new AbstractColumnDefinitionKind<Experiment>( - ModelDataPropertyNames.EXPERIMENT_TYPE_CODE_FOR_EXPERIMENT, Dict.EXPERIMENT_TYPE) + EXPERIMENT_TYPE(new AbstractColumnDefinitionKind<Experiment>(Dict.EXPERIMENT_TYPE) { + @Override public String tryGetValue(Experiment entity) { return entity.getExperimentType().getCode(); } }), - EXPERIMENT_IDENTIFIER(new AbstractColumnDefinitionKind<Experiment>( - ModelDataPropertyNames.EXPERIMENT_IDENTIFIER, Dict.EXPERIMENT_IDENTIFIER, 150, true) + EXPERIMENT_IDENTIFIER(new AbstractColumnDefinitionKind<Experiment>(Dict.EXPERIMENT_IDENTIFIER, + 150, true) { + @Override public String tryGetValue(Experiment entity) { return entity.getIdentifier(); } }), - GROUP(new AbstractColumnDefinitionKind<Experiment>(ModelDataPropertyNames.GROUP_FOR_EXPERIMENT, - Dict.GROUP) + GROUP(new AbstractColumnDefinitionKind<Experiment>(Dict.GROUP) { + @Override public String tryGetValue(Experiment entity) { return entity.getProject().getGroup().getCode(); } }), - PROJECT(new AbstractColumnDefinitionKind<Experiment>(ModelDataPropertyNames.PROJECT, - Dict.PROJECT) + PROJECT(new AbstractColumnDefinitionKind<Experiment>(Dict.PROJECT) { + @Override public String tryGetValue(Experiment entity) { return entity.getProject().getCode(); } }), - REGISTRATOR(new AbstractColumnDefinitionKind<Experiment>(ModelDataPropertyNames.REGISTRATOR, - Dict.REGISTRATOR) + REGISTRATOR(new AbstractColumnDefinitionKind<Experiment>(Dict.REGISTRATOR) { + @Override public String tryGetValue(Experiment entity) { return renderRegistrator(entity); } }), - REGISTRATION_DATE(new AbstractColumnDefinitionKind<Experiment>( - ModelDataPropertyNames.REGISTRATION_DATE, Dict.REGISTRATION_DATE, 200, false) + REGISTRATION_DATE(new AbstractColumnDefinitionKind<Experiment>(Dict.REGISTRATION_DATE, 200, + false) { + @Override public String tryGetValue(Experiment entity) { return renderRegistrationDate(entity); } }), - IS_INVALID(new AbstractColumnDefinitionKind<Experiment>(ModelDataPropertyNames.IS_INVALID, - Dict.IS_INVALID, true) + IS_INVALID(new AbstractColumnDefinitionKind<Experiment>(Dict.IS_INVALID, true) { + @Override public String tryGetValue(Experiment entity) { return renderInvalidationFlag(entity); } }); - private final IColumnDefinitionKind<Experiment> columnDefinitionKind; + private final AbstractColumnDefinitionKind<Experiment> columnDefinitionKind; - private CommonExperimentColDefKind(IColumnDefinitionKind<Experiment> columnDefinitionKind) + private CommonExperimentColDefKind(AbstractColumnDefinitionKind<Experiment> columnDefinitionKind) { this.columnDefinitionKind = columnDefinitionKind; } @@ -119,7 +121,7 @@ public enum CommonExperimentColDefKind implements IColumnDefinitionKind<Experime public String id() { - return columnDefinitionKind.id(); + return name(); } public boolean isHidden() 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 84444e004a6686ba1630325e09c436e68bd43950..c583c5b5fe7caf88a5f5ca9278ebf548b6bdaecd 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 @@ -50,7 +50,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.VoidAsyncC import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.PagingToolBarWithoutRefresh; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GxtTranslator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.URLMethodWithParameters; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WindowUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; @@ -58,6 +57,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SortInfo; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SortInfo.SortDir; /** * @author Tomasz Pylak @@ -67,7 +67,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends ModelData> ex { abstract protected void showEntityViewer(M modelData); - abstract protected void listEntities(DefaultResultSetConfig<String> resultSetConfig, + abstract protected void listEntities(DefaultResultSetConfig<String, T> resultSetConfig, AbstractAsyncCallback<ResultSet<T>> callback); abstract protected List<M> createModels(List<T> entities); @@ -96,7 +96,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends ModelData> ex private String resultSetKey; // information about sorting options of the last refreshed data - private SortInfo sortInfo; + private SortInfo<T> sortInfo; private IDataRefreshCallback refreshCallback; @@ -140,8 +140,8 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends ModelData> ex public final void load(final PagingLoadConfig loadConfig, final AsyncCallback<PagingLoadResult<M>> callback) { - DefaultResultSetConfig<String> resultSetConfig = - createPagingConfig(loadConfig, resultSetKey); + DefaultResultSetConfig<String, T> resultSetConfig = + createPagingConfig(loadConfig, columns.getColumnDefs(), resultSetKey); ListEntitiesCallback listCallback = new ListEntitiesCallback(viewContext, callback, resultSetConfig); listEntities(resultSetConfig, listCallback); @@ -149,17 +149,54 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends ModelData> ex }; } - private static DefaultResultSetConfig<String> createPagingConfig(PagingLoadConfig loadConfig, + private static <T> DefaultResultSetConfig<String, T> createPagingConfig( + PagingLoadConfig loadConfig, List<IColumnDefinition<T>> availableColumns, String resultSetKey) { - DefaultResultSetConfig<String> resultSetConfig = new DefaultResultSetConfig<String>(); + DefaultResultSetConfig<String, T> resultSetConfig = new DefaultResultSetConfig<String, T>(); resultSetConfig.setLimit(loadConfig.getLimit()); resultSetConfig.setOffset(loadConfig.getOffset()); - resultSetConfig.setSortInfo(GxtTranslator.translate(loadConfig.getSortInfo())); + SortInfo<T> sortInfo = translateSortInfo(loadConfig, availableColumns); + resultSetConfig.setSortInfo(sortInfo); resultSetConfig.setResultSetKey(resultSetKey); return resultSetConfig; } + private static <T> SortInfo<T> translateSortInfo(PagingLoadConfig loadConfig, + List<IColumnDefinition<T>> availableColumns) + { + com.extjs.gxt.ui.client.data.SortInfo origSortInfo = loadConfig.getSortInfo(); + String origSortField = origSortInfo.getSortField(); + IColumnDefinition<T> sortColumnDefinition = null; + if (origSortField != null) + { + Map<String, IColumnDefinition<T>> availableColumnsMap = asColumnIdMap(availableColumns); + sortColumnDefinition = availableColumnsMap.get(origSortField); + assert sortColumnDefinition != null : "sortColumnDefinition is null"; + } + SortInfo<T> sortInfo = new SortInfo<T>(); + sortInfo.setSortField(sortColumnDefinition); + sortInfo.setSortDir(translate(origSortInfo.getSortDir())); + return sortInfo; + } + + private static SortDir translate(com.extjs.gxt.ui.client.Style.SortDir sortDir) + { + if (sortDir.equals(com.extjs.gxt.ui.client.Style.SortDir.ASC)) + { + return SortDir.ASC; + } else if (sortDir.equals(com.extjs.gxt.ui.client.Style.SortDir.DESC)) + { + return SortDir.DESC; + } else if (sortDir.equals(com.extjs.gxt.ui.client.Style.SortDir.NONE)) + { + return SortDir.NONE; + } else + { + throw new IllegalStateException("unknown sort dir: " + sortDir); + } + } + /** @return number of rows in the grid */ public int getRowNumber() { @@ -172,11 +209,11 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends ModelData> ex private final AsyncCallback<PagingLoadResult<M>> delegate; // configuration with which the listing was called - private final DefaultResultSetConfig<String> resultSetConfig; + private final DefaultResultSetConfig<String, T> resultSetConfig; public ListEntitiesCallback(final IViewContext<?> viewContext, final AsyncCallback<PagingLoadResult<M>> delegate, - final DefaultResultSetConfig<String> resultSetConfig) + final DefaultResultSetConfig<String, T> resultSetConfig) { super(viewContext); this.delegate = delegate; @@ -278,7 +315,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends ModelData> ex return getSelectedColumns(availableColumnsMap, columnModel); } - private void saveSortInfo(SortInfo newSortInfo) + private void saveSortInfo(SortInfo<T> newSortInfo) { this.sortInfo = newSortInfo; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractColumnDefinitionKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractColumnDefinitionKind.java index 81b41dddc9549e0d1dda826107563dcf935a5bcf..146099fbd73447c6c4b3ec05acea4a8364b2b8d4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractColumnDefinitionKind.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractColumnDefinitionKind.java @@ -29,11 +29,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Person; * * @author Franz-Josef Elmer */ -public abstract class AbstractColumnDefinitionKind<T> implements IColumnDefinitionKind<T> +public abstract class AbstractColumnDefinitionKind<T> { - // TODO 2008-12-08, Tomasz Pylak: refactor the code to remove this field. It has to have the - // same name as the Sample field because grid sorting was implemented in that ugly way. - private String sortField; + /** Renders the cell value of this column for the specified entity. */ + abstract public String tryGetValue(T entity); private String headerMsgKey; @@ -41,24 +40,22 @@ public abstract class AbstractColumnDefinitionKind<T> implements IColumnDefiniti private boolean isHidden; - public AbstractColumnDefinitionKind(final String sortField, final String headerMsgKey, - final int width, final boolean isHidden) + public AbstractColumnDefinitionKind(final String headerMsgKey, final int width, + final boolean isHidden) { - this.sortField = sortField; this.headerMsgKey = headerMsgKey; this.width = width; this.isHidden = isHidden; } - public AbstractColumnDefinitionKind(final String sortField, final String headerMsgKey, - final boolean isHidden) + public AbstractColumnDefinitionKind(final String headerMsgKey, final boolean isHidden) { - this(sortField, headerMsgKey, AbstractColumnDefinition.DEFAULT_COLUMN_WIDTH, isHidden); + this(headerMsgKey, AbstractColumnDefinition.DEFAULT_COLUMN_WIDTH, isHidden); } - public AbstractColumnDefinitionKind(final String sortField, final String headerMsgKey) + public AbstractColumnDefinitionKind(final String headerMsgKey) { - this(sortField, headerMsgKey, false); + this(headerMsgKey, false); } public int getWidth() @@ -77,11 +74,6 @@ public abstract class AbstractColumnDefinitionKind<T> implements IColumnDefiniti return headerMsgKey; } - public String id() - { - return sortField; // NOTE: it should be possible to use name() when sorting will be fixed - } - protected String renderRegistrationDate(final AbstractRegistrationHolder entity) { return SimpleDateRenderer.renderDate(entity.getRegistrationDate()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/IColumnDefinitionKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/IColumnDefinitionKind.java index 430fc166696659bf82750109f7c538930a430bc6..b1cb89dfad1e0a809315c110089d4a69d5c656f1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/IColumnDefinitionKind.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/IColumnDefinitionKind.java @@ -34,7 +34,6 @@ public interface IColumnDefinitionKind<T> extends IsSerializable /** Returns key in the translations dictionary. */ public String getHeaderMsgKey(); - /** Returns column ID. */ public String id(); /** Renders the cell value of this column for the specified entity. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java index 7a30439a63703a0e5e0c553c657db35da5c896ee..767b92b363bb49f2ca472e1eb22f83a96d77caa7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java @@ -60,14 +60,14 @@ public final class SampleBrowserGrid extends AbstractBrowserGrid<Sample, SampleM } @Override - protected void listEntities(DefaultResultSetConfig<String> resultSetConfig, + protected void listEntities(DefaultResultSetConfig<String, Sample> resultSetConfig, AbstractAsyncCallback<ResultSet<Sample>> callback) { copyPagingConfig(resultSetConfig); viewContext.getService().listSamples(criteria, callback); } - private void copyPagingConfig(DefaultResultSetConfig<String> resultSetConfig) + private void copyPagingConfig(DefaultResultSetConfig<String, Sample> resultSetConfig) { criteria.setLimit(resultSetConfig.getLimit()); criteria.setOffset(resultSetConfig.getOffset()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ColumnDefsAndConfigs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ColumnDefsAndConfigs.java index 7728af7e2df1f3758312ba686f772f4ea7de6892..98a32bf8711d91813041db104a40b2b9e4ceee9a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ColumnDefsAndConfigs.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ColumnDefsAndConfigs.java @@ -34,10 +34,10 @@ public class ColumnDefsAndConfigs<T> private final List<IColumnDefinition<T>> columnDefs; public static <T> ColumnDefsAndConfigs<T> create( - List<? extends IColumnDefinitionUI<T>> columnsSchema, boolean isSortable) + List<? extends IColumnDefinitionUI<T>> columnsSchema) { ColumnDefsAndConfigs<T> result = new ColumnDefsAndConfigs<T>(); - result.addColumns(columnsSchema, isSortable); + result.addColumns(columnsSchema); return result; } @@ -47,20 +47,20 @@ public class ColumnDefsAndConfigs<T> this.columnDefs = new ArrayList<IColumnDefinition<T>>(); } - public void addColumns(List<? extends IColumnDefinitionUI<T>> columnsSchema, boolean isSortable) + public void addColumns(List<? extends IColumnDefinitionUI<T>> columnsSchema) { for (IColumnDefinitionUI<T> column : columnsSchema) { - columnConfigs.add(createColumn(column, isSortable)); + columnConfigs.add(createColumn(column)); columnDefs.add(column); } } - private static <T> ColumnConfig createColumn(IColumnDefinitionUI<T> column, boolean isSortable) + private static <T> ColumnConfig createColumn(IColumnDefinitionUI<T> column) { final ColumnConfig columnConfig = new ColumnConfig(); columnConfig.setMenuDisabled(false); - columnConfig.setSortable(isSortable); + columnConfig.setSortable(true); columnConfig.setId(column.getIdentifier()); columnConfig.setHeader(column.getHeader()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/CommonSampleColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/CommonSampleColDefKind.java index ae0d1228694d5dd2b46afff12e288294b810850a..7b24f2cfd219c77f1fb11e062fdf29d8a9242a01 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/CommonSampleColDefKind.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/CommonSampleColDefKind.java @@ -18,7 +18,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample import ch.systemsx.cisd.openbis.generic.client.shared.DatabaseInstance; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.renderer.SimpleYesNoRenderer; @@ -29,9 +28,9 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample; public enum CommonSampleColDefKind implements IColumnDefinitionKind<Sample> { - DATABASE_INSTANCE(new AbstractColumnDefinitionKind<Sample>( - ModelDataPropertyNames.DATABASE_INSTANCE, Dict.DATABASE_INSTANCE, true) + DATABASE_INSTANCE(new AbstractColumnDefinitionKind<Sample>(Dict.DATABASE_INSTANCE, true) { + @Override public String tryGetValue(Sample entity) { DatabaseInstance databaseInstance = entity.getDatabaseInstance(); @@ -43,8 +42,9 @@ public enum CommonSampleColDefKind implements IColumnDefinitionKind<Sample> } }), - GROUP(new AbstractColumnDefinitionKind<Sample>(ModelDataPropertyNames.GROUP, Dict.GROUP) + GROUP(new AbstractColumnDefinitionKind<Sample>(Dict.GROUP) { + @Override public String tryGetValue(Sample entity) { final Group group = entity.getGroup(); @@ -52,62 +52,63 @@ public enum CommonSampleColDefKind implements IColumnDefinitionKind<Sample> } }), - CODE(new AbstractColumnDefinitionKind<Sample>(ModelDataPropertyNames.CODE, Dict.CODE) + CODE(new AbstractColumnDefinitionKind<Sample>(Dict.CODE) { + @Override public String tryGetValue(Sample entity) { return entity.getCode(); } }), - SAMPLE_IDENTIFIER(new AbstractColumnDefinitionKind<Sample>( - ModelDataPropertyNames.SAMPLE_IDENTIFIER, Dict.SAMPLE_IDENTIFIER, 150, true) + SAMPLE_IDENTIFIER(new AbstractColumnDefinitionKind<Sample>(Dict.SAMPLE_IDENTIFIER, 150, true) { + @Override public String tryGetValue(Sample entity) { return entity.getIdentifier(); } }), - IS_INSTANCE_SAMPLE(new AbstractColumnDefinitionKind<Sample>( - ModelDataPropertyNames.IS_INSTANCE_SAMPLE, Dict.IS_INSTANCE_SAMPLE, true) + IS_INSTANCE_SAMPLE(new AbstractColumnDefinitionKind<Sample>(Dict.IS_INSTANCE_SAMPLE, true) { + @Override public String tryGetValue(Sample entity) { return SimpleYesNoRenderer.render(entity.getDatabaseInstance() != null); } }), - REGISTRATOR(new AbstractColumnDefinitionKind<Sample>(ModelDataPropertyNames.REGISTRATOR, - Dict.REGISTRATOR, true) + REGISTRATOR(new AbstractColumnDefinitionKind<Sample>(Dict.REGISTRATOR, true) { + @Override public String tryGetValue(Sample entity) { return renderRegistrator(entity); } }), - REGISTRATION_DATE(new AbstractColumnDefinitionKind<Sample>( - ModelDataPropertyNames.REGISTRATION_DATE, Dict.REGISTRATION_DATE, 200, true) + REGISTRATION_DATE(new AbstractColumnDefinitionKind<Sample>(Dict.REGISTRATION_DATE, 200, true) { + @Override public String tryGetValue(Sample entity) { return renderRegistrationDate(entity); } }), - IS_INVALID(new AbstractColumnDefinitionKind<Sample>(ModelDataPropertyNames.IS_INVALID, - Dict.IS_INVALID, true) + IS_INVALID(new AbstractColumnDefinitionKind<Sample>(Dict.IS_INVALID, true) { + @Override public String tryGetValue(Sample entity) { return renderInvalidationFlag(entity); } }), - PROJECT_FOR_SAMPLE(new AbstractColumnDefinitionKind<Sample>( - ModelDataPropertyNames.PROJECT_FOR_SAMPLE, Dict.PROJECT) + PROJECT_FOR_SAMPLE(new AbstractColumnDefinitionKind<Sample>(Dict.PROJECT) { + @Override public String tryGetValue(Sample entity) { final Experiment exp = tryToGetExperiment(entity); @@ -115,9 +116,9 @@ public enum CommonSampleColDefKind implements IColumnDefinitionKind<Sample> } }), - EXPERIMENT_FOR_SAMPLE(new AbstractColumnDefinitionKind<Sample>( - ModelDataPropertyNames.EXPERIMENT_FOR_SAMPLE, Dict.EXPERIMENT) + EXPERIMENT_FOR_SAMPLE(new AbstractColumnDefinitionKind<Sample>(Dict.EXPERIMENT) { + @Override public String tryGetValue(Sample entity) { final Experiment exp = tryToGetExperiment(entity); @@ -126,9 +127,9 @@ public enum CommonSampleColDefKind implements IColumnDefinitionKind<Sample> }), EXPERIMENT_IDENTIFIER_FOR_SAMPLE(new AbstractColumnDefinitionKind<Sample>( - ModelDataPropertyNames.EXPERIMENT_IDENTIFIER_FOR_SAMPLE, Dict.EXPERIMENT_IDENTIFIER, - 200, true) + Dict.EXPERIMENT_IDENTIFIER, 200, true) { + @Override public String tryGetValue(Sample entity) { final Experiment exp = tryToGetExperiment(entity); @@ -136,9 +137,9 @@ public enum CommonSampleColDefKind implements IColumnDefinitionKind<Sample> } }); - private final IColumnDefinitionKind<Sample> columnDefinitionKind; + private final AbstractColumnDefinitionKind<Sample> columnDefinitionKind; - private CommonSampleColDefKind(IColumnDefinitionKind<Sample> columnDefinitionKind) + private CommonSampleColDefKind(AbstractColumnDefinitionKind<Sample> columnDefinitionKind) { this.columnDefinitionKind = columnDefinitionKind; } @@ -155,7 +156,7 @@ public enum CommonSampleColDefKind implements IColumnDefinitionKind<Sample> public String id() { - return columnDefinitionKind.id(); + return name(); } public boolean isHidden() diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleModel.java index 8481252b43a31c8ddae582b1ff468adc69ec300c..d2ef4ad0c1d8b2b0db8919fd64b22586d6698b50 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleModel.java @@ -54,16 +54,16 @@ public final class SampleModel extends AbstractEntityModel<Sample> assert messageProvider != null : "message provider needed to create table headers"; ColumnDefsAndConfigs<Sample> columns = new ColumnDefsAndConfigs<Sample>(); - columns.addColumns(createCommonColumnsSchema(messageProvider), true); + columns.addColumns(createCommonColumnsSchema(messageProvider)); if (selectedTypeOrNull != null) { List<IColumnDefinitionUI<Sample>> parentColumnsSchema = createParentColumnsSchema(messageProvider, selectedTypeOrNull); - columns.addColumns(parentColumnsSchema, false); + columns.addColumns(parentColumnsSchema); List<IColumnDefinitionUI<Sample>> propertyColumnsSchema = createPropertyColumnsSchema(selectedTypeOrNull); - columns.addColumns(propertyColumnsSchema, false); + columns.addColumns(propertyColumnsSchema); } return columns; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GxtTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GxtTranslator.java deleted file mode 100644 index 0f33c112415c0e1a341a2cd8d7bf84bb561681be..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GxtTranslator.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2008 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.generic.client.web.client.application.util; - -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SortInfo; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SortInfo.SortDir; - -/** - * A utility class which converts <i>GXT</i> specific classes into our <i>DTOs</i>. - * - * @author Christian Ribeaud - */ -public final class GxtTranslator -{ - - private GxtTranslator() - { - // Can not be instantiated. - } - - public final static SortInfo translate(final com.extjs.gxt.ui.client.data.SortInfo sortInfo) - { - final SortInfo result = new SortInfo(); - result.setSortField(sortInfo.getSortField()); - result.setSortDir(SortDir.valueOf(sortInfo.getSortDir().name())); - return result; - } -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DefaultResultSetConfig.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DefaultResultSetConfig.java index ced18bd4d9c06eb7eafc893f92c994699fcac531..a7749c9cbc999f898a6c6f908ba845ce1d7724d5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DefaultResultSetConfig.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DefaultResultSetConfig.java @@ -23,13 +23,13 @@ import com.google.gwt.user.client.rpc.IsSerializable; * * @author Christian Ribeaud */ -public class DefaultResultSetConfig<K> implements IResultSetConfig<K>, IsSerializable +public class DefaultResultSetConfig<K, T> implements IResultSetConfig<K, T>, IsSerializable { private int limit = NO_LIMIT; private int offset = 0; - private SortInfo sortInfo = new SortInfo(); + private SortInfo<T> sortInfo = new SortInfo<T>(); /** * The result set key. @@ -49,7 +49,7 @@ public class DefaultResultSetConfig<K> implements IResultSetConfig<K>, IsSeriali this.offset = offset; } - public final void setSortInfo(final SortInfo sortInfo) + public final void setSortInfo(final SortInfo<T> sortInfo) { this.sortInfo = sortInfo; } @@ -73,7 +73,7 @@ public class DefaultResultSetConfig<K> implements IResultSetConfig<K>, IsSeriali return offset; } - public final SortInfo getSortInfo() + public final SortInfo<T> getSortInfo() { return sortInfo; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/IResultSetConfig.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/IResultSetConfig.java index fc28fa5aaf99574de7f37b74fab866487eeee65a..25d68941dfec78b2f634cbb8714108685dd63038 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/IResultSetConfig.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/IResultSetConfig.java @@ -26,7 +26,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSet; * * @author Christian Ribeaud */ -public interface IResultSetConfig<K> extends IResultSetKeyHolder<K> +public interface IResultSetConfig<K, T> extends IResultSetKeyHolder<K> { public static final int NO_LIMIT = -1; @@ -48,5 +48,5 @@ public interface IResultSetConfig<K> extends IResultSetKeyHolder<K> /** * Returns the sort info. */ - public SortInfo getSortInfo(); + public SortInfo<T> getSortInfo(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListExperimentsCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListExperimentsCriteria.java index b7b7ab70fa0d7cc59322b75bc2ab025bfb8c3237..a44374d9e36be5fc86dfc02b930782c96b637989 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListExperimentsCriteria.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListExperimentsCriteria.java @@ -25,8 +25,8 @@ import ch.systemsx.cisd.openbis.generic.client.shared.ExperimentType; * * @author Izabela Adamczyk */ -public final class ListExperimentsCriteria extends DefaultResultSetConfig<String> implements - IsSerializable +public final class ListExperimentsCriteria extends DefaultResultSetConfig<String, Experiment> + implements IsSerializable { private ExperimentType experimentType; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListSampleCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListSampleCriteria.java index 583e1936a21a12f830a4f1ef0235f16a986926ed..ad178d3b7123d396839045321c0e4f4bbb17fe4e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListSampleCriteria.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListSampleCriteria.java @@ -30,7 +30,7 @@ import ch.systemsx.cisd.openbis.generic.client.shared.SampleType; * @author Izabela Adamczyk * @author Tomasz Pylak */ -public final class ListSampleCriteria extends DefaultResultSetConfig<String> implements +public final class ListSampleCriteria extends DefaultResultSetConfig<String, Sample> implements IsSerializable { // --------- filter 1 fields diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SortInfo.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SortInfo.java index 59734246c457c25401d55ebc22f6558c7fa3fce4..88c4167e041984f6cdf67f70920fadc766ac8f3f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SortInfo.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SortInfo.java @@ -23,18 +23,18 @@ import com.google.gwt.user.client.rpc.IsSerializable; * * @author Christian Ribeaud */ -public final class SortInfo implements IsSerializable +public final class SortInfo<T> implements IsSerializable { - private String sortField; + private IColumnDefinition<T> sortField; private SortDir sortDir = SortDir.NONE; - public final String getSortField() + public final IColumnDefinition<T> getSortField() { return sortField; } - public final void setSortField(final String sortField) + public final void setSortField(final IColumnDefinition<T> sortField) { this.sortField = sortField; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/TableExportCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/TableExportCriteria.java index 2c9e55268c12aa52340142c49e6c3437c711efb8..b2bbc4f45efd4a2eec709f9679468143139b8fd4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/TableExportCriteria.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/TableExportCriteria.java @@ -32,7 +32,7 @@ public class TableExportCriteria<T/* exported entity */> implements IResultSetKe // a key at which data are stored in the server cache private String resultSetKey; - private SortInfo sortInfo = new SortInfo(); + private SortInfo<T> sortInfo = new SortInfo<T>(); // which columns should be exported private List<IColumnDefinition<T>> columnDefs; @@ -42,7 +42,7 @@ public class TableExportCriteria<T/* exported entity */> implements IResultSetKe { } - public TableExportCriteria(String resultSetKey, SortInfo sortInfo, + public TableExportCriteria(String resultSetKey, SortInfo<T> sortInfo, List<IColumnDefinition<T>> columnDefs) { this.resultSetKey = resultSetKey; @@ -55,7 +55,7 @@ public class TableExportCriteria<T/* exported entity */> implements IResultSetKe return resultSetKey; } - public SortInfo getSortInfo() + public SortInfo<T> getSortInfo() { return sortInfo; } 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 c2de30e455670e9477823e97697cdf1ef3b76af5..391c6dd136c5b081c83552ff1bd9371029920f5e 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 @@ -143,10 +143,10 @@ public final class CommonClientService extends AbstractClientService implements return entities.getList(); } - private static <T> IResultSetConfig<String> createExportListCriteria( + private static <T> IResultSetConfig<String, T> createExportListCriteria( final TableExportCriteria<T> exportCriteria) { - final DefaultResultSetConfig<String> criteria = new DefaultResultSetConfig<String>(); + final DefaultResultSetConfig<String, T> criteria = new DefaultResultSetConfig<String, T>(); criteria.setLimit(IResultSetConfig.NO_LIMIT); criteria.setOffset(IResultSetConfig.FIRST_ELEM_OFFSET); criteria.setSortInfo(exportCriteria.getSortInfo()); @@ -480,7 +480,7 @@ public final class CommonClientService extends AbstractClientService implements public final ResultSet<MatchingEntity> listMatchingEntities( final SearchableEntity searchableEntityOrNull, final String queryText, - final IResultSetConfig<String> resultSetConfig) + final IResultSetConfig<String, MatchingEntity> resultSetConfig) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { try 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 7c28ed3da4a721e6fa851e967750149a1ddbdedf..f8ed9d399be860643864d7a58da98e581bf158de 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 @@ -30,6 +30,7 @@ import org.apache.log4j.Logger; import ch.rinn.restrictions.Private; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SortInfo; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SortInfo.SortDir; @@ -52,12 +53,9 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se @Private final Map<K, List<?>> results = new HashMap<K, List<?>>(); - private final ComparatorRegistry comparatorRegistry; - public CachedResultSetManager(final IResultSetKeyGenerator<K> resultSetKeyProvider) { this.resultSetKeyProvider = resultSetKeyProvider; - comparatorRegistry = new ComparatorRegistry(); } @SuppressWarnings("unchecked") @@ -66,8 +64,7 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se return (List<T>) list; } - @SuppressWarnings("unchecked") - private final <T> void sortData(final List<T> data, final SortInfo sortInfo) + private final <T> void sortData(final List<T> data, final SortInfo<T> sortInfo) { assert data != null : "Unspecified data."; assert sortInfo != null : "Unspecified sort information."; @@ -76,15 +73,41 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se return; } final SortDir sortDir = sortInfo.getSortDir(); - final String sortField = sortInfo.getSortField(); + final IColumnDefinition<T> sortField = sortInfo.getSortField(); if (sortDir == SortDir.NONE || sortField == null) { return; } - final Comparator<T> fieldComparator = - comparatorRegistry.getComparator((Class<T>) data.get(0).getClass(), sortField); - Collections.sort(data, sortDir == SortDir.ASC ? fieldComparator : new ReverseComparator( - fieldComparator)); + Comparator<T> comparator = createComparator(sortDir, sortField); + Collections.sort(data, comparator); + } + + private static <T> Comparator<T> createComparator(final SortDir sortDir, + final IColumnDefinition<T> sortField) + { + Comparator<T> comparator = new Comparator<T>() + { + + public int compare(T o1, T o2) + { + String v1 = sortField.getValue(o1); + String v2 = sortField.getValue(o2); + return v1.compareTo(v2); + } + }; + return applySortDir(sortDir, comparator); + } + + @SuppressWarnings("unchecked") + private static <T> Comparator<T> applySortDir(final SortDir sortDir, Comparator<T> comparator) + { + if (sortDir == SortDir.DESC) + { + return new ReverseComparator(comparator); + } else + { + return comparator; + } } @Private @@ -124,7 +147,7 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se // public final synchronized <T> IResultSet<K, T> getResultSet( - final IResultSetConfig<K> resultConfig, final IOriginalDataProvider<T> dataProvider) + final IResultSetConfig<K, T> resultConfig, final IOriginalDataProvider<T> dataProvider) { assert resultConfig != null : "Unspecified result configuration"; assert dataProvider != null : "Unspecified data retriever"; @@ -146,7 +169,7 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se final int size = data.size(); final int offset = getOffset(size, resultConfig.getOffset()); final int limit = getLimit(size, resultConfig.getLimit(), offset); - final SortInfo sortInfo = resultConfig.getSortInfo(); + final SortInfo<T> sortInfo = resultConfig.getSortInfo(); sortData(data, sortInfo); final List<T> list = subList(data, offset, limit); return new DefaultResultSet<K, T>(dataKey, list, size); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ComparatorRegistry.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ComparatorRegistry.java deleted file mode 100644 index b5e039623fbeb65b1bb249d6e8c5f829661d6846..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ComparatorRegistry.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2008 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 java.io.Serializable; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; - -import ch.systemsx.cisd.common.utilities.FieldComparator; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample; - -/** - * A registry of {@link Comparator} implementation used by {@link IResultSetManager} implementation - * to sort the data. - * - * @author Christian Ribeaud - */ -final class ComparatorRegistry implements Serializable -{ - private static final long serialVersionUID = 1L; - - private final Map<Class<?>, IFieldComparator<?>> comparators = - new HashMap<Class<?>, IFieldComparator<?>>(); - - ComparatorRegistry() - { - comparators.put(Sample.class, new SampleComparator()); - } - - private final <T> Comparator<T> getDefaultComparator(final String fieldName) - { - return new FieldComparator<T>(fieldName, '_'); - } - - @SuppressWarnings("unchecked") - private final <T> Comparator<T> cast(final IFieldComparator<?> comparator) - { - return (Comparator<T>) comparator; - } - - final <T> Comparator<T> getComparator(final Class<T> clazz, final String fieldName) - { - assert clazz != null : "Unspecified class."; - assert fieldName != null : "Unspecified field name."; - final IFieldComparator<?> comparator = comparators.get(clazz); - if (comparator == null) - { - return getDefaultComparator(fieldName); - } - comparator.setFieldName(fieldName); - return cast(comparator); - } -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IResultSetManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IResultSetManager.java index 1ebfd07a15b72df41d7a60b6079abbd8157937ea..bbab868cdb9747385a08c6b02eb1687fb7eaf9db 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IResultSetManager.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IResultSetManager.java @@ -28,14 +28,13 @@ public interface IResultSetManager<K> { /** - * Produces a {@link IResultSet} from given <var>resultConfig</var> and given - * <var>dataProvider</var>. + * Produces a {@link IResultSet} from given <var>resultConfig</var> and given <var>dataProvider</var>. * <p> * In case of cached data, the {@link IOriginalDataProvider} implementation is only used in the * first call, when the full data are not already there. * </p> */ - public <T> IResultSet<K, T> getResultSet(final IResultSetConfig<K> resultConfig, + public <T> IResultSet<K, T> getResultSet(final IResultSetConfig<K, T> resultConfig, final IOriginalDataProvider<T> dataProvider) throws UserFailureException; /** diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleComparator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleComparator.java deleted file mode 100644 index 95d655472de2cc3c6ab85d6df082785887c3bf8f..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleComparator.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2008 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 org.apache.commons.collections.comparators.BooleanComparator; - -import ch.systemsx.cisd.common.utilities.FieldComparator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample; - -/** - * A {@link IFieldComparator} suitable for {@link Sample}. - * - * @author Christian Ribeaud - */ -final class SampleComparator implements IFieldComparator<Sample> -{ - private FieldComparator<Sample> fieldComparator; - - private String fieldName; - - private final int compareBoolean(final boolean b1, final boolean b2) - { - return BooleanComparator.getTrueFirstComparator().compare(b1, b2); - } - - // - // IFieldComparator - // - - public final void setFieldName(final String fieldName) - { - assert fieldName != null : "Unspecified field name."; - this.fieldName = fieldName; - fieldComparator = new FieldComparator<Sample>(fieldName, '_'); - } - - public final int compare(final Sample o1, final Sample o2) - { - assert fieldName != null : "Field name not specified."; - if (fieldName.equals(ModelDataPropertyNames.IS_GROUP_SAMPLE)) - { - final boolean b1 = o1.getGroup() != null; - final boolean b2 = o2.getGroup() != null; - return compareBoolean(b1, b2); - } else if (fieldName.equals(ModelDataPropertyNames.IS_INSTANCE_SAMPLE)) - { - final boolean b1 = o1.getDatabaseInstance() != null; - final boolean b2 = o2.getDatabaseInstance() != null; - return compareBoolean(b1, b2); - } else if (fieldName.equals(ModelDataPropertyNames.IS_INVALID)) - { - final boolean b1 = o1.getInvalidation() != null; - final boolean b2 = o2.getInvalidation() != null; - return compareBoolean(b1, b2); - } - return fieldComparator.compare(o1, o2); - } -} \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentSamplesSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentSamplesSection.java index 17e967271eccb2068d331c9daccb65464f92aaee..32a87ef2ffea767603d439cf0b9675669ab3dc70 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentSamplesSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentSamplesSection.java @@ -33,6 +33,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.YesNoRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnConfigFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.CommonSampleColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.SampleModel; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleCriteria; @@ -60,25 +61,33 @@ public class ExperimentSamplesSection extends AbstractExperimentTableSection<Sam protected ColumnModel createColumnModel() { final List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); - final ColumnConfig codeColumn = ColumnConfigFactory.createCodeColumnConfig(viewContext); + final ColumnConfig codeColumn = + ColumnConfigFactory.createCodeColumnConfig(viewContext, CommonSampleColDefKind.CODE + .id()); configs.add(codeColumn); configs.add(ColumnConfigFactory.createDefaultColumnConfig(viewContext .getMessage(Dict.SAMPLE_TYPE), ModelDataPropertyNames.SAMPLE_TYPE)); - configs.add(ColumnConfigFactory.createDefaultColumnConfig(viewContext - .getMessage(Dict.GROUP), ModelDataPropertyNames.GROUP)); + configs.add(createColumnConfig(Dict.GROUP, CommonSampleColDefKind.GROUP)); final ColumnConfig isInvalidColumn = - ColumnConfigFactory.createDefaultColumnConfig(viewContext - .getMessage(Dict.IS_INVALID), ModelDataPropertyNames.IS_INVALID); + createColumnConfig(Dict.IS_INVALID, CommonSampleColDefKind.IS_INVALID); isInvalidColumn.setRenderer(new YesNoRenderer()); configs.add(isInvalidColumn); - configs.add(ColumnConfigFactory.createRegistrationDateColumnConfig(viewContext)); - configs.add(ColumnConfigFactory.createRegistratorColumnConfig(viewContext)); + configs.add(ColumnConfigFactory.createRegistrationDateColumnConfig(viewContext, + CommonSampleColDefKind.REGISTRATION_DATE.id())); + configs.add(ColumnConfigFactory.createRegistratorColumnConfig(viewContext, + CommonSampleColDefKind.REGISTRATOR.id())); return new ColumnModel(configs); } + private ColumnConfig createColumnConfig(String messageKey, CommonSampleColDefKind columnKind) + { + return ColumnConfigFactory.createDefaultColumnConfig(viewContext.getMessage(messageKey), + columnKind.id()); + } + @Override protected RpcProxy<BaseListLoadConfig, BaseListLoadResult<SampleModel>> createRpcProxy() { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java index 4ec85cdcfa64f9ccb5efbfa1ccef156a66ac8843..af3239d15550546a882721772c7ffe4adf7126dc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java @@ -59,6 +59,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Abstrac import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnConfigFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.PropertyValueRenderers; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property.PropertyGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.CommonSampleColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.SampleModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Invalidation; @@ -212,9 +213,12 @@ public final class GenericSampleViewer extends AbstractViewer<IGenericClientServ private final ColumnModel createPartOfSamplesColumnModel() { final List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); - configs.add(ColumnConfigFactory.createCodeColumnConfig(viewContext)); - configs.add(ColumnConfigFactory.createRegistrationDateColumnConfig(viewContext)); - configs.add(ColumnConfigFactory.createRegistratorColumnConfig(viewContext)); + configs.add(ColumnConfigFactory.createCodeColumnConfig(viewContext, + CommonSampleColDefKind.CODE.id())); + configs.add(ColumnConfigFactory.createRegistrationDateColumnConfig(viewContext, + CommonSampleColDefKind.REGISTRATION_DATE.id())); + configs.add(ColumnConfigFactory.createRegistratorColumnConfig(viewContext, + CommonSampleColDefKind.REGISTRATOR.id())); return new ColumnModel(configs); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchTest.java index 03780ef6441c91483e4d48af268a261f67fcd41e..cd8865b724aa2fd9b6a91db7320610139deb87f7 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchTest.java @@ -16,8 +16,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application; -import static ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames.IDENTIFIER; - +import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.MatchingEntityModel.MatchingEntityColumnKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.CheckTableCommand; @@ -35,19 +34,24 @@ public class SearchTest extends AbstractGWTTestCase final CheckTableCommand checkTableCommand = new CheckTableCommand(MatchingEntitiesPanel.GRID_ID, MatchingEntitiesPanel.ListEntitiesCallback.class).expectedSize(2); - checkTableCommand.expectedRow(new Row().withCell(IDENTIFIER, "CISD:/MP")); - checkTableCommand.expectedRow(new Row().withCell(IDENTIFIER, "CISD:/CISD/EMPTY-MP")); + checkTableCommand.expectedRow(createRow("CISD:/MP")); + checkTableCommand.expectedRow(createRow("CISD:/CISD/EMPTY-MP")); return checkTableCommand; } + private static Row createRow(String identifier) + { + return new Row().withCell(MatchingEntityColumnKind.IDENTIFIER.id(), identifier); + } + private final static CheckTableCommand createCheckTableCommandForExperiment() { final CheckTableCommand checkTableCommand = new CheckTableCommand(MatchingEntitiesPanel.GRID_ID, MatchingEntitiesPanel.ListEntitiesCallback.class).expectedSize(5); - checkTableCommand.expectedRow(new Row().withCell(IDENTIFIER, "CISD:/CISD/NEMO/EXP10")); - checkTableCommand.expectedRow(new Row().withCell(IDENTIFIER, "CISD:/CISD/NEMO/EXP11")); - checkTableCommand.expectedRow(new Row().withCell(IDENTIFIER, "CISD:/CISD/NEMO/EXP1")); + checkTableCommand.expectedRow(createRow("CISD:/CISD/NEMO/EXP10")); + checkTableCommand.expectedRow(createRow("CISD:/CISD/NEMO/EXP11")); + checkTableCommand.expectedRow(createRow("CISD:/CISD/NEMO/EXP1")); return checkTableCommand; } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRow.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRow.java index a592915f882d8a3bed18ba1c533c7f9e865ab510..58193207b837050eab548b92567466568aa2be24 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRow.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRow.java @@ -16,7 +16,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.columns.CommonExperimentColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.renderer.SimpleYesNoRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.util.RendererTestUtil; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row; @@ -34,14 +34,14 @@ public class ExperimentRow extends Row { super(); this.code = code; - withCell(ModelDataPropertyNames.CODE, code); + withCell(CommonExperimentColDefKind.CODE.id(), code); } public ExperimentRow invalid() { withInvalidation(true); // overwrite previous code - withCell(ModelDataPropertyNames.CODE, RendererTestUtil.invalidCode(code)); + withCell(CommonExperimentColDefKind.CODE.id(), RendererTestUtil.invalidCode(code)); return this; } @@ -53,7 +53,7 @@ public class ExperimentRow extends Row private void withInvalidation(boolean isInvalid) { - withCell(ModelDataPropertyNames.IS_INVALID, SimpleYesNoRenderer.render(isInvalid)); + withCell(CommonExperimentColDefKind.IS_INVALID.id(), SimpleYesNoRenderer.render(isInvalid)); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ShowExperiment.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ShowExperiment.java index adb9764a9c55bd51f03d05da4b3a826aed6a5392..fdaf864496426ea415d5d37ed19a4a5a019ca613 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ShowExperiment.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ShowExperiment.java @@ -23,7 +23,7 @@ import com.extjs.gxt.ui.client.widget.grid.Grid; import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ExperimentModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.columns.CommonExperimentColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractDefaultTestCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.GWTTestUtil; @@ -57,7 +57,7 @@ public class ShowExperiment extends AbstractDefaultTestCommand for (int i = 0; i < store.getCount(); i++) { final ExperimentModel row = store.getAt(i); - if (code.equals(row.get(ModelDataPropertyNames.CODE))) + if (code.equals(row.get(CommonExperimentColDefKind.CODE.id()))) { final GridEvent gridEvent = new GridEvent(table); gridEvent.rowIndex = i; 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 7e5fdfc5d7f8840d89372403e52043c21fe37b0a..61ad2df8f485ad0ba65c8ab9099cfec0c7bd3aed 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 @@ -47,9 +47,9 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.CacheManager @Friend(toClasses = CachedResultSetManager.class) public final class CachedResultSetManagerTest { - private IResultSetConfig<String> resultSetConfig; + private IResultSetConfig<String, String> resultSetConfig; - private IOriginalDataProvider<?> originalDataProvider; + private IOriginalDataProvider<String> originalDataProvider; private IResultSetManager<String> resultSetManager; @@ -57,9 +57,9 @@ public final class CachedResultSetManagerTest private final void allowResultSetCreation(final Expectations expectations) { - final SortInfo sortInfo = new SortInfo(); + final SortInfo<String> sortInfo = new SortInfo<String>(); sortInfo.setSortDir(SortDir.NONE); - sortInfo.setSortField("code"); + sortInfo.setSortField(null); expectations.one(resultSetConfig).getOffset(); expectations.will(Expectations.returnValue(1)); @@ -97,8 +97,7 @@ public final class CachedResultSetManagerTest private final static IResultSetManager<String> createResultSetManager() { final CachedResultSetManager<String> resultSetManager = - new CachedResultSetManager<String>( - new TokenBasedResultSetKeyGenerator()); + new CachedResultSetManager<String>(new TokenBasedResultSetKeyGenerator()); resultSetManager.results.put("1", createSampleList()); return resultSetManager; } @@ -165,7 +164,7 @@ public final class CachedResultSetManagerTest allowResultSetCreation(this); } }); - final IResultSet<String, ?> resultSet = + final IResultSet<String, String> resultSet = resultSetManager.getResultSet(resultSetConfig, originalDataProvider); assertEquals(0, resultSet.getList().size()); assertEquals(0, resultSet.getTotalLength());