From 057bebcc1bcd92e97c008edc8c0088cb61c2f4c1 Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Thu, 14 Jul 2011 08:03:03 +0000 Subject: [PATCH] [LMS-2366] client side permanent deletion with stub on server side SVN: 22135 --- .../web/client/ICommonClientService.java | 5 ++ .../web/client/ICommonClientServiceAsync.java | 5 ++ .../client/web/client/application/Dict.java | 6 ++ .../application/ui/deletion/DeletionGrid.java | 23 +++--- .../PermanentDeletionConfirmationDialog.java | 75 +++++++++++++++++++ .../web/server/CommonClientService.java | 6 ++ .../openbis/generic/server/CommonServer.java | 8 ++ .../generic/server/CommonServerLogger.java | 7 +- .../openbis/generic/shared/ICommonServer.java | 10 ++- .../cisd/openbis/public/common-dictionary.js | 4 +- .../shared/ICommonServer.java.expected | 10 ++- 11 files changed, 145 insertions(+), 14 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/PermanentDeletionConfirmationDialog.java 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 1a5e4d67dd1..afbab8efcab 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 @@ -1094,4 +1094,9 @@ public interface ICommonClientService extends IClientService */ public void revertDeletions(List<TechId> deletionIds) throws UserFailureException; + /** + * Permanently deletes entities moved to trash with specified deletions. + */ + public void deletePermanently(List<TechId> deletionIds) 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 ed07e57e708..d8c54c32653 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 @@ -988,4 +988,9 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync * @see ICommonClientService#revertDeletions(List) */ public void revertDeletions(List<TechId> deletionIds, AsyncCallback<Void> callback); + + /** + * @see ICommonClientService#deletePermanently(List) + */ + public void deletePermanently(List<TechId> deletionIds, AsyncCallback<Void> callback); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java index 4fd575c229f..9fe8f0085b9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java @@ -528,6 +528,12 @@ public abstract class Dict public static final String REVERT_DELETIONS_CONFIRMATION_MSG = "revert_deletions_confirmation_msg"; + public static final String PERMANENT_DELETIONS_CONFIRMATION_TITLE = + "permanent_deletions_confirmation_title"; + + public static final String PERMANENT_DELETIONS_CONFIRMATION_MSG = + "permanent_deletions_confirmation_msg"; + // // Sample Viewer // diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/DeletionGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/DeletionGrid.java index b71dcd557e8..38c8684d9b8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/DeletionGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/DeletionGrid.java @@ -21,7 +21,6 @@ import java.util.Arrays; import java.util.List; import com.extjs.gxt.ui.client.widget.Dialog; -import com.extjs.gxt.ui.client.widget.MessageBox; import com.extjs.gxt.ui.client.widget.button.Button; import com.google.gwt.user.client.rpc.AsyncCallback; @@ -31,7 +30,6 @@ 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.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.TypedTableGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; @@ -96,16 +94,21 @@ public class DeletionGrid extends TypedTableGrid<Deletion> addButton(revertButton); Button deletePermanentlyButton = - createSelectedItemButton( - viewContext.getMessage(Dict.BUTTON_DELETE_PERMANENTLY), - new ISelectedEntityInvoker<BaseEntityModel<TableModelRowWithObject<Deletion>>>() + createSelectedItemsButton(viewContext.getMessage(Dict.BUTTON_DELETE_PERMANENTLY), + new AbstractCreateDialogListener() { - public void invoke( - BaseEntityModel<TableModelRowWithObject<Deletion>> selectedItem, - boolean keyPressed) + @Override + protected Dialog createDialog( + List<TableModelRowWithObject<Deletion>> data, + IBrowserGridActionInvoker invoker) { - // TODO - MessageBox.info("Not implemented yet", "", null); + List<Deletion> deletions = new ArrayList<Deletion>(); + for (TableModelRowWithObject<Deletion> row : data) + { + deletions.add(row.getObjectOrNull()); + } + return new PermanentDeletionConfirmationDialog(viewContext, + deletions, createRefreshCallback(invoker)); } }); addButton(deletePermanentlyButton); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/PermanentDeletionConfirmationDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/PermanentDeletionConfirmationDialog.java new file mode 100644 index 00000000000..482f1eed040 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/PermanentDeletionConfirmationDialog.java @@ -0,0 +1,75 @@ +/* + * 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.deletion; + +import java.util.Collections; +import java.util.List; + +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.Dict; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractDataConfirmationDialog; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Deletion; + +public final class PermanentDeletionConfirmationDialog extends + AbstractDataConfirmationDialog<List<Deletion>> +{ + private static final int LABEL_WIDTH = 60; + + private static final int FIELD_WIDTH = 180; + + private final IViewContext<ICommonClientServiceAsync> viewContext; + + private final AbstractAsyncCallback<Void> callback; + + public PermanentDeletionConfirmationDialog(IViewContext<ICommonClientServiceAsync> viewContext, + List<Deletion> deletions, AbstractAsyncCallback<Void> callback) + { + super(viewContext, deletions, viewContext + .getMessage(Dict.PERMANENT_DELETIONS_CONFIRMATION_TITLE)); + this.viewContext = viewContext; + this.callback = callback; + } + + public PermanentDeletionConfirmationDialog(IViewContext<ICommonClientServiceAsync> viewContext, + Deletion deletion, AbstractAsyncCallback<Void> callback) + { + this(viewContext, Collections.singletonList(deletion), callback); + } + + @Override + protected void executeConfirmedAction() + { + viewContext.getCommonService().deletePermanently(TechId.createList(data), callback); + } + + @Override + protected String createMessage() + { + return viewContext.getMessage(Dict.PERMANENT_DELETIONS_CONFIRMATION_MSG, data.size()); + } + + @Override + protected void extendForm() + { + formPanel.setLabelWidth(LABEL_WIDTH); + formPanel.setFieldWidth(FIELD_WIDTH); + } + +} 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 84e179ae71d..5a4d82c164b 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 @@ -2220,4 +2220,10 @@ public final class CommonClientService extends AbstractClientService implements { commonServer.revertDeletions(getSessionToken(), deletionIds); } + + public void deletePermanently(List<TechId> deletionIds) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + { + commonServer.deletePermanently(getSessionToken(), deletionIds); + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java index bf90fb63a04..22d4c188caf 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java @@ -2404,6 +2404,14 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } } + public final void deletePermanently(final String sessionToken, final List<TechId> deletionIds) + { + @SuppressWarnings("unused") + final Session session = getSession(sessionToken); + + throw new UserFailureException("This feature is not yet implemented."); + } + private static UserFailureException wrapExceptionWithEntityIdentifier( UserFailureException exception, IEntityInformationHolderWithIdentifier entity) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java index 5a809f00862..6e4d2741b5e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java @@ -1134,6 +1134,11 @@ final class CommonServerLogger extends AbstractServerLogger implements ICommonSe public void revertDeletions(String sessionToken, List<TechId> deletionIds) { - logTracking(sessionToken, "revertDeletions", "ID(%s)", deletionIds); + logTracking(sessionToken, "revertDeletions", "ID(%s)", abbreviate(deletionIds)); + } + + public void deletePermanently(String sessionToken, List<TechId> deletionIds) + { + logTracking(sessionToken, "deletePermanently", "ID(%s)", abbreviate(deletionIds)); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java index 5bf5c02c3a1..f59902aae10 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java @@ -1444,7 +1444,7 @@ public interface ICommonServer extends IServer public List<Deletion> listDeletions(String sessionToken); /** - * Reverts specified deletion (puts back all objects moved to trash in the deletion). + * Reverts specified deletions (puts back all entities moved to trash in the deletions). */ @Transactional // TODO make it possible for deletion creator @@ -1454,4 +1454,12 @@ public interface ICommonServer extends IServer { ObjectKind.EXPERIMENT, ObjectKind.SAMPLE, ObjectKind.DATA_SET }) public void revertDeletions(final String sessionToken, final List<TechId> deletionIds); + /** + * Permanently deletes entities moved to trash in specified deletions. + */ + @Transactional + @RolesAllowed(RoleWithHierarchy.INSTANCE_ADMIN) + @DatabaseCreateOrDeleteModification(value = + { ObjectKind.DELETION, ObjectKind.EXPERIMENT, ObjectKind.SAMPLE, ObjectKind.DATA_SET }) + public void deletePermanently(final String sessionToken, final List<TechId> deletionIds); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js index 5aaed0ce026..f34ed83c3a1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js +++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js @@ -78,7 +78,9 @@ var common = { button_revert_deletion: "Revert", button_delete_permanently: "Delete Permanently", revert_deletions_confirmation_title: "Confirm Revert", - revert_deletions_confirmation_msg: "Are you sure you want to revert {0} deletion(s)?", + revert_deletions_confirmation_msg: "Are you sure you want to revert {0} selected deletion(s)?", + permanent_deletions_confirmation_title: "Confirm Permanent Deletion", + permanent_deletions_confirmation_msg: "Are you sure you want to <b>permanently</b> delete all entities that were moved to trash in selected {0} deletion(s)?", // // Table Modifications diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected index 5bf5c02c3a1..f59902aae10 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected @@ -1444,7 +1444,7 @@ public interface ICommonServer extends IServer public List<Deletion> listDeletions(String sessionToken); /** - * Reverts specified deletion (puts back all objects moved to trash in the deletion). + * Reverts specified deletions (puts back all entities moved to trash in the deletions). */ @Transactional // TODO make it possible for deletion creator @@ -1454,4 +1454,12 @@ public interface ICommonServer extends IServer { ObjectKind.EXPERIMENT, ObjectKind.SAMPLE, ObjectKind.DATA_SET }) public void revertDeletions(final String sessionToken, final List<TechId> deletionIds); + /** + * Permanently deletes entities moved to trash in specified deletions. + */ + @Transactional + @RolesAllowed(RoleWithHierarchy.INSTANCE_ADMIN) + @DatabaseCreateOrDeleteModification(value = + { ObjectKind.DELETION, ObjectKind.EXPERIMENT, ObjectKind.SAMPLE, ObjectKind.DATA_SET }) + public void deletePermanently(final String sessionToken, final List<TechId> deletionIds); } -- GitLab