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 e5e11de14a277e8340359a12c1eeb3a5c3c9dc4c..5bfd4b8b9cb99e71ab04f4c09c85311cb8ca4feb 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 @@ -118,7 +118,7 @@ public interface ICommonClientService extends IClientService /** * Returns a list of all groups. */ - public ResultSet<Space> listGroups(DefaultResultSetConfig<String, Space> criteria) + public TypedTableResultSet<Space> listGroups(DefaultResultSetConfig<String, TableModelRowWithObject<Space>> criteria) throws UserFailureException; /** @@ -136,7 +136,7 @@ public interface ICommonClientService extends IClientService /** * Like {@link #prepareExportSamples(TableExportCriteria)}, but for groups. */ - public String prepareExportGroups(final TableExportCriteria<Space> criteria) + public String prepareExportGroups(final TableExportCriteria<TableModelRowWithObject<Space>> criteria) throws UserFailureException; /** 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 b92befc7d14ac5b1d4788e0beb9a6220dcf6b900..c4ce6960389217d810846a4a217b2ceb2bff5101 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 @@ -109,8 +109,8 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync public void keepSessionAlive(final AsyncCallback<Boolean> asyncCallback); /** @see ICommonClientService#listGroups(DefaultResultSetConfig) */ - public void listGroups(DefaultResultSetConfig<String, Space> criteria, - final AsyncCallback<ResultSet<Space>> asyncCallback); + public void listGroups(DefaultResultSetConfig<String, TableModelRowWithObject<Space>> criteria, + final AsyncCallback<TypedTableResultSet<Space>> asyncCallback); /** @see ICommonClientService#listScripts(DefaultResultSetConfig) */ public void listScripts(DefaultResultSetConfig<String, Script> criteria, @@ -121,7 +121,7 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync AsyncCallback<String> callback); /** @see ICommonClientService#prepareExportGroups(TableExportCriteria) */ - public void prepareExportGroups(TableExportCriteria<Space> exportCriteria, + public void prepareExportGroups(TableExportCriteria<TableModelRowWithObject<Space>> exportCriteria, AsyncCallback<String> callback); /** @see ICommonClientService#registerGroup(String, String) */ 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 b7b1cf936e5ddc3a9147716af62e3fe0ee2b0d05..25b59ba8ce10bd2fc89dc04d942b4434b33690ca 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,7 +26,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpP import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AuthorizationGroupGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.GroupGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.SpaceGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.PersonGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.RoleAssignmentGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor; @@ -203,14 +203,14 @@ public final class ComponentProvider @Override public ITabItem create() { - IDisposableComponent component = GroupGrid.create(viewContext); + IDisposableComponent component = SpaceGrid.create(viewContext); return createTab(getTabTitle(), component); } @Override public String getId() { - return GroupGrid.BROWSER_ID; + return SpaceGrid.BROWSER_ID; } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DisplayTypeIDGenerator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DisplayTypeIDGenerator.java index 8b6982b872d135602b193e05f894539b515eb4ab..ed88ab4984400105baf7685009aa417eeb259c2a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DisplayTypeIDGenerator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DisplayTypeIDGenerator.java @@ -58,7 +58,7 @@ public enum DisplayTypeIDGenerator implements IDisplayTypeIDGenerator PLUGIN_TASKS_BROWSER_GRID("plugin-tasks-browser-grid"), - GROUPS_BROWSER_GRID("group-browser-grid"), + SPACES_BROWSER_GRID("space-browser-grid"), SCRIPTS_BROWSER_GRID("script-browser-grid"), diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java index 18ea0b6a14174ca75e649bc29a053a76c6f93b9c..8b88e8edf1501a8f92f99fc70f0274356e6b7d66 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java @@ -16,14 +16,21 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer; +import com.extjs.gxt.ui.client.store.ListStore; +import com.extjs.gxt.ui.client.widget.grid.ColumnData; +import com.extjs.gxt.ui.client.widget.grid.Grid; +import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.DOMUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.lang.StringEscapeUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.SimplePersonRenderer; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractRegistrationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * A <i>static</i> class to render {@link Person}. @@ -40,6 +47,25 @@ public final class PersonRenderer private static final char LOGIN_END = ']'; private static final char LOGIN_START = '['; + + /** + * Registrator renderer. Works only with {@link TableModelRowWithObject} wrapping a + * subclass of {@link AbstractRegistrationHolder}. + */ + public static final GridCellRenderer<BaseEntityModel<?>> REGISTRATOR_RENDERER = + new GridCellRenderer<BaseEntityModel<?>>() + { + @SuppressWarnings("unchecked") + public Object render(BaseEntityModel<?> model, String property, + ColumnData config, int rowIndex, int colIndex, + ListStore<BaseEntityModel<?>> store, Grid<BaseEntityModel<?>> grid) + { + Person registrator = + ((TableModelRowWithObject<AbstractRegistrationHolder>) model + .getBaseObject()).getObjectOrNull().getRegistrator(); + return PersonRenderer.createPersonAnchor(registrator); + } + }; private PersonRenderer() { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupSelectionWidget.java index be5425fee72455889e90f2d0ee36ede7ba6bef42..d5a7b7637dc4ab72005aedc35636566b3163db37 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupSelectionWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupSelectionWidget.java @@ -16,6 +16,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui; +import java.util.ArrayList; import java.util.List; import com.extjs.gxt.ui.client.store.ListStore; @@ -30,12 +31,13 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.Mode import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList; 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.ResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SessionContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.User; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** * {@link ComboBox} containing list of groups loaded from the server. @@ -114,7 +116,7 @@ public class GroupSelectionWidget extends DropDownList<GroupModel, Space> return space; } - private final class ListGroupsCallback extends AbstractAsyncCallback<ResultSet<Space>> + private final class ListGroupsCallback extends AbstractAsyncCallback<TypedTableResultSet<Space>> { ListGroupsCallback(final IViewContext<?> viewContext) { @@ -122,7 +124,7 @@ public class GroupSelectionWidget extends DropDownList<GroupModel, Space> } @Override - protected final void process(final ResultSet<Space> result) + protected final void process(final TypedTableResultSet<Space> result) { final ListStore<GroupModel> groupStore = getStore(); groupStore.removeAll(); @@ -134,7 +136,13 @@ public class GroupSelectionWidget extends DropDownList<GroupModel, Space> { groupStore.add(new GroupModel(createAllSpaces())); } - groupStore.add(convertItems(result.getList().extractOriginalObjects())); + List<TableModelRowWithObject<Space>> tableRows = result.getResultSet().getList().extractOriginalObjects(); + List<Space> spaces = new ArrayList<Space>(); + for (TableModelRowWithObject<Space> tableModelRowWithObject : tableRows) + { + spaces.add(tableModelRowWithObject.getObjectOrNull()); + } + groupStore.add(convertItems(spaces)); dataLoaded = true; if (groupStore.getCount() > 0) { @@ -206,7 +214,7 @@ public class GroupSelectionWidget extends DropDownList<GroupModel, Space> @Override protected void loadData(AbstractAsyncCallback<List<Space>> callback) { - DefaultResultSetConfig<String, Space> config = DefaultResultSetConfig.createFetchAll(); + DefaultResultSetConfig<String, TableModelRowWithObject<Space>> config = DefaultResultSetConfig.createFetchAll(); viewContext.getCommonService().listGroups(config, new ListGroupsCallback(viewContext)); callback.ignore(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java similarity index 80% rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupGrid.java rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java index f9d75f4776cb79e974f56a26fe55607a43753615..34acb9212d27e14a2c624535c956b18a56436ab8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/GroupGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java @@ -16,6 +16,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui; +import java.util.ArrayList; import java.util.List; import com.extjs.gxt.ui.client.event.ButtonEvent; @@ -32,11 +33,9 @@ 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.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PersonRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.amc.AddGroupDialog; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.GroupColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.DescriptionField; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractSimpleBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IBrowserGridActionInvoker; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; @@ -45,23 +44,24 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget. import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.lang.StringEscapeUtils; 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.SpaceGridColumnIDs; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** - * Grid displaying groups. + * Grid displaying spaces. * * @author Piotr Buczek */ -public class GroupGrid extends AbstractSimpleBrowserGrid<Space> +public class SpaceGrid extends TypedTableGrid<Space> { // browser consists of the grid and the paging toolbar - public static final String BROWSER_ID = GenericConstants.ID_PREFIX + "group-browser"; + public static final String BROWSER_ID = GenericConstants.ID_PREFIX + "space-browser"; public static final String GRID_ID = BROWSER_ID + "_grid"; @@ -76,14 +76,14 @@ public class GroupGrid extends AbstractSimpleBrowserGrid<Space> public static IDisposableComponent create( final IViewContext<ICommonClientServiceAsync> viewContext) { - final GroupGrid grid = new GroupGrid(viewContext); + final SpaceGrid grid = new SpaceGrid(viewContext); grid.extendBottomToolbar(); return grid.asDisposableWithoutToolbar(); } - private GroupGrid(IViewContext<ICommonClientServiceAsync> viewContext) + private SpaceGrid(IViewContext<ICommonClientServiceAsync> viewContext) { - super(viewContext, BROWSER_ID, GRID_ID, DisplayTypeIDGenerator.GROUPS_BROWSER_GRID); + super(viewContext, BROWSER_ID, true, DisplayTypeIDGenerator.SPACES_BROWSER_GRID); postRegistrationCallback = createRefreshGridAction(); } @@ -108,12 +108,12 @@ public class GroupGrid extends AbstractSimpleBrowserGrid<Space> Button editButton = createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT), - new ISelectedEntityInvoker<BaseEntityModel<Space>>() + new ISelectedEntityInvoker<BaseEntityModel<TableModelRowWithObject<Space>>>() { - public void invoke(BaseEntityModel<Space> selectedItem, + public void invoke(BaseEntityModel<TableModelRowWithObject<Space>> selectedItem, boolean keyPressed) { - Space space = selectedItem.getBaseObject(); + Space space = selectedItem.getBaseObject().getObjectOrNull(); createEditDialog(space).show(); } }); @@ -125,7 +125,7 @@ public class GroupGrid extends AbstractSimpleBrowserGrid<Space> new AbstractCreateDialogListener() { @Override - protected Dialog createDialog(List<Space> groups, + protected Dialog createDialog(List<TableModelRowWithObject<Space>> groups, IBrowserGridActionInvoker invoker) { return new GroupListDeletionConfirmationDialog(viewContext, @@ -168,47 +168,36 @@ public class GroupGrid extends AbstractSimpleBrowserGrid<Space> } @Override - protected IColumnDefinitionKind<Space>[] getStaticColumnsDefinition() + protected String translateColumnIdToDictionaryKey(String columnID) { - return GroupColDefKind.values(); + return columnID.toLowerCase(); } - + @Override - protected ColumnDefsAndConfigs<Space> createColumnsDefinition() + protected ColumnDefsAndConfigs<TableModelRowWithObject<Space>> createColumnsDefinition() { - ColumnDefsAndConfigs<Space> schema = super.createColumnsDefinition(); - schema.setGridCellRendererFor(GroupColDefKind.DESCRIPTION.id(), - createMultilineStringCellRenderer()); - return schema; + ColumnDefsAndConfigs<TableModelRowWithObject<Space>> definitions = + super.createColumnsDefinition(); + definitions.setGridCellRendererFor(SpaceGridColumnIDs.REGISTRATOR, PersonRenderer.REGISTRATOR_RENDERER); + return definitions; } @Override - protected void listEntities(DefaultResultSetConfig<String, Space> resultSetConfig, - AbstractAsyncCallback<ResultSet<Space>> callback) + protected void listTableRows( + DefaultResultSetConfig<String, TableModelRowWithObject<Space>> resultSetConfig, + AsyncCallback<TypedTableResultSet<Space>> callback) { viewContext.getService().listGroups(resultSetConfig, callback); } @Override - protected void prepareExportEntities(TableExportCriteria<Space> exportCriteria, + protected void prepareExportEntities(TableExportCriteria<TableModelRowWithObject<Space>> exportCriteria, AbstractAsyncCallback<String> callback) { viewContext.getService().prepareExportGroups(exportCriteria, callback); } @Override - protected List<IColumnDefinition<Space>> getInitialFilters() - { - return asColumnFilters(new GroupColDefKind[] - { GroupColDefKind.CODE }); - } - - @Override - protected void showEntityViewer(final Space space, boolean editMode, boolean inBackground) - { - assert false : "not implemented"; - } - public DatabaseModificationKind[] getRelevantModifications() { return new DatabaseModificationKind[] @@ -217,7 +206,7 @@ public class GroupGrid extends AbstractSimpleBrowserGrid<Space> } private static final class GroupListDeletionConfirmationDialog extends - AbstractDataListDeletionConfirmationDialog<Space> + AbstractDataListDeletionConfirmationDialog<TableModelRowWithObject<Space>> { private final IViewContext<ICommonClientServiceAsync> viewContext; @@ -225,7 +214,7 @@ public class GroupGrid extends AbstractSimpleBrowserGrid<Space> private final AbstractAsyncCallback<Void> callback; public GroupListDeletionConfirmationDialog( - IViewContext<ICommonClientServiceAsync> viewContext, List<Space> data, + IViewContext<ICommonClientServiceAsync> viewContext, List<TableModelRowWithObject<Space>> data, AbstractAsyncCallback<Void> callback) { super(viewContext, data); @@ -236,7 +225,14 @@ public class GroupGrid extends AbstractSimpleBrowserGrid<Space> @Override protected void executeConfirmedAction() { - viewContext.getCommonService().deleteGroups(TechId.createList(data), reason.getValue(), + + List<TableModelRowWithObject<Space>> d = data; + List<TechId> list = new ArrayList<TechId>(); + for (TableModelRowWithObject<Space> tableModelRowWithObject : d) + { + list.add(new TechId(tableModelRowWithObject.getObjectOrNull().getId())); + } + viewContext.getCommonService().deleteGroups(list, reason.getValue(), callback); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SpaceGridColumnIDs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SpaceGridColumnIDs.java new file mode 100644 index 0000000000000000000000000000000000000000..cf085bca53485c45d917e34c74b620e00db53a5a --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SpaceGridColumnIDs.java @@ -0,0 +1,35 @@ +/* + * Copyright 2010 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.client.web.client.dto; + + +/** + * + * + * @author Franz-Josef Elmer + */ +public class SpaceGridColumnIDs +{ + public static final String CODE = "CODE"; + + public static final String DESCRIPTION = "DESCRIPTION"; + + public static final String REGISTRATOR = "REGISTRATOR"; + + public static final String REGISTRATION_DATE = "REGISTRATION_DATE"; + +} 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 0f7baef7a347044b9f769965214f4746ef79b0f1..bc83472150531a40b0e997317ca3751ed0342865 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 @@ -67,6 +67,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.CacheManager import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.DataProviderAdapter; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IOriginalDataProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSet; +import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.SpacesProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.TableDataProviderFactory; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.VocabularyTermsProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.translator.ResultSetTranslator; @@ -475,7 +476,7 @@ public final class CommonClientService extends AbstractClientService implements return prepareExportEntities(criteria); } - public String prepareExportGroups(TableExportCriteria<Space> criteria) + public String prepareExportGroups(TableExportCriteria<TableModelRowWithObject<Space>> criteria) { return prepareExportEntities(criteria); } @@ -611,15 +612,12 @@ public final class CommonClientService extends AbstractClientService implements } } - public ResultSet<Space> listGroups(DefaultResultSetConfig<String, Space> criteria) + public TypedTableResultSet<Space> listGroups(DefaultResultSetConfig<String, TableModelRowWithObject<Space>> criteria) { - return listEntities(criteria, new AbstractOriginalDataProviderWithoutHeaders<Space>() - { - public List<Space> getOriginalData() throws UserFailureException - { - return listGroups(); - } - }); + SpacesProvider spacesProvider = new SpacesProvider(commonServer, getSessionToken()); + DataProviderAdapter<Space> dataProvider = new DataProviderAdapter<Space>(spacesProvider); + ResultSet<TableModelRowWithObject<Space>> resultSet = listEntities(criteria, dataProvider); + return new TypedTableResultSet<Space>(resultSet); } public ResultSet<Script> listScripts(DefaultResultSetConfig<String, Script> criteria) @@ -647,21 +645,6 @@ public final class CommonClientService extends AbstractClientService implements } } - private List<Space> listGroups() - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException - { - try - { - final String sessionToken = getSessionToken(); - final DatabaseInstanceIdentifier identifier = new DatabaseInstanceIdentifier(null); - final List<Space> groups = commonServer.listSpaces(sessionToken, identifier); - return groups; - } catch (final UserFailureException e) - { - throw UserFailureExceptionTranslator.translate(e); - } - } - public List<AuthorizationGroup> listAuthorizationGroups() 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/resultset/SpacesProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SpacesProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..ab687ebda08ffb4d719028b0eb676101c5e0f840 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SpacesProvider.java @@ -0,0 +1,65 @@ +/* + * Copyright 2010 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.client.web.server.resultset; + +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.SpaceGridColumnIDs.CODE; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.SpaceGridColumnIDs.DESCRIPTION; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.SpaceGridColumnIDs.REGISTRATION_DATE; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.SpaceGridColumnIDs.REGISTRATOR; + +import java.util.List; + +import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.DatabaseInstanceIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; + +/** + * + * + * @author Franz-Josef Elmer + */ +public class SpacesProvider extends AbstractCommonTableModelProvider<Space> +{ + public SpacesProvider(ICommonServer commonServer, String sessionToken) + { + super(commonServer, sessionToken); + } + + @Override + protected TypedTableModel<Space> createTableModel() + { + DatabaseInstanceIdentifier identifier = new DatabaseInstanceIdentifier(null); + List<Space> spaces = commonServer.listSpaces(sessionToken, identifier); + TypedTableModelBuilder<Space> builder = new TypedTableModelBuilder<Space>(); + builder.addColumn(CODE); + builder.addColumn(DESCRIPTION).withDefaultWidth(200); + builder.addColumn(REGISTRATOR).withDefaultWidth(200); + builder.addColumn(REGISTRATION_DATE).withDefaultWidth(300).hideByDefault(); + for (Space space : spaces) + { + builder.addRow(space); + builder.column(CODE).addString(space.getCode()); + builder.column(DESCRIPTION).addString(space.getDescription()); + builder.column(REGISTRATOR).addPerson(space.getRegistrator()); + builder.column(REGISTRATION_DATE).addDate(space.getRegistrationDate()); + } + return builder.getModel(); + } + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabularyTermsProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabularyTermsProvider.java index 10e0b83cb2e8720a70b422486bf0ae35541d9678..fac647a6ce7d0ccb0584755ece42f81d423e55c0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabularyTermsProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabularyTermsProvider.java @@ -32,7 +32,6 @@ import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermGr import java.util.List; import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; -import ch.systemsx.cisd.openbis.generic.shared.basic.SimplePersonRenderer; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; @@ -85,7 +84,7 @@ public class VocabularyTermsProvider extends AbstractCommonTableModelProvider<Vo builder.column(DESCRIPTION).addString(term.getDescription()); builder.column(ORDINAL).addInteger(term.getOrdinal()); builder.column(URL).addString(term.getUrl()); - builder.column(REGISTRATOR).addString(SimplePersonRenderer.createPersonName(term.getRegistrator()).toString()); + builder.column(REGISTRATOR).addPerson(term.getRegistrator()); builder.column(REGISTRATION_DATE).addDate(term.getRegistrationDate()); builder.column(TERM_TOTAL_USAGE).addInteger((long) termWithStats.getTotalUsageCounter()); builder.column(TERM_FOR_DATA_SET_USAGE).addInteger(termWithStats.getUsageCounter(EntityKind.DATA_SET)); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/PersonTableCell.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/PersonTableCell.java new file mode 100644 index 0000000000000000000000000000000000000000..cd7b07f89d0b737b1d4769190af78fc2fcc0ce8f --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/PersonTableCell.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.shared.basic.dto; + +/** + * + * + * @author Franz-Josef Elmer + */ +public class PersonTableCell implements ISerializableComparable +{ + private static final long serialVersionUID = ServiceVersionHolder.VERSION; + + private Person person; + + public PersonTableCell(Person person) + { + this.person = person; + } + + public Person getPerson() + { + return person; + } + + public int compareTo(ISerializableComparable o) + { + // TODO Auto-generated method stub + return 0; + } + + // --------------------------- + + // GWT only + @SuppressWarnings("unused") + private PersonTableCell() + { + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/IColumn.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/IColumn.java index 9a68c4ffd2ad1418b430f620498f27d4119ffdb8..041f422920db662e260f94699e18a132e54f48fb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/IColumn.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/IColumn.java @@ -20,6 +20,7 @@ import java.util.Date; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; /** @@ -68,4 +69,9 @@ public interface IColumn * Adds a date value to the column. */ public void addDate(Date valueOrNull); + + /** + * Adds a person to the column as a string. + */ + public void addPerson(Person personOrNull); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/TypedTableModelBuilder.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/TypedTableModelBuilder.java index 62f3b5729deb70f04c85cb82f8bcd340a0d30498..991742c7e3b4baf1660216e2b94659a62f5bdc6b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/TypedTableModelBuilder.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/TypedTableModelBuilder.java @@ -32,12 +32,14 @@ import org.apache.commons.lang.StringUtils; import com.google.gwt.user.client.rpc.IsSerializable; +import ch.systemsx.cisd.openbis.generic.shared.basic.SimplePersonRenderer; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DateTableCell; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DoubleTableCell; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IntegerTableCell; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.StringTableCell; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader; @@ -236,6 +238,11 @@ public class TypedTableModelBuilder<T extends IsSerializable> { header.setDataType(DataTypeUtils.getCompatibleDataType(header.getDataType(), dataType)); } + + public void addPerson(Person personOrNull) + { + addString(SimplePersonRenderer.createPersonName(personOrNull).toString()); + } } private final Map<String, Column> columns = new HashMap<String, Column>(); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/amc/CheckGroupTable.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/amc/CheckGroupTable.java index a32e781e4a5d014d21bb446b8f034bae420eb873..e2d28f1566ffcd647b7ecdb64878d2678233fd50 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/amc/CheckGroupTable.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/amc/CheckGroupTable.java @@ -16,7 +16,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.amc; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.GroupGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.SpaceGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractDefaultTestCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.CheckTableCommand; @@ -29,7 +29,7 @@ public class CheckGroupTable extends CheckTableCommand { public CheckGroupTable() { - super(GroupGrid.GRID_ID); + super(SpaceGrid.GRID_ID); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/amc/CreateGroup.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/amc/CreateGroup.java index b2cc3bde11761b6b94bd64962122dd1ebd00898d..bc987a8cd1422d011792908e98e3f5f3366381e7 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/amc/CreateGroup.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/amc/CreateGroup.java @@ -17,7 +17,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.amc; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.MainTabPanel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.GroupGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.SpaceGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractDefaultTestCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.CheckTableCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.GWTTestUtil; @@ -33,7 +33,7 @@ public final class CreateGroup extends CheckTableCommand public CreateGroup(final String groupCode) { - super(GroupGrid.GRID_ID); + super(SpaceGrid.GRID_ID); this.groupCode = groupCode; } @@ -44,9 +44,9 @@ public final class CreateGroup extends CheckTableCommand @Override public final void execute() { - GWTTestUtil.selectTabItemWithId(MainTabPanel.ID, GroupGrid.BROWSER_ID + GWTTestUtil.selectTabItemWithId(MainTabPanel.ID, SpaceGrid.BROWSER_ID + MainTabPanel.TAB_SUFFIX); - GWTTestUtil.clickButtonWithID(GroupGrid.ADD_BUTTON_ID); + GWTTestUtil.clickButtonWithID(SpaceGrid.ADD_BUTTON_ID); GWTTestUtil.getTextFieldWithID(AddGroupDialog.CODE_FIELD_ID).setValue(groupCode); GWTTestUtil.clickButtonWithID(AddGroupDialog.SAVE_BUTTON_ID); }