From 41fca3cd965a45fb4fe97cf84c3ba0c2396e9528 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Mon, 13 Aug 2012 14:03:54 +0000
Subject: [PATCH] fixing a bug in proteomics: Couldn't batch update Experiments
 of type MS_SEARCH and MS_QUANTIFICATION

SVN: 26356
---
 .../plugin/DelegatedClientPlugin.java         | 84 +++++++++++++++++++
 .../application/ClientPluginFactory.java      | 12 ++-
 .../application/ClientPluginFactory.java      | 59 +------------
 3 files changed, 93 insertions(+), 62 deletions(-)
 create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/DelegatedClientPlugin.java

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/DelegatedClientPlugin.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/DelegatedClientPlugin.java
new file mode 100644
index 00000000000..58a9f0aaef5
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/DelegatedClientPlugin.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2012 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.plugin;
+
+import com.google.gwt.user.client.ui.Widget;
+
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareWidget;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
+
+/**
+ * delegates all operations to generic plugin, should be subclasssed and the needed
+ * functionality can override the default behaviour
+ */
+public class DelegatedClientPlugin<T extends BasicEntityType> implements
+        IClientPlugin<T, IIdAndCodeHolder>
+{
+    private final IClientPlugin<T, IIdAndCodeHolder> delegator;
+
+    public DelegatedClientPlugin(IViewContext<?> viewContext, EntityKind entityKind)
+    {
+        this.delegator = createGenericClientFactory(viewContext).createClientPlugin(entityKind);
+    }
+
+    private static ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.ClientPluginFactory createGenericClientFactory(
+            IViewContext<?> viewContext)
+    {
+        ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.ClientPluginFactory clientPluginFactory =
+                new ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.ClientPluginFactory(
+                        viewContext.getCommonViewContext());
+        return clientPluginFactory;
+    }
+
+    @Override
+    public AbstractTabItemFactory createEntityViewer(
+            final IEntityInformationHolderWithPermId entity)
+    {
+        return delegator.createEntityViewer(entity);
+    }
+
+    @Override
+    public Widget createBatchRegistrationForEntityType(final T entityType)
+    {
+        return delegator.createBatchRegistrationForEntityType(entityType);
+    }
+
+    @Override
+    public Widget createBatchUpdateForEntityType(final T entityType)
+    {
+        return delegator.createBatchUpdateForEntityType(entityType);
+    }
+
+    @Override
+    public AbstractTabItemFactory createEntityEditor(final IIdAndCodeHolder identifiable)
+    {
+        return delegator.createEntityEditor(identifiable);
+    }
+
+    @Override
+    public DatabaseModificationAwareWidget createRegistrationForEntityType(T entityType,
+            ActionContext context)
+    {
+        return delegator.createRegistrationForEntityType(entityType, context);
+    }
+}
\ No newline at end of file
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java
index 315c8a52095..fc4c0ad2507 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java
@@ -34,7 +34,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier;
 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.plugin.ClientPluginAdapter;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.DelegatedClientPlugin;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModule;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractRegistrationForm;
@@ -51,6 +51,7 @@ import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.Gen
 import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment.GenericExperimentEditForm;
 import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment.GenericExperimentRegistrationForm;
 import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment.GenericExperimentViewer;
+import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync;
 
 /**
  * @author Franz-Josef Elmer
@@ -99,7 +100,7 @@ public class ClientPluginFactory extends AbstractClientPluginFactory<ViewContext
     {
         if (EntityKind.EXPERIMENT.equals(entityKind))
         {
-            return (IClientPlugin<T, I>) new ExperimentClientPlugin();
+            return (IClientPlugin<T, I>) new ExperimentClientPlugin(getViewContext());
         }
         throw new UnsupportedOperationException("IClientPlugin for entity kind '" + entityKind
                 + "' not implemented yet.");
@@ -109,9 +110,12 @@ public class ClientPluginFactory extends AbstractClientPluginFactory<ViewContext
     // Helper classes
     //
 
-    private final class ExperimentClientPlugin extends
-            ClientPluginAdapter<ExperimentType, IIdAndCodeHolder>
+    private final class ExperimentClientPlugin extends DelegatedClientPlugin<ExperimentType>
     {
+        private ExperimentClientPlugin(IViewContext<IPhosphoNetXClientServiceAsync> viewContext)
+        {
+            super(viewContext, EntityKind.EXPERIMENT);
+        }
         //
         // IViewClientPlugin
         //
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java
index af2cc7d5f93..0d2df429417 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java
@@ -25,17 +25,16 @@ import com.google.gwt.user.client.ui.Widget;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractClientPluginFactory;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareWidget;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier;
 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.plugin.DelegatedClientPlugin;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactoryUsingWildcards;
@@ -747,62 +746,6 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree
         return AbstractViewer.getTitle(messageProvider, dictTitleKey, codeProvider);
     }
 
-    /**
-     * delegates all operations to generic plugin, should be subclasssed and the needed
-     * functionality can override the default behaviour
-     */
-    private static class DelegatedClientPlugin<T extends BasicEntityType> implements
-            IClientPlugin<T, IIdAndCodeHolder>
-    {
-        private final IClientPlugin<T, IIdAndCodeHolder> delegator;
-
-        private DelegatedClientPlugin(IViewContext<?> viewContext, EntityKind entityKind)
-        {
-            this.delegator = createGenericClientFactory(viewContext).createClientPlugin(entityKind);
-        }
-
-        private static ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.ClientPluginFactory createGenericClientFactory(
-                IViewContext<?> viewContext)
-        {
-            ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.ClientPluginFactory clientPluginFactory =
-                    new ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.ClientPluginFactory(
-                            viewContext.getCommonViewContext());
-            return clientPluginFactory;
-        }
-
-        @Override
-        public AbstractTabItemFactory createEntityViewer(
-                final IEntityInformationHolderWithPermId entity)
-        {
-            return delegator.createEntityViewer(entity);
-        }
-
-        @Override
-        public Widget createBatchRegistrationForEntityType(final T entityType)
-        {
-            return delegator.createBatchRegistrationForEntityType(entityType);
-        }
-
-        @Override
-        public Widget createBatchUpdateForEntityType(final T entityType)
-        {
-            return delegator.createBatchUpdateForEntityType(entityType);
-        }
-
-        @Override
-        public AbstractTabItemFactory createEntityEditor(final IIdAndCodeHolder identifiable)
-        {
-            return delegator.createEntityEditor(identifiable);
-        }
-
-        @Override
-        public DatabaseModificationAwareWidget createRegistrationForEntityType(T entityType,
-                ActionContext context)
-        {
-            return delegator.createRegistrationForEntityType(entityType, context);
-        }
-    }
-
     @Override
     protected IModule maybeCreateModule()
     {
-- 
GitLab