diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java index 3f9e55abef87d4036f22f21afffee38e3eac6203..890acfeaa1283ebd8c5c64304dd45a03ae8d88d7 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java @@ -30,6 +30,7 @@ import org.apache.commons.io.IOUtils; import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException; +import ch.systemsx.cisd.common.filesystem.FileUtilities; import ch.systemsx.cisd.common.utilities.ITimeProvider; import ch.systemsx.cisd.common.utilities.PropertyUtils; import ch.systemsx.cisd.common.utilities.SystemTimeProvider; @@ -157,7 +158,6 @@ public class DataSetInfoExtractorForMSInjection implements IDataSetInfoExtractor private Properties loadMSInjectionProperties(File incomingDataSetDirectory) { - Properties msInjectionProperties = new Properties(); File msInjectionPropertiesFile = new File(incomingDataSetDirectory, msInjectionPropertiesFileName); if (msInjectionPropertiesFile.exists() == false) @@ -170,18 +170,31 @@ public class DataSetInfoExtractorForMSInjection implements IDataSetInfoExtractor throw new UserFailureException("Properties file '" + msInjectionPropertiesFileName + "' is a folder."); } - FileInputStream stream = null; - try - { - stream = new FileInputStream(msInjectionPropertiesFile); - msInjectionProperties.load(stream); - } catch (IOException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } finally + return loadPropertiesFile(msInjectionPropertiesFile); + } + + private Properties loadPropertiesFile(File msInjectionPropertiesFile) + { + Properties properties = new Properties(); + List<String> lines = FileUtilities.loadToStringList(msInjectionPropertiesFile); + for (int i = 0; i < lines.size(); i++) { - IOUtils.closeQuietly(stream); + String line = lines.get(i); + if (line.length() == 0 || line.startsWith("#")) + { + continue; + } + int indexOfEqualSymbol = line.indexOf('='); + if (indexOfEqualSymbol < 0) + { + throw new UserFailureException("Missing '=' in line " + (i + 1) + + " of MS injection properties file " + msInjectionPropertiesFileName + + ": " + line); + } + String key = line.substring(0, indexOfEqualSymbol).trim(); + String value = line.substring(indexOfEqualSymbol + 1).trim(); + properties.setProperty(key, value); } - return msInjectionProperties; + return properties; } }