Skip to content
Snippets Groups Projects
Commit 7a70c997 authored by felmer's avatar felmer
Browse files

LMS-2612 update disabled plugins property in DSS service.properties

SVN: 24582
parent 20765f6f
No related branches found
No related tags found
No related merge requests found
......@@ -22,7 +22,10 @@ import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.io.IOUtils;
......@@ -32,6 +35,7 @@ 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.utilities.CommaSeparatedListBuilder;
/**
* Action which sets the variable <code>DISABLED_TECHNOLOGIES_VARNAME</code> or updates
......@@ -42,6 +46,7 @@ import ch.systemsx.cisd.common.filesystem.FileUtilities;
public class SetDisableTechnologiesVariableAction implements PanelAction
{
static final String DISABLED_TECHNOLOGIES_VARNAME = "DISABLED_TECHNOLOGIES";
static final String DISABLED_CORE_PLUGINS_KEY = "disabled-core-plugins";
public void initialize(PanelActionConfiguration configuration)
{
......@@ -97,20 +102,85 @@ public class SetDisableTechnologiesVariableAction implements PanelAction
appendEntryToConfigFile(configFile, propertiesEntry);
}
}
updateDisabledDssPluginsProperty(data, installDir);
}
private String createListOfDisabledTechnologies(AutomatedInstallData data)
private void updateDisabledDssPluginsProperty(AutomatedInstallData data, File installDir)
{
StringBuilder builder = new StringBuilder();
Set<String> disabledTechnologies = new LinkedHashSet<String>();
Set<String> technologies = new HashSet<String>();
for (String technology : GlobalInstallationContext.TECHNOLOGIES)
{
String technologyFlag = data.getVariable(technology);
if (Boolean.FALSE.toString().equalsIgnoreCase(technologyFlag))
{
if (builder.length() > 0)
disabledTechnologies.add(technology.toLowerCase());
}
technologies.add(technology.toLowerCase());
}
File configFile = new File(installDir, Utils.DSS_PATH + Utils.SERVICE_PROPERTIES_PATH);
List<String> list = FileUtilities.loadToStringList(configFile);
updateDisabledDssPluginsProperty(list, technologies, disabledTechnologies);
updateConfigFile(configFile, list);
}
private void updateDisabledDssPluginsProperty(List<String> list, Set<String> technologies,
Set<String> disabledTechnologies)
{
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 = mergeWithDisabledPluginsList("", technologies, disabledTechnologies);
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(", ");
builder.append(plugin);
plugins.add(plugin);
}
}
}
for (String disabledTechnology : disabledTechnologies)
{
if (plugins.contains(disabledTechnology) == false)
{
builder.append(disabledTechnology);
}
}
return builder.toString();
}
private String createListOfDisabledTechnologies(AutomatedInstallData data)
{
CommaSeparatedListBuilder builder = new CommaSeparatedListBuilder();
for (String technology : GlobalInstallationContext.TECHNOLOGIES)
{
String technologyFlag = data.getVariable(technology);
if (Boolean.FALSE.toString().equalsIgnoreCase(technologyFlag))
{
builder.append(technology.toLowerCase());
}
}
......
......@@ -18,10 +18,12 @@ 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.SetDisableTechnologiesVariableAction.DISABLED_CORE_PLUGINS_KEY;
import static ch.systemsx.cisd.openbis.installer.izpack.SetDisableTechnologiesVariableAction.DISABLED_TECHNOLOGIES_VARNAME;
import static ch.systemsx.cisd.openbis.installer.izpack.SetTechnologyCheckBoxesAction.DISABLED_TECHNOLOGIES_KEY;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import org.testng.annotations.AfterMethod;
......@@ -32,6 +34,7 @@ import com.izforge.izpack.api.data.AutomatedInstallData;
import com.izforge.izpack.core.substitutor.VariableSubstitutorImpl;
import com.izforge.izpack.installer.data.InstallData;
import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase;
import ch.systemsx.cisd.common.filesystem.FileUtilities;
......@@ -43,6 +46,7 @@ import ch.systemsx.cisd.common.filesystem.FileUtilities;
public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystemTestCase
{
private File configFile;
private File dssConfigFile;
@Override
@BeforeMethod
......@@ -50,12 +54,22 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
{
configFile = new File(workingDirectory, Utils.AS_PATH + Utils.SERVICE_PROPERTIES_PATH);
configFile.getParentFile().mkdirs();
dssConfigFile = new File(workingDirectory, Utils.DSS_PATH + Utils.SERVICE_PROPERTIES_PATH);
dssConfigFile.getParentFile().mkdirs();
try
{
dssConfigFile.createNewFile();
} catch (IOException ex)
{
throw CheckedExceptionTunnel.wrapIfNecessary(ex);
}
}
@AfterMethod
public void tearDown()
{
configFile.delete();
dssConfigFile.delete();
}
@Test
......@@ -80,6 +94,8 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
AutomatedInstallData data = updateDisabledTechnologyProperties(variables, true);
assertEquals("proteomics, screening", data.getVariable(DISABLED_TECHNOLOGIES_VARNAME));
assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = proteomics, screening]", FileUtilities
.loadToStringList(dssConfigFile).toString());
}
@Test
......@@ -129,6 +145,8 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
assertEquals("[abc = 123, " + DISABLED_TECHNOLOGIES_KEY + " = , answer = 42]", FileUtilities
.loadToStringList(configFile).toString());
assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = ]", FileUtilities
.loadToStringList(dssConfigFile).toString());
}
@Test
......@@ -143,6 +161,38 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
assertEquals("[abc = 123, " + DISABLED_TECHNOLOGIES_KEY + " = proteomics]", FileUtilities
.loadToStringList(configFile).toString());
assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = proteomics]", FileUtilities
.loadToStringList(dssConfigFile).toString());
}
@Test
public void testUpdateDisabledPluginsForSwitchedTechnologies()
{
FileUtilities.writeToFile(dssConfigFile, "a = b\n" + DISABLED_CORE_PLUGINS_KEY
+ "= screening, proteomics:a:b\n" + "gamma = alpha");
Properties variables = new Properties();
variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
variables.setProperty(TECHNOLOGY_SCREENING, "true");
updateDisabledTechnologyProperties(variables, true);
assertEquals("[a = b, " + DISABLED_CORE_PLUGINS_KEY + " = proteomics:a:b, proteomics, "
+ "gamma = alpha]", FileUtilities.loadToStringList(dssConfigFile).toString());
}
@Test
public void testUpdateDisabledPluginsForSameTechnology()
{
FileUtilities.writeToFile(dssConfigFile, "a = b\n" + DISABLED_CORE_PLUGINS_KEY
+ "= proteomics, proteomics:a:b\n" + "gamma = alpha");
Properties variables = new Properties();
variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
variables.setProperty(TECHNOLOGY_SCREENING, "true");
updateDisabledTechnologyProperties(variables, true);
assertEquals("[a = b, " + DISABLED_CORE_PLUGINS_KEY + " = proteomics, proteomics:a:b, "
+ "gamma = alpha]", FileUtilities.loadToStringList(dssConfigFile).toString());
}
private AutomatedInstallData updateDisabledTechnologyProperties(Properties variables,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment