From b625ac751392117716f43b5abdc23e2199484cb1 Mon Sep 17 00:00:00 2001
From: izabel <izabel>
Date: Tue, 23 Jun 2009 21:12:08 +0000
Subject: [PATCH] [LMS-960] update file format description

SVN: 11512
---
 .../web/client/ICommonClientService.java      |  6 +++
 .../web/client/ICommonClientServiceAsync.java |  5 +++
 .../ui/data/FileFormatTypeGrid.java           | 41 +++++++++++++++++++
 .../web/server/CommonClientService.java       | 13 ++++++
 .../openbis/generic/server/CommonServer.java  | 17 ++++++++
 .../generic/server/CommonServerLogger.java    |  7 ++++
 .../openbis/generic/shared/ICommonServer.java |  9 ++++
 7 files changed, 98 insertions(+)

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 9a224c76bc3..5d66f1ce728 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
@@ -41,6 +41,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.VocabularyTermWith
 import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetSearchCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType;
@@ -527,4 +528,9 @@ public interface ICommonClientService extends IClientService
      */
     public String getTemplate(EntityKind kind, String type, boolean autoGenerate);
 
+    /**
+     * Updates the file format.
+     */
+    public void updateFileFormatType(AbstractType type);
+
 }
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 469e4a7df28..420dcef51d2 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
@@ -454,4 +454,9 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync
     public void getTemplate(EntityKind kind, String type, boolean autoGenerate,
             AsyncCallback<String> callback);
 
+    /**
+     * @see ICommonClientService#updateFileFormatType(AbstractType type)
+     */
+    public void updateFileFormatType(AbstractType type, AsyncCallback<Void> registrationCallback);
+
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java
index 322a93ffbbf..b7ef8d2d103 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java
@@ -25,6 +25,7 @@ import com.extjs.gxt.ui.client.event.SelectionListener;
 import com.extjs.gxt.ui.client.event.ToolBarEvent;
 import com.extjs.gxt.ui.client.widget.Window;
 import com.extjs.gxt.ui.client.widget.button.Button;
+import com.extjs.gxt.ui.client.widget.form.TextField;
 import com.extjs.gxt.ui.client.widget.toolbar.AdapterToolItem;
 import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem;
 import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -41,9 +42,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.entity_type.AddTypeDialog;
 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.IDisposableComponent;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractRegistrationDialog;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.ConfirmationDialog;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.StringUtils;
+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.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
@@ -102,6 +105,19 @@ public class FileFormatTypeGrid extends AbstractSimpleBrowserGrid<AbstractType>
                             });
         createItem.setId(ADD_NEW_TYPE_BUTTON_ID);
         pagingToolbar.add(createItem);
+        Button editButton =
+                createSelectedItemButton(viewContext.getMessage(Dict.EDIT_TYPE_BUTTON),
+                        new ISelectedEntityInvoker<BaseEntityModel<AbstractType>>()
+                            {
+
+                                public void invoke(BaseEntityModel<AbstractType> selectedItem)
+                                {
+                                    AbstractType entityType = selectedItem.getBaseObject();
+                                    createEditEntityTypeDialog(entityType).show();
+                                }
+
+                            });
+        pagingToolbar.add(new AdapterToolItem(editButton));
 
         Button deleteButton = createDeleteButton(viewContext);
         enableButtonOnSelectedItems(deleteButton);
@@ -166,6 +182,31 @@ public class FileFormatTypeGrid extends AbstractSimpleBrowserGrid<AbstractType>
         return deleteButton;
     }
 
+    private Window createEditEntityTypeDialog(final AbstractType type)
+    {
+        final String code = type.getCode();
+        String title =
+                viewContext.getMessage(Dict.EDIT_TYPE_TITLE_TEMPLATE, type.getDescription(), code);
+        return new AbstractRegistrationDialog(viewContext, title, postRegistrationCallback)
+            {
+                private final TextField<String> descriptionField;
+                {
+                    descriptionField = createDescriptionField();
+                    descriptionField
+                            .setValue(StringEscapeUtils.unescapeHtml(type.getDescription()));
+                    addField(descriptionField);
+
+                }
+
+                @Override
+                protected void register(AsyncCallback<Void> registrationCallback)
+                {
+                    type.setDescription(descriptionField.getValue());
+                    viewContext.getService().updateFileFormatType(type, registrationCallback);
+                }
+            };
+    }
+
     final class RefreshCallback extends AbstractAsyncCallback<Void>
     {
         private RefreshCallback(IViewContext<?> viewContext)
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 3dad37d731d..2cd7cf15c79 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
@@ -91,6 +91,7 @@ import ch.systemsx.cisd.openbis.generic.shared.ICommonServer;
 import ch.systemsx.cisd.openbis.generic.shared.IServer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetSearchCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetTypePropertyType;
@@ -1629,4 +1630,16 @@ public final class CommonClientService extends AbstractClientService implements
         }
     }
 
+    public void updateFileFormatType(AbstractType type)
+    {
+        try
+        {
+            final String sessionToken = getSessionToken();
+            commonServer.updateFileFormatType(sessionToken, type);
+        } catch (UserFailureException ex)
+        {
+            throw UserFailureExceptionTranslator.translate(ex);
+        }
+    }
+
 }
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 275ff10e9d7..d1f15b61d90 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
@@ -60,6 +60,7 @@ import ch.systemsx.cisd.openbis.generic.shared.ICommonServer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.BasicEntityInformationHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetSearchCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType;
@@ -1123,4 +1124,20 @@ public final class CommonServer extends AbstractServer<ICommonServer> implements
         return result;
     }
 
+    public void updateFileFormatType(String sessionToken, AbstractType type)
+    {
+        checkSession(sessionToken);
+        try
+        {
+            IFileFormatTypeDAO dao = getDAOFactory().getFileFormatTypeDAO();
+            FileFormatTypePE typePE = dao.tryToFindFileFormatTypeByCode(type.getCode());
+            typePE.setDescription(type.getDescription());
+            dao.createOrUpdate(typePE);
+        } catch (final DataAccessException ex)
+        {
+            throw createUserFailureException(ex);
+        }
+
+    }
+
 }
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 c4d18f2bd9e..219b1b65b1b 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
@@ -27,6 +27,7 @@ import ch.systemsx.cisd.authentication.ISessionManager;
 import ch.systemsx.cisd.openbis.generic.shared.ICommonServer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetSearchCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType;
@@ -557,4 +558,10 @@ final class CommonServerLogger extends AbstractServerLogger implements ICommonSe
 
     }
 
+    public void updateFileFormatType(String sessionToken, AbstractType type)
+    {
+        logTracking(sessionToken, "update_file_format_type", "CODE(%s)", type.getCode());
+
+    }
+
 }
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 c33aacb0d75..7522659be76 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
@@ -38,6 +38,7 @@ import ch.systemsx.cisd.openbis.generic.shared.authorization.validator.MatchingE
 import ch.systemsx.cisd.openbis.generic.shared.authorization.validator.ProjectValidator;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetSearchCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType;
@@ -682,4 +683,12 @@ public interface ICommonServer extends IServer
     public List<String> getTemplateColumns(String sessionToken, EntityKind kind, String type,
             boolean autoGenerate);
 
+    /**
+     * Updates file format type.
+     */
+    @Transactional
+    @RolesAllowed(RoleSet.INSTANCE_ADMIN)
+    @DatabaseUpdateModification(value = ObjectKind.FILE_FORMAT_TYPE)
+    public void updateFileFormatType(String sessionToken, AbstractType type);
+
 }
-- 
GitLab