Skip to content
Snippets Groups Projects
Commit bdcbf1e2 authored by ribeaudc's avatar ribeaudc
Browse files

[LMS-557] add: - Database schema 24 and its migration script.

change: - Global code renamed in UUID all over the code.

SVN: 7925
parent f8691ddd
No related branches found
No related tags found
No related merge requests found
Showing
with 87 additions and 64 deletions
......@@ -31,7 +31,7 @@ public class ExperimentIdentifier implements IStorable
static final String INSTANCE_CODE = "instance_code";
static final String INSTANCE_GLOBAL_CODE = "instance_global_code";
static final String INSTANCE_UUID = "instance_uuid";
static final String GROUP_CODE = "group_code";
......
......@@ -34,13 +34,13 @@ public final class SampleWithOwner extends Sample
static final String INSTANCE_CODE = ExperimentIdentifier.INSTANCE_CODE;
static final String INSTANCE_GLOBAL_CODE = ExperimentIdentifier.INSTANCE_GLOBAL_CODE;
static final String INSTANCE_UUID = ExperimentIdentifier.INSTANCE_UUID;
private final String groupCode;
private final String instanceCode;
private final String instanceGlobalCode;
private final String instanceUUID;
/**
* Creates an instance for the specified {@link Sample}, group code and database instance code
......@@ -49,14 +49,13 @@ public final class SampleWithOwner extends Sample
* @param groupCode A non-<code>null</code> string of the group code. Could be empty.
* @param instanceCode A non-<code>null</code> string of the database instance code. Could
* not be empty.
* @param instanceGlobalCode A non-<code>null</code> string of the database instance global
* code (aka <i>UUID</i>). Could not be empty.
* @param instanceUUID the database instance <i>UUID</i>. Could not be empty.
*/
public SampleWithOwner(final Sample sample, final String instanceGlobalCode,
public SampleWithOwner(final Sample sample, final String instanceUUID,
final String instanceCode, final String groupCode)
{
this(sample.getCode(), sample.getTypeCode(), sample.getTypeDescription(),
instanceGlobalCode, instanceCode, groupCode);
this(sample.getCode(), sample.getTypeCode(), sample.getTypeDescription(), instanceUUID,
instanceCode, groupCode);
}
/**
......@@ -66,32 +65,32 @@ public final class SampleWithOwner extends Sample
* @param groupCode A non-<code>null</code> string of the group code. Could be empty.
* @param instanceCode A non-<code>null</code> string of the database instance code. Could
* not be empty.
* @param instanceGlobalCode A non-<code>null</code> string of the database instance global
* code (aka <i>UUID</i>). Could not be empty.
* @param instanceUUID A non-<code>null</code> string of the database instance <i>UUID</i>.
* Could not be empty.
*/
public SampleWithOwner(final String code, final String typeCode, final String typeDescription,
final String instanceGlobalCode, final String instanceCode, final String groupCode)
final String instanceUUID, final String instanceCode, final String groupCode)
{
super(code, typeCode, typeDescription);
assert groupCode != null : "Undefined group code.";
assert instanceCode != null : "Undefined database instance code.";
assert instanceGlobalCode != null : "Undefined database instance global code.";
assertNonEmptyInstanceCodes(instanceGlobalCode, instanceCode);
this.instanceGlobalCode = instanceGlobalCode;
assert instanceUUID != null : "Undefined database instance UUID.";
assertNonEmptyInstanceCodes(instanceUUID, instanceCode);
this.instanceUUID = instanceUUID;
this.instanceCode = instanceCode;
this.groupCode = groupCode;
}
private final static void assertNonEmptyInstanceCodes(final String instanceGlobalCode,
private final static void assertNonEmptyInstanceCodes(final String instanceUUID,
final String instanceCode)
{
if (instanceCode.length() == 0)
{
throw new DataStructureException("Empty database instance code.");
}
if (instanceGlobalCode.length() == 0)
if (instanceUUID.length() == 0)
{
throw new DataStructureException("Empty database instance global code.");
throw new DataStructureException("Empty database instance UUID.");
}
}
......@@ -105,9 +104,9 @@ public final class SampleWithOwner extends Sample
return instanceCode;
}
public final String getInstanceGlobalCode()
public final String getInstanceUUID()
{
return instanceGlobalCode;
return instanceUUID;
}
//
......@@ -128,9 +127,9 @@ public final class SampleWithOwner extends Sample
final String typeCode = Utilities.getTrimmedString(folder, TYPE_CODE);
final String groupCode = Utilities.getTrimmedString(folder, GROUP_CODE);
final String instanceCode = Utilities.getTrimmedString(folder, INSTANCE_CODE);
final String instanceGlobalCode = Utilities.getTrimmedString(folder, INSTANCE_GLOBAL_CODE);
return new SampleWithOwner(code, typeCode, typeDescription, instanceGlobalCode,
instanceCode, groupCode);
final String instanceUUID = Utilities.getTrimmedString(folder, INSTANCE_UUID);
return new SampleWithOwner(code, typeCode, typeDescription, instanceUUID, instanceCode,
groupCode);
}
@Override
......@@ -140,14 +139,14 @@ public final class SampleWithOwner extends Sample
final IDirectory folder = directory.makeDirectory(FOLDER);
folder.addKeyValuePair(GROUP_CODE, groupCode);
folder.addKeyValuePair(INSTANCE_CODE, instanceCode);
folder.addKeyValuePair(INSTANCE_GLOBAL_CODE, instanceGlobalCode);
folder.addKeyValuePair(INSTANCE_UUID, instanceUUID);
}
@Override
public final String toString()
{
final ToStringBuilder builder = createToStringBuilder();
builder.append(INSTANCE_GLOBAL_CODE, instanceGlobalCode);
builder.append(INSTANCE_UUID, instanceUUID);
builder.append(INSTANCE_CODE, instanceCode);
if (groupCode.length() > 0)
{
......@@ -175,7 +174,7 @@ public final class SampleWithOwner extends Sample
builder.append(that.groupCode, groupCode);
} else
{
builder.append(that.instanceGlobalCode, instanceGlobalCode);
builder.append(that.instanceUUID, instanceUUID);
}
return builder.isEquals();
}
......@@ -190,7 +189,7 @@ public final class SampleWithOwner extends Sample
builder.append(groupCode);
} else
{
builder.append(instanceGlobalCode);
builder.append(instanceUUID);
}
return builder.toHashCode();
}
......
......@@ -87,6 +87,8 @@ public abstract class AbstractChecker
public static final String INSTANCE_CODE = "instance_code";
public static final String INSTANCE_UUID = "instance_uuid";
public static final String IS_COMPLETE = "is_complete";
public static final String IS_MEASURED = "is_measured";
......
......@@ -149,6 +149,9 @@ public final class StructureChecker extends AbstractChecker
try
{
final IDirectory sample = Utilities.getSubDirectory(metadata, AbstractChecker.SAMPLE);
checkFileNotEmptyAndTrimmed(sample, AbstractChecker.GROUP_CODE);
checkFileNotEmptyAndTrimmed(sample, AbstractChecker.INSTANCE_CODE);
checkFileNotEmptyAndTrimmed(sample, AbstractChecker.INSTANCE_UUID);
checkFileNotEmptyAndTrimmed(sample, AbstractChecker.TYPE_DESCRIPTION);
checkFileNotEmptyAndTrimmed(sample, AbstractChecker.TYPE_CODE);
checkFileNotEmptyAndTrimmed(sample, AbstractChecker.CODE);
......
......@@ -94,12 +94,12 @@ public final class SampleWithOwnerTest extends AbstractFileSystemTestCase
}
@Test(dataProvider = "getSampleData")
public final void testLoadFrom(final String instanceGlobalCode, final String instanceCode,
public final void testLoadFrom(final String instanceUUID, final String instanceCode,
final String groupCode)
{
final IDirectory directory = NodeFactory.createDirectoryNode(workingDirectory);
final Sample sample =
new SampleWithOwner(CODE, TYPE_CODE, TYPE_DESCRIPTION, instanceGlobalCode,
new SampleWithOwner(CODE, TYPE_CODE, TYPE_DESCRIPTION, instanceUUID,
instanceCode, groupCode);
sample.saveTo(directory);
final SampleWithOwner newSample = SampleWithOwner.loadFrom(directory);
......@@ -107,12 +107,12 @@ public final class SampleWithOwnerTest extends AbstractFileSystemTestCase
{
assertEquals(GROUP_CODE, newSample.getGroupCode());
assertEquals(INSTANCE_CODE, newSample.getInstanceCode());
assertEquals(INSTANCE_GLOBAL_CODE, newSample.getInstanceGlobalCode());
assertEquals(INSTANCE_GLOBAL_CODE, newSample.getInstanceUUID());
} else
{
assertEquals("", newSample.getGroupCode());
assertEquals(INSTANCE_CODE, newSample.getInstanceCode());
assertEquals(INSTANCE_GLOBAL_CODE, newSample.getInstanceGlobalCode());
assertEquals(INSTANCE_GLOBAL_CODE, newSample.getInstanceUUID());
}
}
}
......@@ -16,10 +16,11 @@
package ch.systemsx.cisd.bds.check;
import static org.testng.AssertJUnit.assertEquals;
import java.io.File;
import java.io.IOException;
import org.testng.Assert;
import org.testng.annotations.Test;
/**
......@@ -38,8 +39,8 @@ public class StructureCheckerTest extends AbstractCheckerTest
final ProblemReport structureConsistencyReport =
new StructureChecker(verbose).getStructureConsistencyReport(new File(
"testdata/bds_ok"));
Assert.assertEquals(structureConsistencyReport.toString(), "");
Assert.assertEquals(structureConsistencyReport.noProblemsFound(), true);
assertEquals(structureConsistencyReport.toString(), "");
assertEquals(structureConsistencyReport.noProblemsFound(), true);
}
......@@ -53,7 +54,7 @@ public class StructureCheckerTest extends AbstractCheckerTest
public final void testEmptyContainer()
{
Assert.assertEquals(new StructureChecker(verbose).getStructureConsistencyReport(
assertEquals(new StructureChecker(verbose).getStructureConsistencyReport(
new File("testdata/bds_empty")).numberOfProblems(), 4);
}
......@@ -61,7 +62,7 @@ public class StructureCheckerTest extends AbstractCheckerTest
public final void testEmptyDirectories()
{
Assert.assertEquals(new StructureChecker(verbose).getStructureConsistencyReport(
assertEquals(new StructureChecker(verbose).getStructureConsistencyReport(
new File("testdata/bds_empty_dirs")).numberOfProblems(), 13);
}
......@@ -69,16 +70,15 @@ public class StructureCheckerTest extends AbstractCheckerTest
public final void testMissingFiles()
{
Assert.assertEquals(new StructureChecker(verbose).getStructureConsistencyReport(
new File("testdata/bds_missing_files")).numberOfProblems(), 19);
assertEquals(new StructureChecker(verbose).getStructureConsistencyReport(
new File("testdata/bds_missing_files")).numberOfProblems(), 22);
}
@Test
public final void testEmptyFiles()
{
Assert.assertEquals(new StructureChecker(verbose).getStructureConsistencyReport(
new File("testdata/bds_empty_files")).numberOfProblems(), 23);
assertEquals(new StructureChecker(verbose).getStructureConsistencyReport(
new File("testdata/bds_empty_files")).numberOfProblems(), 26);
}
@Test
......@@ -87,7 +87,7 @@ public class StructureCheckerTest extends AbstractCheckerTest
final ProblemReport structureConsistencyReport =
new StructureChecker(verbose).getStructureConsistencyReport(new File(
"testdata/bds_wrong_values"));
Assert.assertEquals(structureConsistencyReport.numberOfProblems(), 7);
assertEquals(structureConsistencyReport.numberOfProblems(), 10);
}
@Test
......@@ -96,28 +96,38 @@ public class StructureCheckerTest extends AbstractCheckerTest
final File dir = new File("testdata/bds_new_lines");
final String path = dir.getAbsolutePath();
Assert.assertEquals(new StructureChecker(verbose).getStructureConsistencyReport(dir)
.toString(), errorFoundNotTrimmed(path, "major", "/version")
+ errorFoundNotTrimmed(path, "minor", "/version")
+ errorFoundNotTrimmed(path, "code", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "production_timestamp", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "producer_code", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "observable_type", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "is_measured", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "is_complete", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "major", "/metadata/format/version")
+ errorFoundNotTrimmed(path, "minor", "/metadata/format/version")
+ errorFoundNotTrimmed(path, "code", "/metadata/format")
+ errorFoundNotTrimmed(path, "instance_code", "/metadata/experiment_identifier")
+ errorFoundNotTrimmed(path, "group_code", "/metadata/experiment_identifier")
+ errorFoundNotTrimmed(path, "project_code", "/metadata/experiment_identifier")
+ errorFoundNotTrimmed(path, "experiment_code", "/metadata/experiment_identifier")
+ errorFoundNotTrimmed(path, "experiment_registration_timestamp", "/metadata")
+ errorFoundNotTrimmed(path, "first_name", "/metadata/experiment_registrator")
+ errorFoundNotTrimmed(path, "last_name", "/metadata/experiment_registrator")
+ errorFoundNotTrimmed(path, "email", "/metadata/experiment_registrator")
+ errorFoundNotTrimmed(path, "type_description", "/metadata/sample")
+ errorFoundNotTrimmed(path, "type_code", "/metadata/sample")
+ errorFoundNotTrimmed(path, "code", "/metadata/sample"));
assertEquals(new StructureChecker(verbose).getStructureConsistencyReport(dir).toString(),
errorFoundNotTrimmed(path, "major", "/version")
+ errorFoundNotTrimmed(path, "minor", "/version")
+ errorFoundNotTrimmed(path, "code", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "production_timestamp", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "producer_code", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "observable_type", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "is_measured", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "is_complete", "/metadata/data_set")
+ errorFoundNotTrimmed(path, "major", "/metadata/format/version")
+ errorFoundNotTrimmed(path, "minor", "/metadata/format/version")
+ errorFoundNotTrimmed(path, "code", "/metadata/format")
+ errorFoundNotTrimmed(path, "instance_code",
"/metadata/experiment_identifier")
+ errorFoundNotTrimmed(path, "group_code",
"/metadata/experiment_identifier")
+ errorFoundNotTrimmed(path, "project_code",
"/metadata/experiment_identifier")
+ errorFoundNotTrimmed(path, "experiment_code",
"/metadata/experiment_identifier")
+ errorFoundNotTrimmed(path, "experiment_registration_timestamp",
"/metadata")
+ errorFoundNotTrimmed(path, "first_name",
"/metadata/experiment_registrator")
+ errorFoundNotTrimmed(path, "last_name",
"/metadata/experiment_registrator")
+ errorFoundNotTrimmed(path, "email", "/metadata/experiment_registrator")
+ errorFoundNotTrimmed(path, "group_code", "/metadata/sample")
+ errorFoundNotTrimmed(path, "instance_code", "/metadata/sample")
+ errorFoundNotTrimmed(path, "instance_uuid", "/metadata/sample")
+ errorFoundNotTrimmed(path, "type_description", "/metadata/sample")
+ errorFoundNotTrimmed(path, "type_code", "/metadata/sample")
+ errorFoundNotTrimmed(path, "code", "/metadata/sample"));
}
}
3VCP1
3VCP1
3VCP1
3VCP1
\ No newline at end of file
3VCP1
\ No newline at end of file
3VCP1
\ No newline at end of file
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