From 73195351f17b3a9ebf149d47e3b10f7a058fd3f7 Mon Sep 17 00:00:00 2001 From: tpylak <tpylak> Date: Fri, 30 Jan 2009 13:44:43 +0000 Subject: [PATCH] LMS-715 Browsing projects. Generic control for simple browsers without toolbar. Simplification of ModelData for generic browser. SVN: 9624 --- .../client/shared/EntityTypePropertyType.java | 13 + .../shared/ExperimentTypePropertyType.java | 5 + .../shared/MaterialTypePropertyType.java | 5 + .../client/shared/SampleTypePropertyType.java | 6 + .../web/client/ICommonClientService.java | 89 +++-- .../web/client/ICommonClientServiceAsync.java | 74 +++-- .../application/MatchingEntitiesPanel.java | 6 +- .../framework/ComponentProvider.java | 16 +- .../model/AbstractEntityModel.java | 9 +- .../client/application/model/ETPTModel.java | 51 +-- .../application/model/ExperimentModel.java | 13 +- .../model/MatchingEntityModel.java | 12 - .../model/ModelDataPropertyNames.java | 22 -- .../application/model/ProjectModel.java | 39 +-- .../application/model/PropertyTypeModel.java | 31 +- .../application/ui/data/ExternalDataGrid.java | 6 +- .../ui/experiment/ExperimentBrowserGrid.java | 8 +- .../ui/experiment/ProjectSelectionWidget.java | 51 ++- .../ui/grid/AbstractBrowserGrid.java | 13 +- .../ui/grid/AbstractColumnDefinitionKind.java | 2 + .../ui/grid/AbstractSimpleBrowserGrid.java | 71 ++++ .../ColumnDefsAndConfigs.java | 3 +- .../ui/project/ProjectBrowser.java | 85 ----- .../ui/project/ProjectColDefKind.java | 106 ++++++ .../application/ui/project/ProjectGrid.java | 91 +++--- .../PropertyTypeAssignmentBrowser.java | 91 ------ .../PropertyTypeAssignmentColDefKind.java | 100 ++++++ .../PropertyTypeAssignmentGrid.java | 92 +++--- .../ui/property_type/PropertyTypeGrid.java | 43 +-- .../PropertyTypeSelectionWidget.java | 36 ++- .../ui/sample/SampleBrowserGrid.java | 8 +- .../columns/CommonSampleColDefKind.java | 3 +- .../ui/sample/columns/SampleModel.java | 1 + .../client/dto/DefaultResultSetConfig.java | 5 + .../web/server/CommonClientService.java | 306 ++++++++++-------- .../server/translator/ProjectTranslator.java | 13 + .../translator/PropertyTypeTranslator.java | 13 + .../EntityTypePropertyTypeAssignmentTest.java | 27 +- .../application/ExperimentBrowserTest.java | 4 +- .../application/ProjectRegistrationTest.java | 6 +- .../PropertyTypeAssignmentBrowserTest.java | 9 +- .../ui/experiment/ListExperiments.java | 3 +- .../ui/project/CheckProjectTable.java | 2 +- .../CheckPropertyTypeAssignmentTable.java | 4 +- .../FillPropertyTypeAssignmentForm.java | 19 +- ...nericExperimentAttachmentDownloadTest.java | 2 +- .../GenericExperimentViewerTest.java | 4 +- 47 files changed, 882 insertions(+), 736 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java rename openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/{sample/columns => grid}/ColumnDefsAndConfigs.java (95%) delete mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectBrowser.java create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectColDefKind.java delete mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentBrowser.java create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentColDefKind.java diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/EntityTypePropertyType.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/EntityTypePropertyType.java index 4d0bae97b19..716e08c1094 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/EntityTypePropertyType.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/EntityTypePropertyType.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.client.shared; import com.google.gwt.user.client.rpc.IsSerializable; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.EntityKind; /** * An <i>abstract</i> entity type property type. @@ -27,6 +28,8 @@ import com.google.gwt.user.client.rpc.IsSerializable; public abstract class EntityTypePropertyType<T extends EntityType> implements IsSerializable, Comparable<EntityTypePropertyType<T>> { + private EntityKind entityKind; + private boolean mandatory; private boolean managedInternally; @@ -35,6 +38,16 @@ public abstract class EntityTypePropertyType<T extends EntityType> implements Is private T entityType; + public EntityTypePropertyType(EntityKind entityKind) + { + this.entityKind = entityKind; + } + + public EntityKind getEntityKind() + { + return entityKind; + } + public final boolean isMandatory() { return mandatory; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/ExperimentTypePropertyType.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/ExperimentTypePropertyType.java index b11b11a47f5..7515b37f3d2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/ExperimentTypePropertyType.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/ExperimentTypePropertyType.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.client.shared; import com.google.gwt.user.client.rpc.IsSerializable; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.EntityKind; /** * The {@link EntityTypePropertyType} extension for <i>Experiment Type</i>. @@ -27,4 +28,8 @@ import com.google.gwt.user.client.rpc.IsSerializable; public class ExperimentTypePropertyType extends EntityTypePropertyType<ExperimentType> implements IsSerializable { + public ExperimentTypePropertyType() + { + super(EntityKind.EXPERIMENT); + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/MaterialTypePropertyType.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/MaterialTypePropertyType.java index c5dd8161446..ddcbd824ad4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/MaterialTypePropertyType.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/MaterialTypePropertyType.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.client.shared; import com.google.gwt.user.client.rpc.IsSerializable; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.EntityKind; /** * The {@link EntityTypePropertyType} extension for <i>Material Type</i>. @@ -27,4 +28,8 @@ import com.google.gwt.user.client.rpc.IsSerializable; public class MaterialTypePropertyType extends EntityTypePropertyType<MaterialType> implements IsSerializable { + public MaterialTypePropertyType() + { + super(EntityKind.MATERIAL); + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/SampleTypePropertyType.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/SampleTypePropertyType.java index 54199578117..a6a8692368d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/SampleTypePropertyType.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/shared/SampleTypePropertyType.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.client.shared; import com.google.gwt.user.client.rpc.IsSerializable; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.EntityKind; /** * The {@link EntityTypePropertyType} extension for <i>Sample Type</i>. @@ -27,6 +28,11 @@ import com.google.gwt.user.client.rpc.IsSerializable; public class SampleTypePropertyType extends EntityTypePropertyType<SampleType> implements IsSerializable { + public SampleTypePropertyType() + { + super(EntityKind.SAMPLE); + } + private boolean isDisplayed; public final boolean isDisplayed() 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 bb0e02343bc..85203fae2f1 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 @@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client; import java.util.List; import ch.systemsx.cisd.openbis.generic.client.shared.DataType; +import ch.systemsx.cisd.openbis.generic.client.shared.EntityTypePropertyType; import ch.systemsx.cisd.openbis.generic.client.shared.ExperimentType; import ch.systemsx.cisd.openbis.generic.client.shared.Person; import ch.systemsx.cisd.openbis.generic.client.shared.PropertyType; @@ -115,86 +116,104 @@ public interface ICommonClientService extends IClientService throws UserFailureException; /** - * Returns a key which can be used be the export servlet (and eventually - * {@link #getExportTable(String)}) to reference the export criteria in an easy way. + * Returns a list of experiments. + */ + public ResultSet<Experiment> listExperiments(final ListExperimentsCriteria criteria) + throws UserFailureException; + + /** + * Like {@link #prepareExportSamples(TableExportCriteria)}, but for experiments. */ + public String prepareExportExperiments(final TableExportCriteria<Experiment> criteria) throws UserFailureException; /** - * Returns a key which can be used be the export servlet (and eventually - * {@link #getExportTable(String)}) to reference the export criteria in an easy way. + * Lists the entities matching the search. */ - public String prepareExportMatchingEntities(final TableExportCriteria<MatchingEntity> criteria) + public ResultSet<MatchingEntity> listMatchingEntities( + final SearchableEntity searchableEntityOrNull, final String queryText, + final IResultSetConfig<String, MatchingEntity> resultSetConfig) throws UserFailureException; /** - * Returns a key which can be used be the export servlet (and eventually - * {@link #getExportTable(String)}) to reference the export criteria in an easy way. + * Like {@link #prepareExportSamples(TableExportCriteria)}, but for matching entites. */ - public String prepareExportPropertyTypes(final TableExportCriteria<PropertyType> criteria) + public String prepareExportMatchingEntities(final TableExportCriteria<MatchingEntity> criteria) throws UserFailureException; /** - * Assumes that preparation of the export ({@link #prepareExportSamples(TableExportCriteria)} - * or {@link #prepareExportExperiments(TableExportCriteria)} has been invoked before and - * returned with an exportDataKey passed here as a parameter. + * Returns a list of all property types. */ - public String getExportTable(String exportDataKey) throws UserFailureException; + public List<PropertyType> listPropertyTypes() throws UserFailureException; /** - * Returns a list of experiments. + * Returns a chunk of the property types list. */ - public ResultSet<Experiment> listExperiments(final ListExperimentsCriteria criteria) - throws UserFailureException; + public ResultSet<PropertyType> listPropertyTypes( + DefaultResultSetConfig<String, PropertyType> criteria) throws UserFailureException; /** - * For given <var>sampleIdentifier</var> returns corresponding list of {@link ExternalData}. + * Like {@link #prepareExportSamples(TableExportCriteria)}, but for property types. */ - public List<ExternalData> listExternalData(final String sampleIdentifier) + public String prepareExportPropertyTypes(final TableExportCriteria<PropertyType> criteria) throws UserFailureException; - public List<ExternalData> listExternalDataForExperiment(String experimentIdentifier) + /** + * Returns a chunk of the property types assignment list. + */ + public ResultSet<EntityTypePropertyType<?>> listPropertyTypeAssignments( + DefaultResultSetConfig<String, EntityTypePropertyType<?>> criteria); + + /** + * Like {@link #prepareExportSamples(TableExportCriteria)}, but for property types assignments. + */ + public String prepareExportPropertyTypeAssignments( + final TableExportCriteria<EntityTypePropertyType<?>> criteria) throws UserFailureException; /** - * Lists the searchable entities. + * Returns a list of all projects. */ - public List<SearchableEntity> listSearchableEntities() throws UserFailureException; + public ResultSet<Project> listProjects(DefaultResultSetConfig<String, Project> criteria) + throws UserFailureException; /** - * Lists the entities matching the search. + * Like {@link #prepareExportSamples(TableExportCriteria)}, but for projects. */ - public ResultSet<MatchingEntity> listMatchingEntities( - final SearchableEntity searchableEntityOrNull, final String queryText, - final IResultSetConfig<String, MatchingEntity> resultSetConfig) + public String prepareExportProjects(final TableExportCriteria<Project> criteria) throws UserFailureException; /** - * Removes the session result set associated with given key. + * Assumes that preparation of the export ({@link #prepareExportSamples(TableExportCriteria)} + * or {@link #prepareExportExperiments(TableExportCriteria)} has been invoked before and + * returned with an exportDataKey passed here as a parameter. */ - public void removeResultSet(final String resultSetKey) throws UserFailureException; + public String getExportTable(String exportDataKey) throws UserFailureException; /** - * Returns a list of all projects. + * Removes the session result set associated with given key. */ - public List<Project> listProjects() throws UserFailureException; + public void removeResultSet(final String resultSetKey) throws UserFailureException; /** - * Returns a list of all experiment types. + * For given <var>sampleIdentifier</var> returns corresponding list of {@link ExternalData}. */ - public List<ExperimentType> listExperimentTypes() throws UserFailureException; + public List<ExternalData> listExternalData(final String sampleIdentifier) + throws UserFailureException; + + public List<ExternalData> listExternalDataForExperiment(String experimentIdentifier) + throws UserFailureException; /** - * Returns a list of all property types. + * Lists the searchable entities. */ - public List<PropertyType> listPropertyTypes() throws UserFailureException; + public List<SearchableEntity> listSearchableEntities() throws UserFailureException; /** - * Returns a chunk of the property types list. + * Returns a list of all experiment types. */ - public ResultSet<PropertyType> listPropertyTypes( - DefaultResultSetConfig<String, PropertyType> criteria) throws UserFailureException; + public List<ExperimentType> listExperimentTypes() throws UserFailureException; /** * Returns a list of all data types. 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 7b9cfb678d1..09b0337bf29 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 @@ -21,6 +21,7 @@ import java.util.List; import com.google.gwt.user.client.rpc.AsyncCallback; import ch.systemsx.cisd.openbis.generic.client.shared.DataType; +import ch.systemsx.cisd.openbis.generic.client.shared.EntityTypePropertyType; import ch.systemsx.cisd.openbis.generic.client.shared.ExperimentType; import ch.systemsx.cisd.openbis.generic.client.shared.Person; import ch.systemsx.cisd.openbis.generic.client.shared.PropertyType; @@ -96,33 +97,72 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync public void prepareExportSamples(final TableExportCriteria<Sample> criteria, AsyncCallback<String> asyncCallback); + /** @see ICommonClientService#listPropertyTypeAssignments(DefaultResultSetConfig) */ + public void listPropertyTypeAssignments( + DefaultResultSetConfig<String, EntityTypePropertyType<?>> criteria, + final AsyncCallback<ResultSet<EntityTypePropertyType<?>>> asyncCallback); + /** - * @see ICommonClientService#prepareExportPropertyTypes(TableExportCriteria) + * @see ICommonClientService#prepareExportPropertyTypeAssignments(TableExportCriteria) */ - public void prepareExportPropertyTypes(final TableExportCriteria<PropertyType> criteria, + public void prepareExportPropertyTypeAssignments( + final TableExportCriteria<EntityTypePropertyType<?>> criteria, AsyncCallback<String> asyncCallback); + /** + * @see ICommonClientService#listExperiments(ListExperimentsCriteria) + */ + public void listExperiments( + final ListExperimentsCriteria criteria, + AsyncCallback<ResultSet<ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment>> asyncCallback); + /** * @see ICommonClientService#prepareExportExperiments(TableExportCriteria) */ public void prepareExportExperiments(TableExportCriteria<Experiment> exportCriteria, AsyncCallback<String> callback); + /** @see ICommonClientService#listPropertyTypes(DefaultResultSetConfig) */ + public void listPropertyTypes(DefaultResultSetConfig<String, PropertyType> criteria, + final AsyncCallback<ResultSet<PropertyType>> asyncCallback); + + /** + * @see ICommonClientService#prepareExportPropertyTypes(TableExportCriteria) + */ + public void prepareExportPropertyTypes(final TableExportCriteria<PropertyType> criteria, + AsyncCallback<String> asyncCallback); + + /** @see ICommonClientService#listPropertyTypes() */ + public void listPropertyTypes(final AsyncCallback<List<PropertyType>> asyncCallback); + + /** + * @see ICommonClientService#listMatchingEntities(SearchableEntity, String, IResultSetConfig) + */ + public void listMatchingEntities(final SearchableEntity searchableEntity, + final String queryText, final IResultSetConfig<String, MatchingEntity> resultSetConfig, + final AsyncCallback<ResultSet<MatchingEntity>> asyncCallback); + /** @see ICommonClientService#prepareExportMatchingEntities(TableExportCriteria) */ public void prepareExportMatchingEntities(TableExportCriteria<MatchingEntity> exportCriteria, AsyncCallback<String> callback); + /** @see ICommonClientService#listProjects(DefaultResultSetConfig) */ + public void listProjects(DefaultResultSetConfig<String, Project> criteria, + final AsyncCallback<ResultSet<Project>> asyncCallback); + + /** @see ICommonClientService#prepareExportProjects(TableExportCriteria) */ + public void prepareExportProjects(TableExportCriteria<Project> exportCriteria, + AsyncCallback<String> callback); + /** * @see ICommonClientService#getExportTable(String) */ public void getExportTable(String exportDataKey, AsyncCallback<String> asyncCallback); /** - * @see ICommonClientService#listExperiments(ListExperimentsCriteria) + * @see ICommonClientService#removeResultSet(String) */ - public void listExperiments( - final ListExperimentsCriteria criteria, - AsyncCallback<ResultSet<ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment>> asyncCallback); + public void removeResultSet(final String resultSetKey, final AsyncCallback<Void> asyncCallback); /** * @see ICommonClientService#listExternalData(String) @@ -141,32 +181,10 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync */ public void listSearchableEntities(final AsyncCallback<List<SearchableEntity>> asyncCallback); - /** - * @see ICommonClientService#listMatchingEntities(SearchableEntity, String, IResultSetConfig) - */ - public void listMatchingEntities(final SearchableEntity searchableEntity, - final String queryText, final IResultSetConfig<String, MatchingEntity> resultSetConfig, - final AsyncCallback<ResultSet<MatchingEntity>> asyncCallback); - - /** - * @see ICommonClientService#removeResultSet(String) - */ - public void removeResultSet(final String resultSetKey, final AsyncCallback<Void> asyncCallback); - - /** @see ICommonClientService#listProjects() */ - public void listProjects(final AsyncCallback<List<Project>> asyncCallback); - /** @see ICommonClientService#listExperimentTypes() */ public void listExperimentTypes( final AsyncCallback<List<ExperimentType>> listExperimentTypesCallback); - /** @see ICommonClientService#listPropertyTypes() */ - public void listPropertyTypes(final AsyncCallback<List<PropertyType>> asyncCallback); - - /** @see ICommonClientService#listPropertyTypes() */ - public void listPropertyTypes(DefaultResultSetConfig<String, PropertyType> criteria, - final AsyncCallback<ResultSet<PropertyType>> asyncCallback); - /** @see ICommonClientService#listDataTypes() */ public void listDataTypes(final AsyncCallback<List<DataType>> 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 7403d1d3fd2..2de90d59f85 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 @@ -26,8 +26,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.MatchingEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionUI; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntity; @@ -101,9 +101,9 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma } @Override - protected List<MatchingEntityModel> createModels(List<MatchingEntity> entities) + protected MatchingEntityModel createModel(MatchingEntity entity) { - return MatchingEntityModel.convert(entities); + return new MatchingEntityModel(entity); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java index 8dec1915e31..33e9ff03f82 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java @@ -26,10 +26,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.RolesView; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.ExperimentBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.ExperimentRegistrationPanel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.ProjectBrowser; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.ProjectGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.ProjectRegistrationForm; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeAssignmentBrowser; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeAssignmentForm; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeAssignmentGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeRegistrationForm; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBatchRegistrationPanel; @@ -255,13 +255,13 @@ final class ComponentProvider { public ITabItem create() { - Component component = new ProjectBrowser(viewContext); - return new DefaultTabItem(getMessage(Dict.PROJECT_BROWSER), component, true); + DisposableComponent component = ProjectGrid.create(viewContext); + return DefaultTabItem.create(getMessage(Dict.PROJECT_BROWSER), component, true); } public String getId() { - return ProjectBrowser.ID; + return ProjectGrid.BROWSER_ID; } }; } @@ -325,14 +325,14 @@ final class ComponentProvider { public ITabItem create() { - Component component = new PropertyTypeAssignmentBrowser(viewContext); - return new DefaultTabItem(getMessage(Dict.PROPERTY_TYPE_ASSIGNMENTS), + DisposableComponent component = PropertyTypeAssignmentGrid.create(viewContext); + return DefaultTabItem.create(getMessage(Dict.PROPERTY_TYPE_ASSIGNMENTS), component, false); } public String getId() { - return PropertyTypeAssignmentBrowser.ID; + return PropertyTypeAssignmentGrid.BROWSER_ID; } }; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/AbstractEntityModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/AbstractEntityModel.java index c68ea8503fe..e0a954fda7f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/AbstractEntityModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/AbstractEntityModel.java @@ -40,6 +40,12 @@ public class AbstractEntityModel<T> extends BaseModelData { private static final long serialVersionUID = 1L; + protected AbstractEntityModel(final T entity, IColumnDefinitionKind<T>[] colDefKinds, + IMessageProvider msgProviderOrNull) + { + this(entity, createColumnsSchemaFrom(colDefKinds, msgProviderOrNull)); + } + protected AbstractEntityModel(final T entity, List<? extends IColumnDefinition<T>> columnsSchema) { set(ModelDataPropertyNames.OBJECT, entity); @@ -78,7 +84,8 @@ public class AbstractEntityModel<T> extends BaseModelData return value; } - protected static <T> List<IColumnDefinitionUI<T>> createColumnsSchemaFrom( + /** @param msgProviderOrNull if null, no headers labels will be generated */ + public static <T> List<IColumnDefinitionUI<T>> createColumnsSchemaFrom( IColumnDefinitionKind<T>[] columnKinds, IMessageProvider msgProviderOrNull) { List<IColumnDefinitionUI<T>> list = new ArrayList<IColumnDefinitionUI<T>>(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ETPTModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ETPTModel.java index bd76b6ad421..e6b3f9de584 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ETPTModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ETPTModel.java @@ -16,58 +16,21 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.model; -import java.util.ArrayList; -import java.util.List; - -import com.extjs.gxt.ui.client.data.BaseModelData; - import ch.systemsx.cisd.openbis.generic.client.shared.EntityTypePropertyType; -import ch.systemsx.cisd.openbis.generic.client.shared.ExperimentTypePropertyType; -import ch.systemsx.cisd.openbis.generic.client.shared.MaterialTypePropertyType; -import ch.systemsx.cisd.openbis.generic.client.shared.PropertyType; -import ch.systemsx.cisd.openbis.generic.client.shared.SampleTypePropertyType; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionKind; /** - * {@link BaseModelData} extension for {@link EntityTypePropertyType}s. + * Model extension for {@link EntityTypePropertyType}s. * - * @author Izabela Adamczyk + * @author Tomasz Pylak */ -public class ETPTModel extends BaseModelData +public class ETPTModel extends AbstractEntityModel<EntityTypePropertyType<?>> { - private static final long serialVersionUID = 1L; - public ETPTModel() - { - } - - private ETPTModel(EntityTypePropertyType<?> etpt, String entityKind) + public ETPTModel(EntityTypePropertyType<?> entity, + IColumnDefinitionKind<EntityTypePropertyType<?>>[] colDefKinds) { - set(ModelDataPropertyNames.IS_MANDATORY, etpt.isMandatory()); - set(ModelDataPropertyNames.PROPERTY_TYPE_CODE, etpt.getPropertyType().getCode()); - set(ModelDataPropertyNames.ENTITY_TYPE_CODE, etpt.getEntityType().getCode()); - set(ModelDataPropertyNames.ENTITY_KIND, entityKind); - } - - public final static List<ETPTModel> asModels(final List<PropertyType> propertyTypes) - { - final List<ETPTModel> models = new ArrayList<ETPTModel>(propertyTypes.size()); - for (final PropertyType propertyType : propertyTypes) - { - for (ExperimentTypePropertyType etpt : propertyType.getExperimentTypePropertyTypes()) - { - models.add(new ETPTModel(etpt, "EXPERIMENT")); - } - for (SampleTypePropertyType etpt : propertyType.getSampleTypePropertyTypes()) - { - models.add(new ETPTModel(etpt, "SAMPLE")); - } - - for (MaterialTypePropertyType etpt : propertyType.getMaterialTypePropertyTypes()) - { - models.add(new ETPTModel(etpt, "MATERIAL")); - } - } - return models; + super(entity, colDefKinds, null); } } 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 4d85f93bfcd..c5ba15091c5 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 @@ -27,8 +27,8 @@ import ch.systemsx.cisd.openbis.generic.client.shared.ExperimentTypePropertyType import ch.systemsx.cisd.openbis.generic.client.shared.PropertyType; 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.experiment.columns.PropertyExperimentColDef; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionUI; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment; @@ -66,17 +66,6 @@ public final class ExperimentModel extends AbstractEntityModel<Experiment> return list; } - public final static List<ExperimentModel> asExperimentModels(final List<Experiment> experiments) - { - final List<ExperimentModel> sampleModels = - new ArrayList<ExperimentModel>(experiments.size()); - for (final Experiment exp : experiments) - { - sampleModels.add(new ExperimentModel(exp)); - } - return sampleModels; - } - public static ColumnDefsAndConfigs<Experiment> createColumnsSchema( IMessageProvider messageProvider, ExperimentType selectedTypeOrNull) { 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 4d2c62b519c..90b5b49f158 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 @@ -16,7 +16,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.model; -import java.util.ArrayList; import java.util.List; import com.extjs.gxt.ui.client.data.ModelData; @@ -53,17 +52,6 @@ public final class MatchingEntityModel extends AbstractEntityModel<MatchingEntit return createColumnsSchemaFrom(MatchingEntityColumnKind.values(), msgProviderOrNull); } - public final static List<MatchingEntityModel> convert( - final List<MatchingEntity> matchingEntities) - { - final List<MatchingEntityModel> list = new ArrayList<MatchingEntityModel>(); - for (final MatchingEntity matchingEntity : matchingEntities) - { - list.add(new MatchingEntityModel(matchingEntity)); - } - return list; - } - public enum MatchingEntityColumnKind implements IColumnDefinitionKind<MatchingEntity> { ENTITY_KIND(new AbstractColumnDefinitionKind<MatchingEntity>(Dict.ENTITY_KIND) 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 9ab326f04a5..6a89734fcb0 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 @@ -46,10 +46,6 @@ public final class ModelDataPropertyNames public static final String EMAIL = "email"; - public static final String ENTITY_KIND = "entityKind"; - - public static final String ENTITY_TYPE = "entityType"; - public static final String FILE_FORMAT_TYPE = "fileFormatType"; public static final String FIRST_NAME = "firstName"; @@ -82,8 +78,6 @@ public final class ModelDataPropertyNames public static final String USER_ID = "userId"; - public static final String PROJECT_WITH_GROUP = "projectWithGroup"; - public static final String PROJECT = "project"; public static final String VERSIONS = "versions"; @@ -94,26 +88,10 @@ public final class ModelDataPropertyNames public static final String PROCEDURE_TYPE = "procedureType"; - public static final String MATERIAL_TYPE = "materialType"; - - public static final String LABEL = "label"; - public static final String DATA_TYPE = "dataType"; public static final String CONTROLLED_VOCABULARY = "controlledVocabulary"; - public static final String EXPERIMENT_TYPES = "experimentTypes"; - - public static final String MATERIAL_TYPES = "materialTypes"; - - public static final String SAMPLE_TYPES = "sampleTypes"; - - public static final String IS_MANDATORY = "isMandatory"; - - public static final String PROPERTY_TYPE_CODE = "propertyTypeCode"; - - public static final String ENTITY_TYPE_CODE = "entityTypeCode"; - public static final String IS_MANAGED_INTERNALLY = "isManagedInternally"; private ModelDataPropertyNames() diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ProjectModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ProjectModel.java index 1b1c1ae63da..52576e92545 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ProjectModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ProjectModel.java @@ -16,51 +16,22 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.model; -import java.util.ArrayList; -import java.util.List; - -import com.extjs.gxt.ui.client.data.BaseModelData; import com.extjs.gxt.ui.client.data.ModelData; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Project; /** * {@link ModelData} for {@link Project}. * - * @author Izabela Adamczyk + * @author Tomasz Pylak */ -public class ProjectModel extends BaseModelData +public class ProjectModel extends AbstractEntityModel<Project> { private static final long serialVersionUID = 1L; - public ProjectModel() - { - } - - public ProjectModel(final Project project) + public ProjectModel(Project entity, IColumnDefinitionKind<Project>[] colDefKinds) { - set(ModelDataPropertyNames.CODE, project.getCode()); - set(ModelDataPropertyNames.DESCRIPTION, project.getDescription()); - set(ModelDataPropertyNames.GROUP, project.getGroup()); - set(ModelDataPropertyNames.PROJECT_WITH_GROUP, renderProjectWithGroup(project)); - set(ModelDataPropertyNames.REGISTRATOR, project.getRegistrator()); - set(ModelDataPropertyNames.REGISTRATION_DATE, project.getRegistrationDate()); - set(ModelDataPropertyNames.OBJECT, project); + super(entity, colDefKinds, null); } - - private String renderProjectWithGroup(final Project p) - { - return p.getCode() + " (" + p.getGroup().getCode() + ")"; - } - - public final static List<ProjectModel> convert(final List<Project> projects) - { - final List<ProjectModel> result = new ArrayList<ProjectModel>(); - for (final Project p : projects) - { - result.add(new ProjectModel(p)); - } - return result; - } - } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/PropertyTypeModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/PropertyTypeModel.java index cc62998ab6e..359233a72fd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/PropertyTypeModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/PropertyTypeModel.java @@ -16,36 +16,34 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.model; -import java.util.ArrayList; -import java.util.List; - import com.extjs.gxt.ui.client.data.ModelData; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import ch.systemsx.cisd.openbis.generic.client.shared.PropertyType; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionUI; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeColDefKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; /** * {@link ModelData} for {@link PropertyType}. * * @author Izabela Adamczyk + * @author Tomasz Pylak */ public class PropertyTypeModel extends AbstractEntityModel<PropertyType> { private static final long serialVersionUID = 1L; - public PropertyTypeModel(PropertyType entity) + public PropertyTypeModel(PropertyType entity, IColumnDefinitionKind<PropertyType>[] colDefKinds) { - super(entity, createColumnsSchema(null)); + super(entity, colDefKinds, null); overwriteTypes(PropertyTypeColDefKind.EXPERIMENT_TYPES); overwriteTypes(PropertyTypeColDefKind.MATERIAL_TYPES); overwriteTypes(PropertyTypeColDefKind.SAMPLE_TYPES); } + // changes the column value from the export format to the display format private void overwriteTypes(PropertyTypeColDefKind columnKind) { String columnId = columnKind.id(); @@ -54,6 +52,8 @@ public class PropertyTypeModel extends AbstractEntityModel<PropertyType> set(columnId, newValue); } + // transforms comma separated value list by replacing each comma with a div element. It results + // in one item displayed per line. private static String rerenderTypes(String commaValues) { String[] tokens = commaValues.split(","); @@ -67,21 +67,4 @@ public class PropertyTypeModel extends AbstractEntityModel<PropertyType> String newValue = sb.toString(); return newValue; } - - public static List<IColumnDefinitionUI<PropertyType>> createColumnsSchema( - IMessageProvider msgProviderOrNull) - { - return createColumnsSchemaFrom(PropertyTypeColDefKind.values(), msgProviderOrNull); - } - - public final static List<PropertyTypeModel> convert(final List<PropertyType> types) - { - final List<PropertyTypeModel> result = new ArrayList<PropertyTypeModel>(); - for (final PropertyType st : types) - { - result.add(new PropertyTypeModel(st)); - } - return result; - } - } 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 86ca341be4a..a0fe46ddbeb 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 @@ -23,8 +23,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ExternalDataModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionUI; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; @@ -55,9 +55,9 @@ public class ExternalDataGrid extends AbstractBrowserGrid<ExternalData, External } @Override - protected List<ExternalDataModel> createModels(List<ExternalData> entities) + protected ExternalDataModel createModel(ExternalData entity) { - return ExternalDataModel.asExternalDataModels(entities); + return new ExternalDataModel(entity); } @Override 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 924d3627b11..9c18f153926 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 @@ -16,8 +16,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment; -import java.util.List; - import com.extjs.gxt.ui.client.event.SelectionChangedListener; import com.extjs.gxt.ui.client.widget.LayoutContainer; @@ -30,8 +28,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ExperimentModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment; @@ -109,9 +107,9 @@ public final class ExperimentBrowserGrid extends AbstractBrowserGrid<Experiment, } @Override - protected List<ExperimentModel> createModels(List<Experiment> entities) + protected ExperimentModel createModel(Experiment entity) { - return ExperimentModel.asExperimentModels(entities); + return new ExperimentModel(entity); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionWidget.java index eba4cef5d19..97c51db665e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionWidget.java @@ -16,8 +16,10 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment; +import java.util.ArrayList; import java.util.List; +import com.extjs.gxt.ui.client.data.BaseModelData; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.widget.form.ComboBox; import com.google.gwt.user.client.Element; @@ -28,17 +30,38 @@ 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.framework.AppEvents; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ProjectModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Project; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; /** * {@link ComboBox} containing list of projects loaded from the server. * * @author Izabela Adamczyk */ -public final class ProjectSelectionWidget extends ComboBox<ProjectModel> +public final class ProjectSelectionWidget extends + ComboBox<ProjectSelectionWidget.ProjectComboModel> { + // @Private + static final String DISPLAY_COLUMN_ID = "id"; + + private static class ProjectComboModel extends BaseModelData + { + private static final long serialVersionUID = 1L; + + public ProjectComboModel(Project project) + { + set(DISPLAY_COLUMN_ID, renderProjectWithGroup(project)); + set(ModelDataPropertyNames.OBJECT, project); + } + + private String renderProjectWithGroup(final Project p) + { + return p.getCode() + " (" + p.getGroup().getCode() + ")"; + } + } + private static final String PREFIX = "project-select"; public static final String ID = GenericConstants.ID_PREFIX + PREFIX; @@ -50,11 +73,11 @@ public final class ProjectSelectionWidget extends ComboBox<ProjectModel> this.viewContext = viewContext; setId(ID + idSuffix); setEmptyText(viewContext.getMessage(Dict.COMBO_BOX_EMPTY, "projects")); - setDisplayField(ModelDataPropertyNames.PROJECT_WITH_GROUP); + setDisplayField(DISPLAY_COLUMN_ID); setEditable(false); setWidth(200); setFieldLabel(viewContext.getMessage(Dict.PROJECT)); - setStore(new ListStore<ProjectModel>()); + setStore(new ListStore<ProjectComboModel>()); } /** @@ -76,14 +99,15 @@ public final class ProjectSelectionWidget extends ComboBox<ProjectModel> void refresh() { - viewContext.getCommonService().listProjects(new ListProjectsCallback(viewContext)); + DefaultResultSetConfig<String, Project> config = DefaultResultSetConfig.createFetchAll(); + viewContext.getCommonService().listProjects(config, new ListProjectsCallback(viewContext)); } // // Helper classes // - public final class ListProjectsCallback extends AbstractAsyncCallback<List<Project>> + public final class ListProjectsCallback extends AbstractAsyncCallback<ResultSet<Project>> { ListProjectsCallback(final IViewContext<?> viewContext) { @@ -91,11 +115,11 @@ public final class ProjectSelectionWidget extends ComboBox<ProjectModel> } @Override - protected void process(final List<Project> result) + protected void process(final ResultSet<Project> result) { - final ListStore<ProjectModel> projectStore = getStore(); + final ListStore<ProjectComboModel> projectStore = getStore(); projectStore.removeAll(); - projectStore.add(ProjectModel.convert(result)); + projectStore.add(convert(result.getList())); if (projectStore.getCount() > 0) { setValue(projectStore.getAt(0)); @@ -105,4 +129,13 @@ public final class ProjectSelectionWidget extends ComboBox<ProjectModel> } } + private static List<ProjectComboModel> convert(List<Project> projects) + { + final List<ProjectComboModel> result = new ArrayList<ProjectComboModel>(); + for (final Project p : projects) + { + result.add(new ProjectComboModel(p)); + } + return result; + } } \ No newline at end of file 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 2d5742362a8..5240d64dff7 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 @@ -57,7 +57,6 @@ 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.ui.grid.BrowserGridPagingToolBar.IBrowserGridActionInvoker; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.URLMethodWithParameters; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WindowUtils; @@ -81,7 +80,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends ModelData> ex AbstractAsyncCallback<ResultSet<T>> callback); /** Converts specified list of entities into a list of grid rows models */ - abstract protected List<M> createModels(List<T> entities); + abstract protected M createModel(T entity); /** * Called when user wants to export the data. It can happen only after a previous refresh of the @@ -346,6 +345,16 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends ModelData> ex } } + private List<M> createModels(final List<T> projects) + { + final List<M> result = new ArrayList<M>(); + for (final T p : projects) + { + result.add(createModel(p)); + } + return result; + } + private Listener<GridEvent> createEntityViewerHandler() { return new Listener<GridEvent>() 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 153ffaf9f04..200c3564f8d 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 @@ -34,6 +34,8 @@ public abstract class AbstractColumnDefinitionKind<T> /** Renders the cell value of this column for the specified entity. */ abstract public String tryGetValue(T entity); + public static final int DATE_COLUMN_WIDTH = 200; + private String headerMsgKey; private int width; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java new file mode 100644 index 00000000000..2196159766f --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java @@ -0,0 +1,71 @@ +/* + * Copyright 2009 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.ui.grid; + +import java.util.List; + +import com.extjs.gxt.ui.client.data.ModelData; + +import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.AbstractEntityModel; + +/** + * Grid displaying all the entities without any criteria (useful when there is no specific toolbar). + * + * @author Tomasz Pylak + */ +abstract public class AbstractSimpleBrowserGrid<T/* Entity */, M extends ModelData> extends + AbstractBrowserGrid<T, M> +{ + abstract protected IColumnDefinitionKind<T>[] getStaticColumnsDefinition(); + + protected AbstractSimpleBrowserGrid(IViewContext<ICommonClientServiceAsync> viewContext, + String browserId, String gridId) + { + super(viewContext, gridId, false, true); + setId(browserId); + updateDefaultRefreshButton(); + } + + @Override + protected ColumnDefsAndConfigs<T> createColumnsDefinition() + { + IColumnDefinitionKind<T>[] colDefKinds = getStaticColumnsDefinition(); + List<IColumnDefinitionUI<T>> colDefs = + AbstractEntityModel.createColumnsSchemaFrom(colDefKinds, viewContext); + return ColumnDefsAndConfigs.create(colDefs); + } + + @Override + protected boolean isRefreshEnabled() + { + return true; + } + + @Override + protected void refresh() + { + super.refresh(null, false); + } + + @Override + protected void showEntityViewer(M modelData) + { + // do nothing + } +} \ No newline at end of file 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/grid/ColumnDefsAndConfigs.java similarity index 95% rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ColumnDefsAndConfigs.java rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java index 98a32bf8711..47fbcdb4c9c 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/grid/ColumnDefsAndConfigs.java @@ -14,14 +14,13 @@ * limitations under the License. */ -package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns; +package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid; import java.util.ArrayList; import java.util.List; import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionUI; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition; /** diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectBrowser.java deleted file mode 100644 index 68ab0cc9308..00000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectBrowser.java +++ /dev/null @@ -1,85 +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.ui.project; - -import com.extjs.gxt.ui.client.store.Store; -import com.extjs.gxt.ui.client.widget.ContentPanel; -import com.extjs.gxt.ui.client.widget.layout.FitLayout; -import com.extjs.gxt.ui.client.widget.toolbar.AdapterToolItem; -import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem; -import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; -import com.google.gwt.user.client.Element; - -import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.CommonViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ProjectModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnFilter; - -/** - * A {@link ContentPanel} extension for browsing the projects. - * - * @author Izabela Adamczyk - */ -public final class ProjectBrowser extends ContentPanel -{ - private static final String PREFIX = "project-browser"; - - public static final String ID = GenericConstants.ID_PREFIX + PREFIX; - - private final IViewContext<ICommonClientServiceAsync> viewContext; - - private ProjectGrid grid; - - private ToolBar toolbar; - - public ProjectBrowser(final CommonViewContext viewContext) - { - this.viewContext = viewContext; - setLayout(new FitLayout()); - setHeading(viewContext.getMessage(Dict.PROJECT_BROWSER)); - setId(ID); - grid = new ProjectGrid(viewContext, ID); - add(grid); - setBottomComponent(getToolbar()); - } - - private ToolBar getToolbar() - { - if (toolbar == null) - { - toolbar = new ToolBar(); - toolbar.add(new LabelToolItem("Filter:")); - Store<ProjectModel> store = grid.getStore(); - toolbar.add(new AdapterToolItem(new ColumnFilter<ProjectModel>(store, - ModelDataPropertyNames.CODE, viewContext.getMessage(Dict.CODE)))); - } - return toolbar; - } - - @Override - protected void onRender(final Element parent, final int pos) - { - super.onRender(parent, pos); - layout(); - grid.load(); - } - -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectColDefKind.java new file mode 100644 index 00000000000..d6b9590789e --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectColDefKind.java @@ -0,0 +1,106 @@ +/* + * Copyright 2009 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.ui.project; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; +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.Project; + +/** + * @author Tomasz Pylak + */ +public enum ProjectColDefKind implements IColumnDefinitionKind<Project> +{ + CODE(new AbstractColumnDefinitionKind<Project>(Dict.CODE) + { + @Override + public String tryGetValue(Project entity) + { + return entity.getCode(); + } + }), + + GROUP(new AbstractColumnDefinitionKind<Project>(Dict.GROUP) + { + @Override + public String tryGetValue(Project entity) + { + return entity.getGroup().getCode(); + } + }), + + DESCRIPTION(new AbstractColumnDefinitionKind<Project>(Dict.DESCRIPTION) + { + @Override + public String tryGetValue(Project entity) + { + return entity.getDescription(); + } + }), + + REGISTRATOR(new AbstractColumnDefinitionKind<Project>(Dict.REGISTRATOR) + { + @Override + public String tryGetValue(Project entity) + { + return renderRegistrator(entity); + } + }), + + REGISTRATION_DATE(new AbstractColumnDefinitionKind<Project>(Dict.REGISTRATION_DATE, + AbstractColumnDefinitionKind.DATE_COLUMN_WIDTH, false) + { + @Override + public String tryGetValue(Project entity) + { + return renderRegistrationDate(entity); + } + }); + + private final AbstractColumnDefinitionKind<Project> columnDefinitionKind; + + private ProjectColDefKind(AbstractColumnDefinitionKind<Project> columnDefinitionKind) + { + this.columnDefinitionKind = columnDefinitionKind; + } + + public String getHeaderMsgKey() + { + return columnDefinitionKind.getHeaderMsgKey(); + } + + public int getWidth() + { + return columnDefinitionKind.getWidth(); + } + + public String id() + { + return name(); + } + + public boolean isHidden() + { + return columnDefinitionKind.isHidden(); + } + + public String tryGetValue(Project entity) + { + return columnDefinitionKind.tryGetValue(entity); + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java index bb13d97b1a0..01b84885b65 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java @@ -16,80 +16,65 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project; -import java.util.ArrayList; -import java.util.List; - -import com.extjs.gxt.ui.client.data.BaseListLoadResult; -import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; -import com.extjs.gxt.ui.client.widget.grid.ColumnModel; -import com.google.gwt.user.client.rpc.AsyncCallback; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.CommonViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; +import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ProjectModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.DateRenderer; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnConfigFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.GridWithRPCProxy; +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.DisposableComponent; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionKind; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Project; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; /** - * {@link GridWithRPCProxy} displaying projects. + * Grid displaying projects. * - * @author Izabela Adamczyk + * @author Tomasz Pylak */ -public class ProjectGrid extends GridWithRPCProxy<Project, ProjectModel> +public class ProjectGrid extends AbstractSimpleBrowserGrid<Project, ProjectModel> { - private final CommonViewContext viewContext; + // browser consists of the grid and the paging toolbar + public static final String BROWSER_ID = GenericConstants.ID_PREFIX + "project-browser"; - public ProjectGrid(final CommonViewContext viewContext, String idPrefix) + public static final String GRID_ID = BROWSER_ID + "_grid"; + + public static DisposableComponent create( + final IViewContext<ICommonClientServiceAsync> viewContext) { - super(createColumnModel(viewContext), idPrefix); - this.viewContext = viewContext; + return new ProjectGrid(viewContext).asDisposableWithoutToolbar(); } - private static ColumnModel createColumnModel(IViewContext<?> context) + private ProjectGrid(IViewContext<ICommonClientServiceAsync> viewContext) { - final ArrayList<ColumnConfig> configs = new ArrayList<ColumnConfig>(); - configs.add(ColumnConfigFactory.createCodeColumnConfig(context)); - - configs.add(ColumnConfigFactory.createDefaultColumnConfig(context - .getMessage(Dict.DESCRIPTION), ModelDataPropertyNames.DESCRIPTION)); - - final ColumnConfig registratorColumnConfig = - ColumnConfigFactory.createDefaultColumnConfig(context.getMessage(Dict.REGISTRATOR), - ModelDataPropertyNames.REGISTRATOR); - configs.add(registratorColumnConfig); - - final ColumnConfig registrationDateColumnConfig = - ColumnConfigFactory.createDefaultColumnConfig(context - .getMessage(Dict.REGISTRATION_DATE), - ModelDataPropertyNames.REGISTRATION_DATE); - registrationDateColumnConfig.setDateTimeFormat(DateRenderer.DEFAULT_DATE_TIME_FORMAT); - configs.add(registrationDateColumnConfig); + super(viewContext, BROWSER_ID, GRID_ID); + } - return new ColumnModel(configs); + @Override + protected IColumnDefinitionKind<Project>[] getStaticColumnsDefinition() + { + return ProjectColDefKind.values(); } @Override - protected void loadDataFromService(AsyncCallback<BaseListLoadResult<ProjectModel>> callback) + protected ProjectModel createModel(Project entity) { - viewContext.getService().listProjects(new ListProjectsCallback(viewContext, callback)); + return new ProjectModel(entity, getStaticColumnsDefinition()); } - class ListProjectsCallback extends DelegatingAsyncCallback + @Override + protected void listEntities(DefaultResultSetConfig<String, Project> resultSetConfig, + AbstractAsyncCallback<ResultSet<Project>> callback) { - public ListProjectsCallback(IViewContext<?> context, - AsyncCallback<BaseListLoadResult<ProjectModel>> callback) - { - super(context, callback); - } + viewContext.getService().listProjects(resultSetConfig, callback); + } - @Override - protected List<ProjectModel> convert(List<Project> result) - { - return ProjectModel.convert(result); - } + @Override + protected void prepareExportEntities(TableExportCriteria<Project> exportCriteria, + AbstractAsyncCallback<String> callback) + { + viewContext.getService().prepareExportProjects(exportCriteria, callback); } } \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentBrowser.java deleted file mode 100644 index 4a6d3dff50e..00000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentBrowser.java +++ /dev/null @@ -1,91 +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.ui.property_type; - -import com.extjs.gxt.ui.client.store.Store; -import com.extjs.gxt.ui.client.widget.ContentPanel; -import com.extjs.gxt.ui.client.widget.layout.FitLayout; -import com.extjs.gxt.ui.client.widget.toolbar.AdapterToolItem; -import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem; -import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; -import com.google.gwt.user.client.Element; - -import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.CommonViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ETPTModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnFilter; - -/** - * Encapsulates property type assignments listing functionality. - * - * @author Izabela Adamczyk - */ -public class PropertyTypeAssignmentBrowser extends ContentPanel -{ - public static final String ID = - GenericConstants.ID_PREFIX + "property-type-assignments-browser"; - - private ToolBar toolbar; - - private PropertyTypeAssignmentGrid grid; - - private final IViewContext<ICommonClientServiceAsync> viewContext; - - public PropertyTypeAssignmentBrowser(final CommonViewContext viewContext) - { - this.viewContext = viewContext; - setLayout(new FitLayout()); - setHeading("Property Type Assignments"); - setId(ID); - grid = new PropertyTypeAssignmentGrid(viewContext, ID); - add(grid); - setBottomComponent(getToolbar()); - - } - - @Override - protected void onRender(final Element parent, final int pos) - { - super.onRender(parent, pos); - layout(); - grid.load(); - } - - private ToolBar getToolbar() - { - if (toolbar == null) - { - toolbar = new ToolBar(); - toolbar.add(new LabelToolItem("Filter:")); - Store<ETPTModel> store = grid.getStore(); - toolbar.add(new AdapterToolItem(new ColumnFilter<ETPTModel>(store, - ModelDataPropertyNames.PROPERTY_TYPE_CODE, viewContext - .getMessage(Dict.PROPERTY_TYPE_CODE)))); - toolbar.add(new AdapterToolItem(new ColumnFilter<ETPTModel>(store, - ModelDataPropertyNames.ENTITY_TYPE_CODE, viewContext - .getMessage(Dict.ASSIGNED_TO)))); - toolbar.add(new AdapterToolItem(new ColumnFilter<ETPTModel>(store, - ModelDataPropertyNames.ENTITY_KIND, viewContext.getMessage(Dict.TYPE_OF)))); - } - return toolbar; - } - -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentColDefKind.java new file mode 100644 index 00000000000..9be1bc403a4 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentColDefKind.java @@ -0,0 +1,100 @@ +/* + * Copyright 2009 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.ui.property_type; + +import ch.systemsx.cisd.openbis.generic.client.shared.EntityTypePropertyType; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; +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; + +/** + * @author Tomasz Pylak + */ +public enum PropertyTypeAssignmentColDefKind implements + IColumnDefinitionKind<EntityTypePropertyType<?>> +{ + PROPERTY_TYPE_CODE(new AbstractColumnDefinitionKind<EntityTypePropertyType<?>>( + Dict.PROPERTY_TYPE_CODE) + { + @Override + public String tryGetValue(EntityTypePropertyType<?> entity) + { + return entity.getPropertyType().getCode(); + } + }), + + ENTITY_TYPE_CODE(new AbstractColumnDefinitionKind<EntityTypePropertyType<?>>(Dict.ASSIGNED_TO) + { + @Override + public String tryGetValue(EntityTypePropertyType<?> entity) + { + return entity.getEntityType().getCode(); + } + }), + + ENTITY_KIND(new AbstractColumnDefinitionKind<EntityTypePropertyType<?>>(Dict.TYPE_OF) + { + @Override + public String tryGetValue(EntityTypePropertyType<?> entity) + { + return entity.getEntityKind().getDescription(); + } + }), + + IS_MANDATORY(new AbstractColumnDefinitionKind<EntityTypePropertyType<?>>(Dict.IS_MANDATORY) + { + @Override + public String tryGetValue(EntityTypePropertyType<?> entity) + { + return SimpleYesNoRenderer.render(entity.isMandatory()); + } + }); + + private final AbstractColumnDefinitionKind<EntityTypePropertyType<?>> columnDefinitionKind; + + private PropertyTypeAssignmentColDefKind( + AbstractColumnDefinitionKind<EntityTypePropertyType<?>> columnDefinitionKind) + { + this.columnDefinitionKind = columnDefinitionKind; + } + + public String getHeaderMsgKey() + { + return columnDefinitionKind.getHeaderMsgKey(); + } + + public int getWidth() + { + return columnDefinitionKind.getWidth(); + } + + public String id() + { + return name(); + } + + public boolean isHidden() + { + return columnDefinitionKind.isHidden(); + } + + public String tryGetValue(EntityTypePropertyType<?> entity) + { + return columnDefinitionKind.tryGetValue(entity); + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java index 709946d0954..728d5d6bf28 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java @@ -16,75 +16,69 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type; -import java.util.ArrayList; -import java.util.List; - -import com.extjs.gxt.ui.client.data.BaseListLoadResult; -import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; -import com.extjs.gxt.ui.client.widget.grid.ColumnModel; -import com.google.gwt.user.client.rpc.AsyncCallback; - -import ch.systemsx.cisd.openbis.generic.client.shared.PropertyType; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.CommonViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; +import ch.systemsx.cisd.openbis.generic.client.shared.EntityTypePropertyType; +import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ETPTModel; -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.GridWithRPCProxy; +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.DisposableComponent; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionKind; +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.TableExportCriteria; /** - * {@link GridWithRPCProxy} displaying 'entity type' - 'property type' assignments. + * Grid with 'entity type' - 'property type' assignments. * * @author Izabela Adamczyk */ -public class PropertyTypeAssignmentGrid extends GridWithRPCProxy<PropertyType, ETPTModel> +public class PropertyTypeAssignmentGrid extends + AbstractSimpleBrowserGrid<EntityTypePropertyType<?>, ETPTModel> { - private final CommonViewContext viewContext; + // browser consists of the grid and the paging toolbar + public static final String BROWSER_ID = + GenericConstants.ID_PREFIX + "property-type-assignment-browser"; + + public static final String GRID_ID = BROWSER_ID + "_grid"; - public PropertyTypeAssignmentGrid(final CommonViewContext viewContext, String id) + public static DisposableComponent create( + final IViewContext<ICommonClientServiceAsync> viewContext) { - super(createColumnModel(viewContext), id); - this.viewContext = viewContext; + return new PropertyTypeAssignmentGrid(viewContext).asDisposableWithoutToolbar(); } - private static ColumnModel createColumnModel(IViewContext<?> context) + private PropertyTypeAssignmentGrid(IViewContext<ICommonClientServiceAsync> viewContext) { - final ArrayList<ColumnConfig> configs = new ArrayList<ColumnConfig>(); - configs.add(ColumnConfigFactory.createDefaultColumnConfig(context - .getMessage(Dict.PROPERTY_TYPE_CODE), ModelDataPropertyNames.PROPERTY_TYPE_CODE)); - configs.add(ColumnConfigFactory.createDefaultColumnConfig(context - .getMessage(Dict.ASSIGNED_TO), ModelDataPropertyNames.ENTITY_TYPE_CODE)); - configs.add(ColumnConfigFactory.createDefaultColumnConfig(context.getMessage(Dict.TYPE_OF), - ModelDataPropertyNames.ENTITY_KIND)); - final ColumnConfig mandatory = - ColumnConfigFactory.createDefaultColumnConfig( - context.getMessage(Dict.IS_MANDATORY), ModelDataPropertyNames.IS_MANDATORY); - mandatory.setRenderer(new YesNoRenderer()); - configs.add(mandatory); - return new ColumnModel(configs); + super(viewContext, BROWSER_ID, GRID_ID); } @Override - protected void loadDataFromService(AsyncCallback<BaseListLoadResult<ETPTModel>> callback) + protected IColumnDefinitionKind<EntityTypePropertyType<?>>[] getStaticColumnsDefinition() { - viewContext.getService().listPropertyTypes( - new ListPropertyTypesCallback(viewContext, callback)); + return PropertyTypeAssignmentColDefKind.values(); } - class ListPropertyTypesCallback extends DelegatingAsyncCallback + @Override + protected ETPTModel createModel(EntityTypePropertyType<?> entity) { - public ListPropertyTypesCallback(IViewContext<?> context, - AsyncCallback<BaseListLoadResult<ETPTModel>> callback) - { - super(context, callback); - } + return new ETPTModel(entity, getStaticColumnsDefinition()); + } - @Override - protected List<ETPTModel> convert(List<PropertyType> result) - { - return ETPTModel.asModels(result); - } + @Override + protected void listEntities( + DefaultResultSetConfig<String, EntityTypePropertyType<?>> resultSetConfig, + AbstractAsyncCallback<ResultSet<EntityTypePropertyType<?>>> callback) + { + viewContext.getService().listPropertyTypeAssignments(resultSetConfig, callback); + } + + @Override + protected void prepareExportEntities( + TableExportCriteria<EntityTypePropertyType<?>> exportCriteria, + AbstractAsyncCallback<String> callback) + { + viewContext.getService().prepareExportPropertyTypeAssignments(exportCriteria, callback); } } \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java index 81065415fa7..228b6663ed3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java @@ -16,28 +16,25 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type; -import java.util.List; - import ch.systemsx.cisd.openbis.generic.client.shared.PropertyType; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.PropertyTypeModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.GridWithRPCProxy; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid; +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.DisposableComponent; -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.grid.IColumnDefinitionKind; 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.TableExportCriteria; /** - * {@link GridWithRPCProxy} displaying property types. + * Grid displaying property types. * - * @author Izabela Adamczyk + * @author Tomasz Pylak */ -public class PropertyTypeGrid extends AbstractBrowserGrid<PropertyType, PropertyTypeModel> +public class PropertyTypeGrid extends AbstractSimpleBrowserGrid<PropertyType, PropertyTypeModel> { // browser consists of the grid and the paging toolbar public static final String BROWSER_ID = GenericConstants.ID_PREFIX + "property-type-browser"; @@ -52,27 +49,19 @@ public class PropertyTypeGrid extends AbstractBrowserGrid<PropertyType, Property private PropertyTypeGrid(IViewContext<ICommonClientServiceAsync> viewContext) { - super(viewContext, GRID_ID, false, true); - setId(BROWSER_ID); - updateDefaultRefreshButton(); + super(viewContext, BROWSER_ID, GRID_ID); } @Override - protected ColumnDefsAndConfigs<PropertyType> createColumnsDefinition() + protected IColumnDefinitionKind<PropertyType>[] getStaticColumnsDefinition() { - return ColumnDefsAndConfigs.create(PropertyTypeModel.createColumnsSchema(viewContext)); + return PropertyTypeColDefKind.values(); } @Override - protected List<PropertyTypeModel> createModels(List<PropertyType> entities) + protected PropertyTypeModel createModel(PropertyType entity) { - return PropertyTypeModel.convert(entities); - } - - @Override - protected boolean isRefreshEnabled() - { - return true; + return new PropertyTypeModel(entity, getStaticColumnsDefinition()); } @Override @@ -88,16 +77,4 @@ public class PropertyTypeGrid extends AbstractBrowserGrid<PropertyType, Property { viewContext.getService().prepareExportPropertyTypes(exportCriteria, callback); } - - @Override - protected void refresh() - { - super.refresh(null, false); - } - - @Override - protected void showEntityViewer(PropertyTypeModel modelData) - { - // do nothing - } } \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeSelectionWidget.java index b8e531928a4..40e727ced22 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeSelectionWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeSelectionWidget.java @@ -16,8 +16,10 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type; +import java.util.ArrayList; import java.util.List; +import com.extjs.gxt.ui.client.data.BaseModelData; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.widget.form.ComboBox; import com.google.gwt.user.client.Element; @@ -28,7 +30,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.PropertyTypeModel; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; /** @@ -36,8 +38,20 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUt * * @author Izabela Adamczyk */ -public final class PropertyTypeSelectionWidget extends ComboBox<PropertyTypeModel> +public final class PropertyTypeSelectionWidget extends + ComboBox<PropertyTypeSelectionWidget.PropertyTypeComboModel> { + private static class PropertyTypeComboModel extends BaseModelData + { + private static final long serialVersionUID = 1L; + + public PropertyTypeComboModel(PropertyType entity) + { + set(ModelDataPropertyNames.CODE, entity.getCode()); + set(ModelDataPropertyNames.OBJECT, entity); + } + } + private static final String PREFIX = "property-type-select-"; public static final String ID = GenericConstants.ID_PREFIX + PREFIX; @@ -49,11 +63,11 @@ public final class PropertyTypeSelectionWidget extends ComboBox<PropertyTypeMode { this.viewContext = viewContext; setId(ID + idSuffix); - setDisplayField(PropertyTypeColDefKind.CODE.id()); + setDisplayField(ModelDataPropertyNames.CODE); setEditable(false); setWidth(180); setFieldLabel(viewContext.getMessage(Dict.PROPERTY_TYPE)); - setStore(new ListStore<PropertyTypeModel>()); + setStore(new ListStore<PropertyTypeComboModel>()); } public final String tryGetSelectedPropertyTypeCode() @@ -98,9 +112,9 @@ public final class PropertyTypeSelectionWidget extends ComboBox<PropertyTypeMode @Override protected void process(final List<PropertyType> result) { - final ListStore<PropertyTypeModel> propertyTypeStore = getStore(); + final ListStore<PropertyTypeComboModel> propertyTypeStore = getStore(); propertyTypeStore.removeAll(); - propertyTypeStore.add(PropertyTypeModel.convert(result)); + propertyTypeStore.add(convert(result)); if (propertyTypeStore.getCount() > 0) { setEnabled(true); @@ -112,4 +126,14 @@ public final class PropertyTypeSelectionWidget extends ComboBox<PropertyTypeMode applyEmptyText(); } } + + public final static List<PropertyTypeComboModel> convert(final List<PropertyType> types) + { + final List<PropertyTypeComboModel> result = new ArrayList<PropertyTypeComboModel>(); + for (final PropertyType st : types) + { + result.add(new PropertyTypeComboModel(st)); + } + return result; + } } \ No newline at end of file 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 18b581aee82..b29fb4c6d31 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 @@ -16,8 +16,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample; -import java.util.List; - import com.extjs.gxt.ui.client.event.SelectionChangedListener; import com.extjs.gxt.ui.client.widget.LayoutContainer; @@ -29,8 +27,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent; -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.sample.columns.SampleModel; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.EntityKind; @@ -100,9 +98,9 @@ public final class SampleBrowserGrid extends AbstractBrowserGrid<Sample, SampleM } @Override - protected List<SampleModel> createModels(List<Sample> entities) + protected SampleModel createModel(Sample entity) { - return SampleModel.asSampleModels(entities); + return new SampleModel(entity); } @Override 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 7b24f2cfd21..a98c8dc505f 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 @@ -88,7 +88,8 @@ public enum CommonSampleColDefKind implements IColumnDefinitionKind<Sample> } }), - REGISTRATION_DATE(new AbstractColumnDefinitionKind<Sample>(Dict.REGISTRATION_DATE, 200, true) + REGISTRATION_DATE(new AbstractColumnDefinitionKind<Sample>(Dict.REGISTRATION_DATE, + AbstractColumnDefinitionKind.DATE_COLUMN_WIDTH, true) { @Override public String tryGetValue(Sample entity) 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 d2ef4ad0c1d..9810caed7a1 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 @@ -27,6 +27,7 @@ import ch.systemsx.cisd.openbis.generic.client.shared.SampleTypePropertyType; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.AbstractEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionUI; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample; 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 a7749c9cbc9..1e9d1a06e41 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 @@ -39,6 +39,11 @@ public class DefaultResultSetConfig<K, T> implements IResultSetConfig<K, T>, IsS */ private K resultSetKeyOrNull; + public static <K, T> DefaultResultSetConfig<K, T> createFetchAll() + { + return new DefaultResultSetConfig<K, T>(); + } + public final void setLimit(final int limit) { this.limit = limit; 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 01035270766..007342046c1 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 @@ -25,10 +25,14 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.servlet.IRequestContextProvider; import ch.systemsx.cisd.common.utilities.BeanUtils; import ch.systemsx.cisd.openbis.generic.client.shared.DataType; +import ch.systemsx.cisd.openbis.generic.client.shared.EntityTypePropertyType; import ch.systemsx.cisd.openbis.generic.client.shared.ExperimentType; +import ch.systemsx.cisd.openbis.generic.client.shared.ExperimentTypePropertyType; +import ch.systemsx.cisd.openbis.generic.client.shared.MaterialTypePropertyType; import ch.systemsx.cisd.openbis.generic.client.shared.Person; import ch.systemsx.cisd.openbis.generic.client.shared.PropertyType; import ch.systemsx.cisd.openbis.generic.client.shared.SampleType; +import ch.systemsx.cisd.openbis.generic.client.shared.SampleTypePropertyType; import ch.systemsx.cisd.openbis.generic.client.shared.Vocabulary; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientService; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; @@ -104,6 +108,14 @@ public final class CommonClientService extends AbstractClientService implements this.commonServer = commonServer; } + @Override + protected final IServer getServer() + { + return commonServer; + } + + // ----------- export and listing with cache generic functionality + @SuppressWarnings("unchecked") private final <K> IResultSetManager<K> getResultSetManager() { @@ -157,12 +169,77 @@ public final class CommonClientService extends AbstractClientService implements return criteria; } - @Override - protected final IServer getServer() + private <T> ResultSet<T> listEntities(final IResultSetConfig<String, T> criteria, + IOriginalDataProvider<T> dataProvider) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { - return commonServer; + try + { + final IResultSetManager<String> resultSetManager = getResultSetManager(); + final IResultSet<String, T> result = + resultSetManager.getResultSet(criteria, dataProvider); + return ResultSetTranslator.translate(result); + } catch (final UserFailureException e) + { + throw UserFailureExceptionTranslator.translate(e); + } + } + + /** + * Assumes that preparation of the export ({@link #prepareExportSamples(TableExportCriteria)} + * has been invoked before and returned with an exportDataKey passed here as a parameter. + */ + public final String getExportTable(final String exportDataKey) + { + return getGenericExportTable(exportDataKey); + } + + private final <T> String getGenericExportTable(final String exportDataKey) + { + try + { + // Not directly needed but this refreshes the session. + getSessionToken(); + final TableExportCriteria<T> exportCriteria = getAndRemoveExportCriteria(exportDataKey); + final List<T> entities = fetchCachedEntities(exportCriteria); + return TSVRenderer.createTable(entities, exportCriteria.getColumnDefs()); + } catch (final UserFailureException e) + { + throw UserFailureExceptionTranslator.translate(e); + } + } + + private <T> String prepareExportEntities(TableExportCriteria<T> criteria) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + { + try + { + // Not directly needed but this refreshes the session. + getSessionToken(); + final CacheManager<String, TableExportCriteria<T>> exportManager = getExportManager(); + return exportManager.saveData(criteria); + } catch (final UserFailureException e) + { + throw UserFailureExceptionTranslator.translate(e); + } } + public final void removeResultSet(final String resultSetKey) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + { + try + { + // Not directly needed but this refreshes the session. + getSessionToken(); + getResultSetManager().removeResultSet(resultSetKey); + } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e) + { + throw UserFailureExceptionTranslator.translate(e); + } + } + + // --------------- end export & listing + // // IGenericClientService // @@ -335,6 +412,8 @@ public final class CommonClientService extends AbstractClientService implements } } + // --------- methods preparing exported content. Note: GWT does not support generic methods :( + public final String prepareExportSamples(final TableExportCriteria<Sample> criteria) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { @@ -360,105 +439,131 @@ public final class CommonClientService extends AbstractClientService implements return prepareExportEntities(criteria); } - private <T> String prepareExportEntities(TableExportCriteria<T> criteria) + public String prepareExportPropertyTypeAssignments( + TableExportCriteria<EntityTypePropertyType<?>> criteria) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { - try - { - // Not directly needed but this refreshes the session. - getSessionToken(); - final CacheManager<String, TableExportCriteria<T>> exportManager = getExportManager(); - return exportManager.saveData(criteria); - } catch (final UserFailureException e) - { - throw UserFailureExceptionTranslator.translate(e); - } + return prepareExportEntities(criteria); } - /** - * Assumes that preparation of the export ({@link #prepareExportSamples(TableExportCriteria)} - * has been invoked before and returned with an exportDataKey passed here as a parameter. - */ - public final String getExportTable(final String exportDataKey) + public String prepareExportProjects(TableExportCriteria<Project> criteria) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { - return getGenericExportTable(exportDataKey); + return prepareExportEntities(criteria); } - private final <T> String getGenericExportTable(final String exportDataKey) + // ---------------- methods which list entities using cache + + public final ResultSet<Sample> listSamples(final ListSampleCriteria listCriteria) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { - try - { - // Not directly needed but this refreshes the session. - getSessionToken(); - final TableExportCriteria<T> exportCriteria = getAndRemoveExportCriteria(exportDataKey); - final List<T> entities = fetchCachedEntities(exportCriteria); - return TSVRenderer.createTable(entities, exportCriteria.getColumnDefs()); - } catch (final UserFailureException e) - { - throw UserFailureExceptionTranslator.translate(e); - } + final String sessionToken = getSessionToken(); + return listEntities(listCriteria, new ListSamplesOriginalDataProvider(commonServer, + sessionToken, listCriteria)); + } + + public final ResultSet<Experiment> listExperiments(final ListExperimentsCriteria listCriteria) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + { + final String sessionToken = getSessionToken(); + return listEntities(listCriteria, new ListExperimentsOriginalDataProvider(commonServer, + listCriteria, sessionToken)); } public ResultSet<PropertyType> listPropertyTypes( DefaultResultSetConfig<String, PropertyType> criteria) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { - try - { - final IResultSetManager<String> resultSetManager = getResultSetManager(); - IOriginalDataProvider<PropertyType> dataProvider = - new IOriginalDataProvider<PropertyType>() - { - public List<PropertyType> getOriginalData() throws UserFailureException - { - return listPropertyTypes(); - } - }; - final IResultSet<String, PropertyType> result = - resultSetManager.getResultSet(criteria, dataProvider); - return ResultSetTranslator.translate(result); - } catch (final UserFailureException e) + return listEntities(criteria, new IOriginalDataProvider<PropertyType>() + { + public List<PropertyType> getOriginalData() throws UserFailureException + { + return listPropertyTypes(); + } + }); + } + + public final ResultSet<MatchingEntity> listMatchingEntities( + final SearchableEntity searchableEntityOrNull, final String queryText, + final IResultSetConfig<String, MatchingEntity> resultSetConfig) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + { + final String sessionToken = getSessionToken(); + final ch.systemsx.cisd.openbis.generic.shared.dto.SearchableEntity[] matchingEntities = + SearchableEntityTranslator.translate(searchableEntityOrNull); + return listEntities(resultSetConfig, new ListMatchingEntitiesOriginalDataProvider( + commonServer, sessionToken, matchingEntities, queryText)); + } + + public ResultSet<EntityTypePropertyType<?>> listPropertyTypeAssignments( + DefaultResultSetConfig<String, EntityTypePropertyType<?>> criteria) + { + return listEntities(criteria, new IOriginalDataProvider<EntityTypePropertyType<?>>() + { + public List<EntityTypePropertyType<?>> getOriginalData() + throws UserFailureException + { + return extractAssignments(listPropertyTypes()); + } + }); + } + + private static List<EntityTypePropertyType<?>> extractAssignments( + List<PropertyType> listPropertyTypes) + { + List<EntityTypePropertyType<?>> result = new ArrayList<EntityTypePropertyType<?>>(); + for (PropertyType propertyType : listPropertyTypes) { - throw UserFailureExceptionTranslator.translate(e); + extractAssignments(result, propertyType); } + return result; } - public final ResultSet<Sample> listSamples(final ListSampleCriteria listCriteria) - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + private static void extractAssignments(List<EntityTypePropertyType<?>> result, + final PropertyType propertyType) { - try + for (ExperimentTypePropertyType etpt : propertyType.getExperimentTypePropertyTypes()) { - final String sessionToken = getSessionToken(); - final IResultSetManager<String> resultSetManager = getResultSetManager(); - final IResultSet<String, Sample> result = - resultSetManager.getResultSet(listCriteria, - new ListSamplesOriginalDataProvider(commonServer, sessionToken, - listCriteria)); - return ResultSetTranslator.translate(result); - } catch (final UserFailureException e) + result.add(etpt); + } + for (SampleTypePropertyType etpt : propertyType.getSampleTypePropertyTypes()) { - throw UserFailureExceptionTranslator.translate(e); + result.add(etpt); + } + for (MaterialTypePropertyType etpt : propertyType.getMaterialTypePropertyTypes()) + { + result.add(etpt); } } - public final ResultSet<Experiment> listExperiments(final ListExperimentsCriteria listCriteria) + public ResultSet<Project> listProjects(DefaultResultSetConfig<String, Project> criteria) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + { + return listEntities(criteria, new IOriginalDataProvider<Project>() + { + public List<Project> getOriginalData() throws UserFailureException + { + return listProjects(); + } + }); + } + + private List<Project> listProjects() throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { try { final String sessionToken = getSessionToken(); - final IResultSetManager<String> resultSetManager = getResultSetManager(); - final IResultSet<String, Experiment> result = - resultSetManager.getResultSet(listCriteria, - new ListExperimentsOriginalDataProvider(commonServer, listCriteria, - sessionToken)); - return ResultSetTranslator.translate(result); + final List<ProjectPE> projects = commonServer.listProjects(sessionToken); + return ProjectTranslator.translate(projects); } catch (final UserFailureException e) { throw UserFailureExceptionTranslator.translate(e); } } + // ---------------- end list using cache ---------- + public final List<ExternalData> listExternalData(final String sampleIdentifier) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { @@ -511,61 +616,6 @@ public final class CommonClientService extends AbstractClientService implements } } - public final ResultSet<MatchingEntity> listMatchingEntities( - final SearchableEntity searchableEntityOrNull, final String queryText, - final IResultSetConfig<String, MatchingEntity> resultSetConfig) - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException - { - try - { - final String sessionToken = getSessionToken(); - final ch.systemsx.cisd.openbis.generic.shared.dto.SearchableEntity[] matchingEntities = - SearchableEntityTranslator.translate(searchableEntityOrNull); - final IResultSetManager<String> resultSetManager = getResultSetManager(); - final IResultSet<String, MatchingEntity> result = - resultSetManager.getResultSet(resultSetConfig, - new ListMatchingEntitiesOriginalDataProvider(commonServer, - sessionToken, matchingEntities, queryText)); - return ResultSetTranslator.translate(result); - } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e) - { - throw UserFailureExceptionTranslator.translate(e); - } - } - - public final void removeResultSet(final String resultSetKey) - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException - { - try - { - // Not directly needed but this refreshes the session. - getSessionToken(); - getResultSetManager().removeResultSet(resultSetKey); - } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e) - { - throw UserFailureExceptionTranslator.translate(e); - } - } - - public List<Project> listProjects() - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException - { - try - { - final String sessionToken = getSessionToken(); - final List<Project> result = new ArrayList<Project>(); - final List<ProjectPE> projects = commonServer.listProjects(sessionToken); - for (final ProjectPE project : projects) - { - result.add(ProjectTranslator.translate(project)); - } - return result; - } catch (final UserFailureException e) - { - throw UserFailureExceptionTranslator.translate(e); - } - } - public List<ExperimentType> listExperimentTypes() throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { @@ -592,23 +642,13 @@ public final class CommonClientService extends AbstractClientService implements { final String sessionToken = getSessionToken(); final List<PropertyTypePE> propertyTypes = commonServer.listPropertyTypes(sessionToken); - return translate(propertyTypes); + return PropertyTypeTranslator.translate(propertyTypes); } catch (final UserFailureException e) { throw UserFailureExceptionTranslator.translate(e); } } - private static List<PropertyType> translate(final List<PropertyTypePE> propertyTypes) - { - final List<PropertyType> result = new ArrayList<PropertyType>(); - for (final PropertyTypePE propType : propertyTypes) - { - result.add(PropertyTypeTranslator.translate(propType)); - } - return result; - } - public final List<DataType> listDataTypes() throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/ProjectTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/ProjectTranslator.java index 5a72376238d..4dc8db9302e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/ProjectTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/ProjectTranslator.java @@ -16,6 +16,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.server.translator; +import java.util.ArrayList; +import java.util.List; + import ch.systemsx.cisd.openbis.generic.client.shared.Person; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Project; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; @@ -35,6 +38,16 @@ public final class ProjectTranslator // Can not be instantiated. } + public final static List<Project> translate(final List<ProjectPE> projects) + { + final List<Project> result = new ArrayList<Project>(); + for (final ProjectPE project : projects) + { + result.add(ProjectTranslator.translate(project)); + } + return result; + } + public final static Project translate(final ProjectPE project) { if (project == null) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/PropertyTypeTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/PropertyTypeTranslator.java index 93e297f5add..1ec69ccf8f7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/PropertyTypeTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/PropertyTypeTranslator.java @@ -16,6 +16,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.server.translator; +import java.util.ArrayList; +import java.util.List; + import ch.systemsx.cisd.openbis.generic.client.shared.PropertyType; import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE; @@ -32,6 +35,16 @@ public final class PropertyTypeTranslator // Can not be instantiated. } + public final static List<PropertyType> translate(final List<PropertyTypePE> propertyTypes) + { + final List<PropertyType> result = new ArrayList<PropertyType>(); + for (final PropertyTypePE propType : propertyTypes) + { + result.add(PropertyTypeTranslator.translate(propType)); + } + return result; + } + public final static PropertyType translate(final PropertyTypePE propertyType) { final PropertyType result = new PropertyType(); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityTypePropertyTypeAssignmentTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityTypePropertyTypeAssignmentTest.java index 9240b2a0fe3..8757906db11 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityTypePropertyTypeAssignmentTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityTypePropertyTypeAssignmentTest.java @@ -17,15 +17,17 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CategoriesBuilder; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.CheckPropertyTypeAssignmentTable; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.FillPropertyTypeAssignmentForm; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeAssignmentColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeAssignmentForm; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.CheckSampleTable; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.ListSamples; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.SampleRow; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.renderer.SimpleYesNoRenderer; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row; @@ -43,31 +45,34 @@ public class EntityTypePropertyTypeAssignmentTest extends AbstractGWTTestCase private static final String NO_COMMENT = "No comment."; - private static final String EXPERIMENT = "EXPERIMENT"; - private static final String COMPOUND_HCS = "COMPOUND_HCS"; private static final String USER_COMMENT = "USER.COMMENT"; - private static final String SAMPLE = "SAMPLE"; - private static final String CONTROL_LAYOUT = "CONTROL_LAYOUT"; + private static final EntityKind EXPERIMENT = EntityKind.EXPERIMENT; + + private static final EntityKind SAMPLE = EntityKind.SAMPLE; + private final void prepareListingAfterAssignment(String propertyTypeCode, - String entityTypeCode, String entityKindName, int expectedEntries, boolean isMandatory) + String entityTypeCode, EntityKind entityKind, int expectedEntries, boolean isMandatory) { remoteConsole.prepare(new OpenTab(CategoriesBuilder.CATEGORIES.PROPERTY_TYPES, CategoriesBuilder.MENU_ELEMENTS.LIST_ASSIGNMENTS, PropertyTypeAssignmentForm.AssignPropertyTypeCallback.class)); CheckPropertyTypeAssignmentTable table = new CheckPropertyTypeAssignmentTable(); - table.expectedRow(new Row().withCell(ModelDataPropertyNames.PROPERTY_TYPE_CODE, - propertyTypeCode).withCell(ModelDataPropertyNames.ENTITY_TYPE_CODE, entityTypeCode) - .withCell(ModelDataPropertyNames.ENTITY_KIND, entityKindName).withCell( - ModelDataPropertyNames.IS_MANDATORY, isMandatory)); + table.expectedRow(new Row().withCell( + PropertyTypeAssignmentColDefKind.PROPERTY_TYPE_CODE.id(), propertyTypeCode) + .withCell(PropertyTypeAssignmentColDefKind.ENTITY_TYPE_CODE.id(), entityTypeCode) + .withCell(PropertyTypeAssignmentColDefKind.ENTITY_KIND.id(), + entityKind.getDescription()).withCell( + PropertyTypeAssignmentColDefKind.IS_MANDATORY.id(), + SimpleYesNoRenderer.render(isMandatory))); remoteConsole.prepare(table.expectedSize(expectedEntries)); } - public final void testAssignmenExperimentPropertyType() + public final void testAssignExperimentPropertyType() { remoteConsole.prepare(new Login("test", "a")); remoteConsole.prepare(new OpenTab(CategoriesBuilder.CATEGORIES.PROPERTY_TYPES, diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ExperimentBrowserTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ExperimentBrowserTest.java index 96f469b45f1..51ad0a43852 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ExperimentBrowserTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ExperimentBrowserTest.java @@ -35,7 +35,7 @@ public class ExperimentBrowserTest extends AbstractGWTTestCase public final void testListExperiments() { loginAndGotoListExperimentsTab(); - remoteConsole.prepare(new ListExperiments("DEFAULT", "SIRNA_HCS")); + remoteConsole.prepare(new ListExperiments("DEFAULT (CISD)", "SIRNA_HCS")); CheckExperimentTable table = new CheckExperimentTable(); table.expectedRow(new ExperimentRow("EXP-REUSE").valid()); table.expectedRow(new ExperimentRow("EXP-X").invalid()); @@ -49,5 +49,5 @@ public class ExperimentBrowserTest extends AbstractGWTTestCase remoteConsole.prepare(new Login("test", "a")); remoteConsole.prepare(new OpenTab(CategoriesBuilder.CATEGORIES.EXPERIMENTS, CategoriesBuilder.MENU_ELEMENTS.LIST)); - } + } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectRegistrationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectRegistrationTest.java index 55b2cc6b10d..60c3ae1fc6c 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectRegistrationTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectRegistrationTest.java @@ -17,11 +17,11 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CategoriesBuilder; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.CheckProjectTable; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.FillProjectRegistrationForm; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.ProjectColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.ProjectRegistrationForm; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row; @@ -49,8 +49,8 @@ public class ProjectRegistrationTest extends AbstractGWTTestCase CategoriesBuilder.MENU_ELEMENTS.LIST, ProjectRegistrationForm.ProjectRegistrationCallback.class)); final CheckProjectTable table = new CheckProjectTable(); - table.expectedRow(new Row().withCell(ModelDataPropertyNames.CODE, PROJECT_CODE_HER_MAJESTY) - .withCell(ModelDataPropertyNames.DESCRIPTION, DESCRIPTION_PROJECT_007)); + table.expectedRow(new Row().withCell(ProjectColDefKind.CODE.id(), PROJECT_CODE_HER_MAJESTY) + .withCell(ProjectColDefKind.DESCRIPTION.id(), DESCRIPTION_PROJECT_007)); remoteConsole.prepare(table.expectedSize(5)); launchTest(20000); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeAssignmentBrowserTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeAssignmentBrowserTest.java index 9380b78e59d..26bd4093938 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeAssignmentBrowserTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeAssignmentBrowserTest.java @@ -17,10 +17,10 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CategoriesBuilder; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.CheckPropertyTypeAssignmentTable; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeAssignmentColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row; @@ -38,9 +38,10 @@ public class PropertyTypeAssignmentBrowserTest extends AbstractGWTTestCase remoteConsole.prepare(new OpenTab(CategoriesBuilder.CATEGORIES.PROPERTY_TYPES, CategoriesBuilder.MENU_ELEMENTS.LIST_ASSIGNMENTS)); CheckPropertyTypeAssignmentTable table = new CheckPropertyTypeAssignmentTable(); - table.expectedRow(new Row().withCell(ModelDataPropertyNames.PROPERTY_TYPE_CODE, - "USER.DESCRIPTION").withCell(ModelDataPropertyNames.ENTITY_TYPE_CODE, - "CONTROL_LAYOUT").withCell(ModelDataPropertyNames.ENTITY_KIND, "SAMPLE")); + table.expectedRow(new Row().withCell( + PropertyTypeAssignmentColDefKind.PROPERTY_TYPE_CODE.id(), "USER.DESCRIPTION") + .withCell(PropertyTypeAssignmentColDefKind.ENTITY_TYPE_CODE.id(), "CONTROL_LAYOUT") + .withCell(PropertyTypeAssignmentColDefKind.ENTITY_KIND.id(), "Sample")); remoteConsole.prepare(table.expectedSize(24)); launchTest(20000); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ListExperiments.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ListExperiments.java index f49d5bf48cd..ec7f3946583 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ListExperiments.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ListExperiments.java @@ -62,7 +62,8 @@ public class ListExperiments extends AbstractDefaultTestCommand GWTUtils.setSelectedItem(experimentTypeSelector, ModelDataPropertyNames.CODE, experimentTypeName); - GWTUtils.setSelectedItem(project, ModelDataPropertyNames.CODE, projectCodeOrNull); + GWTUtils.setSelectedItem(project, ProjectSelectionWidget.DISPLAY_COLUMN_ID, + projectCodeOrNull); final Button refresh = (Button) GWTTestUtil.getWidgetWithID(BrowserGridPagingToolBar.REFRESH_BUTTON_ID); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/CheckProjectTable.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/CheckProjectTable.java index eec94f120ec..d77e1660937 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/CheckProjectTable.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/CheckProjectTable.java @@ -29,7 +29,7 @@ public class CheckProjectTable extends CheckTableCommand { public CheckProjectTable() { - super(ProjectGrid.createId(ProjectBrowser.ID), ProjectGrid.ListProjectsCallback.class); + super(ProjectGrid.GRID_ID, ProjectGrid.ListEntitiesCallback.class); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/CheckPropertyTypeAssignmentTable.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/CheckPropertyTypeAssignmentTable.java index 71578874002..5cff45051b7 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/CheckPropertyTypeAssignmentTable.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/CheckPropertyTypeAssignmentTable.java @@ -29,7 +29,7 @@ public class CheckPropertyTypeAssignmentTable extends CheckTableCommand { public CheckPropertyTypeAssignmentTable() { - super(PropertyTypeAssignmentGrid.createId(PropertyTypeAssignmentBrowser.ID), - PropertyTypeAssignmentGrid.ListPropertyTypesCallback.class); + super(PropertyTypeAssignmentGrid.GRID_ID, + PropertyTypeAssignmentGrid.ListEntitiesCallback.class); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/FillPropertyTypeAssignmentForm.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/FillPropertyTypeAssignmentForm.java index a1f27b4add9..0fa0257f12b 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/FillPropertyTypeAssignmentForm.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/FillPropertyTypeAssignmentForm.java @@ -27,6 +27,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.Samp import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.ExperimentTypeSelectionWidget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleTypeSelectionWidget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractDefaultTestCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.GWTTestUtil; @@ -47,29 +48,29 @@ public final class FillPropertyTypeAssignmentForm extends AbstractDefaultTestCom private String defaultValue; - private String entityKindName; + private EntityKind entityKind; private String widgetId; public FillPropertyTypeAssignmentForm(final boolean isMandatory, final String propertyTypeCode, - final String entityTypeCode, String defaultValue, String entityKindName) + final String entityTypeCode, String defaultValue, EntityKind entityKind) { this.isMandatory = isMandatory; this.propertyTypeCode = propertyTypeCode; this.entityTypeCode = entityTypeCode; this.defaultValue = defaultValue; - this.entityKindName = entityKindName; - widgetId = PropertyTypeAssignmentForm.ID_PREFIX + entityKindName; + this.entityKind = entityKind; + widgetId = PropertyTypeAssignmentForm.ID_PREFIX + entityKind; addCallbackClass(PropertyTypeSelectionWidget.ListPropertyTypesCallback.class); addEntityTypeCallback(); } private void addEntityTypeCallback() { - if (entityKindName.equals("EXPERIMENT")) + if (entityKind.equals(EntityKind.EXPERIMENT)) { addCallbackClass(ExperimentTypeSelectionWidget.ListExperimentTypesCallback.class); - } else if (entityKindName.equals("SAMPLE")) + } else if (entityKind.equals(EntityKind.SAMPLE)) { addCallbackClass(SampleTypeSelectionWidget.ListSampleTypesCallback.class); } else @@ -95,7 +96,7 @@ public final class FillPropertyTypeAssignmentForm extends AbstractDefaultTestCom (PropertyTypeSelectionWidget) GWTTestUtil .getWidgetWithID(PropertyTypeSelectionWidget.ID + widgetId + PropertyTypeAssignmentForm.PROPERTY_TYPE_ID_SUFFIX); - GWTUtils.setSelectedItem(propertyTypeSelector, PropertyTypeColDefKind.CODE.id(), + GWTUtils.setSelectedItem(propertyTypeSelector, ModelDataPropertyNames.CODE, propertyTypeCode); return propertyTypeSelector; } @@ -124,7 +125,7 @@ public final class FillPropertyTypeAssignmentForm extends AbstractDefaultTestCom private void chooseEntityType() { - if (entityKindName.equals("EXPERIMENT")) + if (entityKind.equals(EntityKind.EXPERIMENT)) { final ComboBox<ExperimentTypeModel> experimentTypeSelector = (ExperimentTypeSelectionWidget) GWTTestUtil @@ -134,7 +135,7 @@ public final class FillPropertyTypeAssignmentForm extends AbstractDefaultTestCom entityTypeCode); assertEquals(((ExperimentTypeSelectionWidget) experimentTypeSelector) .tryGetSelectedExperimentType().getCode(), entityTypeCode); - } else if (entityKindName.equals("SAMPLE")) + } else if (entityKind.equals(EntityKind.SAMPLE)) { final ComboBox<SampleTypeModel> sampleTypeSelector = (SampleTypeSelectionWidget) GWTTestUtil diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentAttachmentDownloadTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentAttachmentDownloadTest.java index 6ad6146d69d..5ab8925468c 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentAttachmentDownloadTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentAttachmentDownloadTest.java @@ -40,7 +40,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Abstract */ public class GenericExperimentAttachmentDownloadTest extends AbstractGWTTestCase { - private static final String DEFAULT = "DEFAULT"; + private static final String DEFAULT = "DEFAULT (CISD)"; private static final String EXP_REUSE = "EXP-REUSE"; diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewerTest.java index 6bcdb3644ec..1a7c31976bb 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewerTest.java @@ -62,7 +62,7 @@ public class GenericExperimentViewerTest extends AbstractGWTTestCase } } - private static final String DEFAULT = "DEFAULT"; + private static final String DEFAULT = "DEFAULT (CISD)"; private static final String EXP_REUSE = "EXP-REUSE"; @@ -78,7 +78,7 @@ public class GenericExperimentViewerTest extends AbstractGWTTestCase private static final String SIRNA_HCS = "SIRNA_HCS"; - private static final String NEMO = "NEMO"; + private static final String NEMO = "NEMO (CISD)"; private static final String EXP1 = "EXP1"; -- GitLab