diff --git a/bds/source/java/ch/systemsx/cisd/bds/DataSet.java b/bds/source/java/ch/systemsx/cisd/bds/DataSet.java index bd2b7710f825ffd3d6fa9118fc815329f0f23edb..94f29f8256dd5f2a932495506ca50030afaed0d7 100644 --- a/bds/source/java/ch/systemsx/cisd/bds/DataSet.java +++ b/bds/source/java/ch/systemsx/cisd/bds/DataSet.java @@ -17,6 +17,7 @@ package ch.systemsx.cisd.bds; import java.io.StringWriter; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; @@ -49,7 +50,7 @@ public final class DataSet implements IStorable static final String OBSERVABLE_TYPE = "observable_type"; static final String IS_MEASURED = "is_measured"; - + static final String IS_COMPLETE = "is_complete"; static final String PARENT_CODES = "parent_codes"; @@ -68,15 +69,15 @@ public final class DataSet implements IStorable * by means of some calculation from another data set. */ private final boolean isMeasured; - + /** The list of parent codes. Never <code>null</code> but could be empty. */ private final List<String> parentCodes; /** This data set unique identifier. */ private String code; - + private BooleanOrUnknown isComplete = BooleanOrUnknown.UNKNOWN; - + /** * Creates an instance of data set. * @@ -151,7 +152,7 @@ public final class DataSet implements IStorable { return parentCodes; } - + public final void setComplete(final boolean complete) { isComplete = BooleanOrUnknown.resolve(complete); @@ -173,8 +174,23 @@ public final class DataSet implements IStorable Utilities.getDateOrNull(idFolder, PRODUCTION_TIMESTAMP); final String producerCode = Utilities.getTrimmedString(idFolder, PRODUCER_CODE); final List<String> parentCodes = Utilities.getStringList(idFolder, PARENT_CODES); - return new DataSet(code, observableTypeCode, isMeasured, productionTimestampOrNull, - (producerCode.length() == 0 ? null : producerCode), parentCodes); + final String strIsComplete = Utilities.getString(idFolder, IS_COMPLETE); + BooleanOrUnknown completeFlag; + try + { + completeFlag = BooleanOrUnknown.valueOf(strIsComplete); + } catch (final IllegalArgumentException ex) + { + throw new DataStructureException(String.format( + "'%s' value must be one of '%s' but is '%s'.", IS_COMPLETE, Arrays + .asList(BooleanOrUnknown.values()), strIsComplete)); + } + assert completeFlag != null : "Complete flag not specified."; + final DataSet dataSet = + new DataSet(code, observableTypeCode, isMeasured, productionTimestampOrNull, + (producerCode.length() == 0 ? null : producerCode), parentCodes); + dataSet.isComplete = completeFlag; + return dataSet; } //