diff --git a/bds/source/java/ch/systemsx/cisd/bds/DataSet.java b/bds/source/java/ch/systemsx/cisd/bds/DataSet.java index c8562ce9e6e927a6833c632df3a8a0547566b9f8..a85cf46ffb19f1a891d3e67aa8d074ee44726442 100644 --- a/bds/source/java/ch/systemsx/cisd/bds/DataSet.java +++ b/bds/source/java/ch/systemsx/cisd/bds/DataSet.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.Date; import java.util.List; +import ch.systemsx.cisd.bds.Utilities.Boolean; import ch.systemsx.cisd.bds.exception.DataStructureException; import ch.systemsx.cisd.bds.storage.IDirectory; import ch.systemsx.cisd.common.collections.CollectionIO; @@ -67,7 +68,7 @@ public final class DataSet implements IStorable * Specifies whether the data set has been measured from a sample or whether it has been derived * by means of some calculation from another data set. */ - private final boolean isMeasured; + private final Boolean isMeasured; /** The list of parent codes. Never <code>null</code> but could be empty. */ private final List<String> parentCodes; @@ -85,7 +86,7 @@ public final class DataSet implements IStorable */ public DataSet(final String code, final String observableType) { - this(code, observableType, true, null, null, null); + this(code, observableType, Boolean.TRUE, null, null, null); } /** @@ -99,7 +100,7 @@ public final class DataSet implements IStorable * @param parentCodesOrNull list of parent data sets. Must be <code>null</code> or empty for * measured data (or not empty for derived data). */ - public DataSet(final String code, final String observableType, final boolean isMeasured, + public DataSet(final String code, final String observableType, final Boolean isMeasured, final Date productionTimestampOrNull, final String producerCodeOrNull, final List<String> parentCodesOrNull) { @@ -107,7 +108,8 @@ public final class DataSet implements IStorable this.isMeasured = isMeasured; assert StringUtils.isEmpty(observableType) == false : "Unspecified observable type."; this.observableTypeCode = observableType; - if (isMeasured == true && parentCodesOrNull != null && parentCodesOrNull.size() > 0) + if (isMeasured.toBoolean() == true && parentCodesOrNull != null + && parentCodesOrNull.size() > 0) { throw new IllegalArgumentException(String.format(NO_PARENT_FOR_MEASURED_DATA)); } @@ -142,7 +144,7 @@ public final class DataSet implements IStorable return observableTypeCode; } - public final boolean isMeasured() + public final Boolean isMeasured() { return isMeasured; } @@ -168,7 +170,7 @@ public final class DataSet implements IStorable final IDirectory idFolder = Utilities.getSubDirectory(directory, FOLDER); final String code = Utilities.getTrimmedString(idFolder, CODE); final String observableTypeCode = Utilities.getTrimmedString(idFolder, OBSERVABLE_TYPE); - final boolean isMeasured = Utilities.getBoolean(idFolder, IS_MEASURED); + final Boolean isMeasured = Utilities.getBoolean(idFolder, IS_MEASURED); final Date productionTimestampOrNull = Utilities.getDateOrNull(idFolder, PRODUCTION_TIMESTAMP); final String producerCode = Utilities.getTrimmedString(idFolder, PRODUCER_CODE); @@ -204,7 +206,7 @@ public final class DataSet implements IStorable productionTimestamp == null ? StringUtils.EMPTY_STRING : Constants.DATE_FORMAT .get().format(productionTimestamp)); folder.addKeyValuePair(PRODUCER_CODE, StringUtils.emptyIfNull(producerCode)); - folder.addKeyValuePair(IS_MEASURED, Boolean.toString(isMeasured).toUpperCase()); + folder.addKeyValuePair(IS_MEASURED, isMeasured.toString()); folder.addKeyValuePair(OBSERVABLE_TYPE, observableTypeCode); folder.addKeyValuePair(IS_COMPLETE, isComplete.toString()); final String value; diff --git a/bds/source/java/ch/systemsx/cisd/bds/Utilities.java b/bds/source/java/ch/systemsx/cisd/bds/Utilities.java index 80281d396a6add49f25cf5962cff71a2716ea771..51e8822f8020b89a218fa74fa6d7c71c5974f5ac 100644 --- a/bds/source/java/ch/systemsx/cisd/bds/Utilities.java +++ b/bds/source/java/ch/systemsx/cisd/bds/Utilities.java @@ -142,14 +142,14 @@ public class Utilities * Return the string content of a file from the given <var>directory</var> as boolean (<code>TRUE</code> * or <code>FALSE</code>). */ - public static boolean getBoolean(final IDirectory directory, final String name) + public static Boolean getBoolean(final IDirectory directory, final String name) throws DataStructureException { // No assertion here as 'getString(IDirectory, String)' already does it. final String value = getTrimmedString(directory, name); try { - return Boolean.valueOf(value).toBoolean(); + return Boolean.valueOf(value); } catch (final IllegalArgumentException ex) { throw new DataStructureException("Value of '" + name @@ -251,5 +251,11 @@ public class Utilities { return this == TRUE ? true : false; } + + /** Converts given <code>boolean</code> to this enumeration item. */ + public final static Boolean fromBoolean(final boolean bool) + { + return bool ? TRUE : FALSE; + } } } \ No newline at end of file diff --git a/bds/source/java/ch/systemsx/cisd/bds/check/AbstractChecker.java b/bds/source/java/ch/systemsx/cisd/bds/check/AbstractChecker.java index a67bc7ea20959e62418795cf281ce80d0203fd86..2033bec987eaac04a3c2872876acc8f23e77bd94 100644 --- a/bds/source/java/ch/systemsx/cisd/bds/check/AbstractChecker.java +++ b/bds/source/java/ch/systemsx/cisd/bds/check/AbstractChecker.java @@ -229,7 +229,7 @@ public abstract class AbstractChecker { try { - return Utilities.getBoolean(dataDir, name); + return Utilities.getBoolean(dataDir, name).toBoolean(); } catch (final Exception e) { problemReport.error(e.getMessage()); diff --git a/bds/sourceTest/java/ch/systemsx/cisd/bds/DataSetFileSystemTestCase.java b/bds/sourceTest/java/ch/systemsx/cisd/bds/DataSetFileSystemTestCase.java index d246a3cfeb4b3ace8f797c1da7d3bde32528c7f5..8fcf66346687376c3c522dc543b75d884110c4a0 100644 --- a/bds/sourceTest/java/ch/systemsx/cisd/bds/DataSetFileSystemTestCase.java +++ b/bds/sourceTest/java/ch/systemsx/cisd/bds/DataSetFileSystemTestCase.java @@ -27,6 +27,7 @@ import java.util.List; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import ch.systemsx.cisd.bds.Utilities.Boolean; import ch.systemsx.cisd.bds.storage.IDirectory; import ch.systemsx.cisd.bds.storage.filesystem.NodeFactory; import ch.systemsx.cisd.common.utilities.AbstractFileSystemTestCase; @@ -48,7 +49,7 @@ public final class DataSetFileSystemTestCase extends AbstractFileSystemTestCase final DataSet dataSet = new DataSet(dataSetCode, observableType); dataSet.saveTo(directory); final IDirectory folder = Utilities.getSubDirectory(directory, DataSet.FOLDER); - checkBasicDataSet(folder, dataSetCode, observableType, true); + checkBasicDataSet(folder, dataSetCode, observableType, Boolean.TRUE); assertEquals(0, Utilities.getStringList(folder, DataSet.PARENT_CODES).size()); assertEquals(StringUtils.EMPTY_STRING, Utilities.getTrimmedString(folder, DataSet.PRODUCER_CODE)); @@ -58,7 +59,7 @@ public final class DataSetFileSystemTestCase extends AbstractFileSystemTestCase } private final static void checkBasicDataSet(final IDirectory directory, - final String dataSetCode, final String observableType, final boolean isMeasured) + final String dataSetCode, final String observableType, final Boolean isMeasured) { assertEquals(dataSetCode, Utilities.getTrimmedString(directory, DataSet.CODE)); assertEquals("HCS_IMAGE", Utilities.getTrimmedString(directory, DataSet.OBSERVABLE_TYPE)); @@ -74,11 +75,11 @@ public final class DataSetFileSystemTestCase extends AbstractFileSystemTestCase final String producerCode = "producerCode"; final Date productionTimestamp = new Date(0L); final DataSet dataSet = - new DataSet(dataSetCode, observableType, true, productionTimestamp, producerCode, - null); + new DataSet(dataSetCode, observableType, Boolean.TRUE, productionTimestamp, + producerCode, null); dataSet.saveTo(directory); final IDirectory folder = Utilities.getSubDirectory(directory, DataSet.FOLDER); - checkBasicDataSet(folder, dataSetCode, observableType, true); + checkBasicDataSet(folder, dataSetCode, observableType, Boolean.TRUE); assertEquals(0, Utilities.getStringList(folder, DataSet.PARENT_CODES).size()); assertEquals(producerCode, Utilities.getTrimmedString(folder, DataSet.PRODUCER_CODE)); assertEquals(productionTimestamp, Utilities.getDateOrNull(folder, @@ -97,17 +98,17 @@ public final class DataSetFileSystemTestCase extends AbstractFileSystemTestCase parentCodes.add("parent2"); try { - new DataSet(dataSetCode, observableType, true, null, null, parentCodes); + new DataSet(dataSetCode, observableType, Boolean.TRUE, null, null, parentCodes); fail(DataSet.NO_PARENT_FOR_MEASURED_DATA); } catch (final IllegalArgumentException ex) { assertEquals(DataSet.NO_PARENT_FOR_MEASURED_DATA, ex.getMessage()); } final DataSet dataSet = - new DataSet(dataSetCode, observableType, false, null, null, parentCodes); + new DataSet(dataSetCode, observableType, Boolean.FALSE, null, null, parentCodes); dataSet.saveTo(directory); final IDirectory folder = Utilities.getSubDirectory(directory, DataSet.FOLDER); - checkBasicDataSet(folder, dataSetCode, observableType, false); + checkBasicDataSet(folder, dataSetCode, observableType, Boolean.FALSE); final List<String> parentList = Utilities.getStringList(folder, DataSet.PARENT_CODES); assertEquals(2, parentList.size()); assertEquals(parentCode, parentList.get(0)); @@ -139,8 +140,8 @@ public final class DataSetFileSystemTestCase extends AbstractFileSystemTestCase parentCodes.add(parentCode); parentCodes.add("parent2"); final DataSet dataSet = - new DataSet(dataSetCode, observableType, false, productionTimestamp, producerCode, - parentCodes); + new DataSet(dataSetCode, observableType, Boolean.FALSE, productionTimestamp, + producerCode, parentCodes); dataSet.saveTo(directory); final DataSet newDataSet = DataSet.loadFrom(directory); assertEquals(observableType, newDataSet.getObservableTypeCode()); diff --git a/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureLoaderTest.java b/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureLoaderTest.java index 76d668be6320e4f707f2a20d3c3b541a2b6d49e4..f6e20901d295deaf0dab6752ccc6bf501e020460 100644 --- a/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureLoaderTest.java +++ b/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureLoaderTest.java @@ -25,6 +25,7 @@ import java.util.List; import org.testng.annotations.Test; +import ch.systemsx.cisd.bds.Utilities.Boolean; import ch.systemsx.cisd.bds.storage.filesystem.FileStorage; import ch.systemsx.cisd.common.utilities.AbstractFileSystemTestCase; @@ -45,7 +46,8 @@ public final class DataStructureLoaderTest extends AbstractFileSystemTestCase dataStructure.create(); dataStructure.getOriginalData().addKeyValuePair("answer", "42"); dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0); - final ExperimentIdentifier experimentIdentifier = new ExperimentIdentifier("i", "g", "p", "e"); + final ExperimentIdentifier experimentIdentifier = + new ExperimentIdentifier("i", "g", "p", "e"); dataStructure.setExperimentIdentifier(experimentIdentifier); final ExperimentRegistrator experimentRegistrator = new ExperimentRegistrator("john", "doe", "j@doe"); @@ -54,7 +56,8 @@ public final class DataStructureLoaderTest extends AbstractFileSystemTestCase new Date(0))); dataStructure.setSample(new Sample("a", "CELL_PLATE", "b")); final List<String> parentCodes = createParentCodes(); - dataStructure.setDataSet(new DataSet("s", "HCS_IMAGE", false, null, null, parentCodes)); + dataStructure.setDataSet(new DataSet("s", "HCS_IMAGE", Boolean.FALSE, null, null, + parentCodes)); dataStructure.close(); final IDataStructure ds = new DataStructureLoader(workingDirectory).load("ds"); diff --git a/bds/sourceTest/java/ch/systemsx/cisd/bds/UtilitiesTest.java b/bds/sourceTest/java/ch/systemsx/cisd/bds/UtilitiesTest.java index b38d9ea97f36b0816d81b5eb3a4314029bc6a5c7..34670ad18723b8e0f79543ca7ce68b58c93afe38 100644 --- a/bds/sourceTest/java/ch/systemsx/cisd/bds/UtilitiesTest.java +++ b/bds/sourceTest/java/ch/systemsx/cisd/bds/UtilitiesTest.java @@ -137,7 +137,7 @@ public class UtilitiesTest extends AbstractFileSystemTestCase assertEquals(1, listFiles.length); assertEquals(key, listFiles[0].getName()); assertEquals(value, file.getStringContent().trim()); - assertTrue(Utilities.getBoolean(directory, key)); + assertTrue(Utilities.getBoolean(directory, key).toBoolean()); directory.addKeyValuePair(key, "true"); try { @@ -148,7 +148,7 @@ public class UtilitiesTest extends AbstractFileSystemTestCase // Nothing to do here. } directory.addKeyValuePair(key, " FALSE "); - assertFalse(Utilities.getBoolean(directory, key)); + assertFalse(Utilities.getBoolean(directory, key).toBoolean()); } } \ No newline at end of file