From af72a814f345b91ebcc2ab00af6b98d3313fcce4 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Mon, 11 Jun 2012 08:24:35 +0000
Subject: [PATCH] SP-122, BIS-81: installer adds/modifies property
 enabled-technologies in DSS service.properties and ignores
 'disabled-core-plugins'.

SVN: 25631
---
 .../SetEnableTechnologiesVariableAction.java  | 109 +-----------------
 ...tEnableTechnologiesVariableActionTest.java |  23 ++--
 2 files changed, 16 insertions(+), 116 deletions(-)

diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableAction.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableAction.java
index 99f04cd28a5..2900beabc31 100644
--- a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableAction.java
+++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableAction.java
@@ -19,18 +19,12 @@ package ch.systemsx.cisd.openbis.installer.izpack;
 import static ch.systemsx.cisd.openbis.installer.izpack.SetTechnologyCheckBoxesAction.ENABLED_TECHNOLOGIES_KEY;
 
 import java.io.File;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
 
 import com.izforge.izpack.api.data.AutomatedInstallData;
 import com.izforge.izpack.api.data.PanelActionConfiguration;
 import com.izforge.izpack.api.handler.AbstractUIHandler;
 import com.izforge.izpack.data.PanelAction;
 
-import ch.systemsx.cisd.common.filesystem.FileUtilities;
 import ch.systemsx.cisd.common.shared.basic.utils.CommaSeparatedListBuilder;
 
 /**
@@ -42,8 +36,6 @@ import ch.systemsx.cisd.common.shared.basic.utils.CommaSeparatedListBuilder;
 public class SetEnableTechnologiesVariableAction implements PanelAction
 {
     static final String ENABLED_TECHNOLOGIES_VARNAME = "ENABLED_TECHNOLOGIES";
-    static final String DISABLED_TECHNOLOGIES_VARNAME = "DISABLED_TECHNOLOGIES";
-    static final String DISABLED_CORE_PLUGINS_KEY = "disabled-core-plugins";
 
     private final SetTechnologyCheckBoxesAction technologyCheckBoxesAction = new SetTechnologyCheckBoxesAction();
     
@@ -71,93 +63,16 @@ public class SetEnableTechnologiesVariableAction implements PanelAction
     void updateEnabledTechnologyProperty(AutomatedInstallData data,
             boolean isFirstTimeInstallation, File installDir)
     {
-        data.setVariable(DISABLED_TECHNOLOGIES_VARNAME, createListOfDisabledTechnologies(data));
         String newTechnologyList = createListOfEnabledTechnologies(data);
         data.setVariable(ENABLED_TECHNOLOGIES_VARNAME, newTechnologyList);
         if (isFirstTimeInstallation == false)
         {
-            File configFile = new File(installDir, Utils.AS_PATH + Utils.SERVICE_PROPERTIES_PATH);
-            Utils.updateOrAppendProperty(configFile, ENABLED_TECHNOLOGIES_KEY, newTechnologyList);
-            updateDisabledDssPluginsProperty(data, installDir);
-        }
-    }
-
-    private void updateDisabledDssPluginsProperty(AutomatedInstallData data, File installDir)
-    {
-        Set<String> disabledTechnologies = new LinkedHashSet<String>();
-        Set<String> technologies = new LinkedHashSet<String>();
-        for (String technology : GlobalInstallationContext.TECHNOLOGIES)
-        {
-            String technologyFlag = data.getVariable(technology);
-            if (Boolean.FALSE.toString().equalsIgnoreCase(technologyFlag))
-            {
-                disabledTechnologies.add(technology.toLowerCase());
-            }
-            technologies.add(technology.toLowerCase());
+            File asConfigFile = new File(installDir, Utils.AS_PATH + Utils.SERVICE_PROPERTIES_PATH);
+            Utils.updateOrAppendProperty(asConfigFile, ENABLED_TECHNOLOGIES_KEY, newTechnologyList);
+            File dssConfigFile =
+                    new File(installDir, Utils.DSS_PATH + Utils.SERVICE_PROPERTIES_PATH);
+            Utils.updateOrAppendProperty(dssConfigFile, ENABLED_TECHNOLOGIES_KEY, newTechnologyList);
         }
-        File configFile = new File(installDir, Utils.DSS_PATH + Utils.SERVICE_PROPERTIES_PATH);
-        List<String> list = FileUtilities.loadToStringList(configFile);
-        updateDisabledDssPluginsProperty(list, technologies, disabledTechnologies, installDir);
-        Utils.updateConfigFile(configFile, list);
-    }
-
-    private void updateDisabledDssPluginsProperty(List<String> list, Set<String> technologies,
-            Set<String> disabledTechnologies, File installDir)
-    {
-        for (int i = 0; i < list.size(); i++)
-        {
-            String line = list.get(i);
-            if (line.startsWith(DISABLED_CORE_PLUGINS_KEY))
-            {
-                String[] property = line.split("=");
-                String oldPluginsList = property.length < 2 ? "" : property[1];
-                String pluginsList =
-                        mergeWithDisabledPluginsList(oldPluginsList, technologies,
-                                disabledTechnologies);
-                list.set(i, DISABLED_CORE_PLUGINS_KEY + " = " + pluginsList);
-                return;
-            }
-        }
-        String pluginsList;
-        if (Utils.hasCorePluginsFolder(installDir))
-        {
-            pluginsList = mergeWithDisabledPluginsList("", technologies, disabledTechnologies);
-        } else
-        {
-            // A very old openBIS instance does not have a core plugins folder. Thus, all
-            // core plugins have to be disabled in order to avoid possible conflicts of
-            // existing DSS service.properties with a core plugin.
-            pluginsList = mergeWithDisabledPluginsList("", technologies, technologies);
-        }
-        list.add(DISABLED_CORE_PLUGINS_KEY + " = " + pluginsList);
-    }
-    
-    private String mergeWithDisabledPluginsList(String disabledPlugins, Set<String> technologies,
-            Set<String> disabledTechnologies)
-    {
-        CommaSeparatedListBuilder builder = new CommaSeparatedListBuilder();
-        Set<String> plugins = new HashSet<String>();
-        String[] terms = disabledPlugins.split(",");
-        for (String term : terms)
-        {
-            String plugin = term.trim();
-            if (plugin.length() > 0)
-            {
-                if (technologies.contains(plugin) == false || disabledTechnologies.contains(plugin))
-                {
-                    builder.append(plugin);
-                    plugins.add(plugin);
-                }
-            }
-        }
-        for (String disabledTechnology : disabledTechnologies)
-        {
-            if (plugins.contains(disabledTechnology) == false)
-            {
-                builder.append(disabledTechnology);
-            }
-        }
-        return builder.toString();
     }
 
     private String createListOfEnabledTechnologies(AutomatedInstallData data)
@@ -174,18 +89,4 @@ public class SetEnableTechnologiesVariableAction implements PanelAction
         return builder.toString();
     }
     
-    private String createListOfDisabledTechnologies(AutomatedInstallData data)
-    {
-        CommaSeparatedListBuilder builder = new CommaSeparatedListBuilder();
-        for (String technology : GlobalInstallationContext.TECHNOLOGIES)
-        {
-            String technologyFlag = data.getVariable(technology);
-            if (technologyFlag == null || Boolean.FALSE.toString().equalsIgnoreCase(technologyFlag))
-            {
-                builder.append(technology.toLowerCase());
-            }
-        }
-        return builder.toString();
-    }
-
 }
diff --git a/installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableActionTest.java b/installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableActionTest.java
index e6002f6e15d..c8103b132e4 100644
--- a/installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableActionTest.java
+++ b/installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableActionTest.java
@@ -18,7 +18,6 @@ package ch.systemsx.cisd.openbis.installer.izpack;
 
 import static ch.systemsx.cisd.openbis.installer.izpack.GlobalInstallationContext.TECHNOLOGY_PROTEOMICS;
 import static ch.systemsx.cisd.openbis.installer.izpack.GlobalInstallationContext.TECHNOLOGY_SCREENING;
-import static ch.systemsx.cisd.openbis.installer.izpack.SetEnableTechnologiesVariableAction.DISABLED_CORE_PLUGINS_KEY;
 import static ch.systemsx.cisd.openbis.installer.izpack.SetEnableTechnologiesVariableAction.ENABLED_TECHNOLOGIES_VARNAME;
 import static ch.systemsx.cisd.openbis.installer.izpack.SetTechnologyCheckBoxesAction.ENABLED_TECHNOLOGIES_KEY;
 
@@ -133,7 +132,7 @@ public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemT
 
         assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + "=proteomics]", FileUtilities
                 .loadToStringList(configFile).toString());
-        assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = proteomics, screening, illumina-ngs]",
+        assertEquals("[, " + ENABLED_TECHNOLOGIES_KEY + " = proteomics]",
                 FileUtilities.loadToStringList(dssConfigFile).toString());
     }
     
@@ -165,7 +164,7 @@ public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemT
         
         assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + " = proteomics, screening, answer = 42]", FileUtilities
                 .loadToStringList(configFile).toString());
-        assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = ]", FileUtilities
+        assertEquals("[, " + ENABLED_TECHNOLOGIES_KEY + " = proteomics, screening]", FileUtilities
                 .loadToStringList(dssConfigFile).toString());
     }
     
@@ -181,15 +180,15 @@ public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemT
         
         assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + " = screening]", FileUtilities
                 .loadToStringList(configFile).toString());
-        assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = proteomics]", FileUtilities
+        assertEquals("[, " + ENABLED_TECHNOLOGIES_KEY + " = screening]", FileUtilities
                 .loadToStringList(dssConfigFile).toString());
     }
 
     @Test
-    public void testUpdateAppendPropertyWithEmptyDisabledCorePluginsProperty()
+    public void testUpdateAppendPropertyWithEmptyEnabledTechnologyDssProperty()
     {
         FileUtilities.writeToFile(configFile, "abc = 123");
-        FileUtilities.writeToFile(dssConfigFile, DISABLED_CORE_PLUGINS_KEY + "= ");
+        FileUtilities.writeToFile(dssConfigFile, ENABLED_TECHNOLOGIES_KEY + "= ");
         Properties variables = new Properties();
         variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
         variables.setProperty(TECHNOLOGY_SCREENING, "true");
@@ -198,23 +197,23 @@ public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemT
         
         assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + " = screening]", FileUtilities
                 .loadToStringList(configFile).toString());
-        assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = proteomics]", FileUtilities
+        assertEquals("[" + ENABLED_TECHNOLOGIES_KEY + " = screening]", FileUtilities
                 .loadToStringList(dssConfigFile).toString());
     }
     
     @Test
-    public void testUpdateDisabledPluginsForSwitchedTechnologies()
+    public void testUpdateEnabledTechnologiesDssForSwitchedTechnologies()
     {
         FileUtilities.writeToFile(configFile, "abc = 123");
-        FileUtilities.writeToFile(dssConfigFile, "a = b\n" + DISABLED_CORE_PLUGINS_KEY
-                + "= screening, proteomics:a:b\n" + "gamma = alpha");
+        FileUtilities.writeToFile(dssConfigFile, "a = b\n" + ENABLED_TECHNOLOGIES_KEY
+                + "= proteomics\n" + "gamma = alpha");
         Properties variables = new Properties();
         variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
         variables.setProperty(TECHNOLOGY_SCREENING, "true");
 
         updateEnabledTechnologyProperties(variables, false);
 
-        assertEquals("[a = b, " + DISABLED_CORE_PLUGINS_KEY + " = proteomics:a:b, proteomics, "
+        assertEquals("[a = b, " + ENABLED_TECHNOLOGIES_KEY + " = screening, "
                 + "gamma = alpha]", FileUtilities.loadToStringList(dssConfigFile).toString());
     }
     
@@ -222,7 +221,7 @@ public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemT
     public void testUpdateDisabledPluginsForSameTechnology()
     {
         FileUtilities.writeToFile(configFile, "abc = 123");
-        FileUtilities.writeToFile(dssConfigFile, "a = b\n" + DISABLED_CORE_PLUGINS_KEY
+        FileUtilities.writeToFile(dssConfigFile, "a = b\n" + ENABLED_TECHNOLOGIES_KEY
                 + "= proteomics, proteomics:a:b\n" + "gamma = alpha");
         Properties variables = new Properties();
         variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
-- 
GitLab