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

LMS-335 add instance code

SVN: 5656
parent 47bdc8fc
No related merge requests found
...@@ -28,6 +28,8 @@ import ch.systemsx.cisd.bds.storage.IDirectory; ...@@ -28,6 +28,8 @@ import ch.systemsx.cisd.bds.storage.IDirectory;
public class ExperimentIdentifier implements IStorable public class ExperimentIdentifier implements IStorable
{ {
static final String FOLDER = "experiment_identifier"; static final String FOLDER = "experiment_identifier";
static final String INSTANCE_CODE = "instance_code";
static final String GROUP_CODE = "group_code"; static final String GROUP_CODE = "group_code";
...@@ -43,12 +45,15 @@ public class ExperimentIdentifier implements IStorable ...@@ -43,12 +45,15 @@ public class ExperimentIdentifier implements IStorable
final static ExperimentIdentifier loadFrom(final IDirectory directory) final static ExperimentIdentifier loadFrom(final IDirectory directory)
{ {
final IDirectory idFolder = Utilities.getSubDirectory(directory, FOLDER); final IDirectory idFolder = Utilities.getSubDirectory(directory, FOLDER);
final String instanceCode = Utilities.getTrimmedString(idFolder, INSTANCE_CODE);
final String groupCode = Utilities.getTrimmedString(idFolder, GROUP_CODE); final String groupCode = Utilities.getTrimmedString(idFolder, GROUP_CODE);
final String projectCode = Utilities.getTrimmedString(idFolder, PROJECT_CODE); final String projectCode = Utilities.getTrimmedString(idFolder, PROJECT_CODE);
final String experimentCode = Utilities.getTrimmedString(idFolder, EXPERIMENT_CODE); final String experimentCode = Utilities.getTrimmedString(idFolder, EXPERIMENT_CODE);
return new ExperimentIdentifier(groupCode, projectCode, experimentCode); return new ExperimentIdentifier(instanceCode, groupCode, projectCode, experimentCode);
} }
private final String instanceCode;
private final String groupCode; private final String groupCode;
private final String projectCode; private final String projectCode;
...@@ -58,13 +63,16 @@ public class ExperimentIdentifier implements IStorable ...@@ -58,13 +63,16 @@ public class ExperimentIdentifier implements IStorable
/** /**
* Creates an instance for the specified codes of group, project, and experiment. * Creates an instance for the specified codes of group, project, and experiment.
* *
* @param instanceCode A non-empty string of the instance code.
* @param groupCode A non-empty string of the group code. * @param groupCode A non-empty string of the group code.
* @param projectCode A non-empty string of the project code. * @param projectCode A non-empty string of the project code.
* @param experimentCode A non-empty string of the experiment code. * @param experimentCode A non-empty string of the experiment code.
*/ */
public ExperimentIdentifier(final String groupCode, final String projectCode, public ExperimentIdentifier(final String instanceCode, final String groupCode, final String projectCode,
final String experimentCode) final String experimentCode)
{ {
assert StringUtils.isEmpty(instanceCode) == false : "Undefined instance code";
this.instanceCode = instanceCode;
assert StringUtils.isEmpty(groupCode) == false : "Undefined group code"; assert StringUtils.isEmpty(groupCode) == false : "Undefined group code";
this.groupCode = groupCode; this.groupCode = groupCode;
assert StringUtils.isEmpty(projectCode) == false : "Undefined project code"; assert StringUtils.isEmpty(projectCode) == false : "Undefined project code";
...@@ -73,6 +81,14 @@ public class ExperimentIdentifier implements IStorable ...@@ -73,6 +81,14 @@ public class ExperimentIdentifier implements IStorable
this.experimentCode = experimentCode; this.experimentCode = experimentCode;
} }
/**
* Returns the instance code;
*/
public final String getInstanceCode()
{
return instanceCode;
}
/** /**
* Returns the group code; * Returns the group code;
*/ */
...@@ -107,6 +123,7 @@ public class ExperimentIdentifier implements IStorable ...@@ -107,6 +123,7 @@ public class ExperimentIdentifier implements IStorable
public final void saveTo(final IDirectory directory) public final void saveTo(final IDirectory directory)
{ {
final IDirectory folder = directory.makeDirectory(FOLDER); final IDirectory folder = directory.makeDirectory(FOLDER);
folder.addKeyValuePair(INSTANCE_CODE, instanceCode);
folder.addKeyValuePair(GROUP_CODE, groupCode); folder.addKeyValuePair(GROUP_CODE, groupCode);
folder.addKeyValuePair(PROJECT_CODE, projectCode); folder.addKeyValuePair(PROJECT_CODE, projectCode);
folder.addKeyValuePair(EXPERIMENT_CODE, experimentCode); folder.addKeyValuePair(EXPERIMENT_CODE, experimentCode);
...@@ -128,14 +145,15 @@ public class ExperimentIdentifier implements IStorable ...@@ -128,14 +145,15 @@ public class ExperimentIdentifier implements IStorable
return false; return false;
} }
final ExperimentIdentifier id = (ExperimentIdentifier) obj; final ExperimentIdentifier id = (ExperimentIdentifier) obj;
return id.groupCode.equals(groupCode) && id.projectCode.equals(projectCode) return id.instanceCode.equals(instanceCode) && id.groupCode.equals(groupCode)
&& id.experimentCode.equals(experimentCode); && id.projectCode.equals(projectCode) && id.experimentCode.equals(experimentCode);
} }
@Override @Override
public final int hashCode() public final int hashCode()
{ {
int result = 17; int result = 17;
result = 37 * result + instanceCode.hashCode();
result = 37 * result + groupCode.hashCode(); result = 37 * result + groupCode.hashCode();
result = 37 * result + projectCode.hashCode(); result = 37 * result + projectCode.hashCode();
result = 37 * result + experimentCode.hashCode(); result = 37 * result + experimentCode.hashCode();
...@@ -145,8 +163,8 @@ public class ExperimentIdentifier implements IStorable ...@@ -145,8 +163,8 @@ public class ExperimentIdentifier implements IStorable
@Override @Override
public final String toString() public final String toString()
{ {
return "[group:" + groupCode + ",project:" + projectCode + ",experiment:" + experimentCode return "[instance:" + instanceCode + ",group:" + groupCode + ",project:" + projectCode
+ "]"; + ",experiment:" + experimentCode + "]";
} }
} }
...@@ -45,7 +45,7 @@ public final class DataStructureLoaderTest extends AbstractFileSystemTestCase ...@@ -45,7 +45,7 @@ public final class DataStructureLoaderTest extends AbstractFileSystemTestCase
dataStructure.create(); dataStructure.create();
dataStructure.getOriginalData().addKeyValuePair("answer", "42"); dataStructure.getOriginalData().addKeyValuePair("answer", "42");
dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0); dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0);
final ExperimentIdentifier experimentIdentifier = new ExperimentIdentifier("g", "p", "e"); final ExperimentIdentifier experimentIdentifier = new ExperimentIdentifier("i", "g", "p", "e");
dataStructure.setExperimentIdentifier(experimentIdentifier); dataStructure.setExperimentIdentifier(experimentIdentifier);
final ExperimentRegistrator experimentRegistrator = final ExperimentRegistrator experimentRegistrator =
new ExperimentRegistrator("john", "doe", "j@doe"); new ExperimentRegistrator("john", "doe", "j@doe");
......
...@@ -106,11 +106,12 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase ...@@ -106,11 +106,12 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase
public void testSetExperimentIdentifier() public void testSetExperimentIdentifier()
{ {
dataStructure.create(); dataStructure.create();
final ExperimentIdentifier id = new ExperimentIdentifier("g", "p", "e"); final ExperimentIdentifier id = new ExperimentIdentifier("i", "g", "p", "e");
dataStructure.setExperimentIdentifier(id); dataStructure.setExperimentIdentifier(id);
final IDirectory root = storage.getRoot(); final IDirectory root = storage.getRoot();
final IDirectory metaData = Utilities.getSubDirectory(root, DataStructureV1_0.DIR_METADATA); final IDirectory metaData = Utilities.getSubDirectory(root, DataStructureV1_0.DIR_METADATA);
final IDirectory idDir = Utilities.getSubDirectory(metaData, ExperimentIdentifier.FOLDER); final IDirectory idDir = Utilities.getSubDirectory(metaData, ExperimentIdentifier.FOLDER);
assertEquals("i\n", Utilities.getString(idDir, ExperimentIdentifier.INSTANCE_CODE));
assertEquals("g\n", Utilities.getString(idDir, ExperimentIdentifier.GROUP_CODE)); assertEquals("g\n", Utilities.getString(idDir, ExperimentIdentifier.GROUP_CODE));
assertEquals("p\n", Utilities.getString(idDir, ExperimentIdentifier.PROJECT_CODE)); assertEquals("p\n", Utilities.getString(idDir, ExperimentIdentifier.PROJECT_CODE));
assertEquals("e\n", Utilities.getString(idDir, ExperimentIdentifier.EXPERIMENT_CODE)); assertEquals("e\n", Utilities.getString(idDir, ExperimentIdentifier.EXPERIMENT_CODE));
...@@ -120,12 +121,13 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase ...@@ -120,12 +121,13 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase
public void testSetExperimentIdentifierTwice() public void testSetExperimentIdentifierTwice()
{ {
dataStructure.create(); dataStructure.create();
dataStructure.setExperimentIdentifier(new ExperimentIdentifier("a", "b", "c")); dataStructure.setExperimentIdentifier(new ExperimentIdentifier("0", "a", "b", "c"));
final ExperimentIdentifier id = new ExperimentIdentifier("g", "p", "e"); final ExperimentIdentifier id = new ExperimentIdentifier("i", "g", "p", "e");
dataStructure.setExperimentIdentifier(id); dataStructure.setExperimentIdentifier(id);
final IDirectory root = storage.getRoot(); final IDirectory root = storage.getRoot();
final IDirectory metaData = Utilities.getSubDirectory(root, DataStructureV1_0.DIR_METADATA); final IDirectory metaData = Utilities.getSubDirectory(root, DataStructureV1_0.DIR_METADATA);
final IDirectory idDir = Utilities.getSubDirectory(metaData, ExperimentIdentifier.FOLDER); final IDirectory idDir = Utilities.getSubDirectory(metaData, ExperimentIdentifier.FOLDER);
assertEquals("i\n", Utilities.getString(idDir, ExperimentIdentifier.INSTANCE_CODE));
assertEquals("g\n", Utilities.getString(idDir, ExperimentIdentifier.GROUP_CODE)); assertEquals("g\n", Utilities.getString(idDir, ExperimentIdentifier.GROUP_CODE));
assertEquals("p\n", Utilities.getString(idDir, ExperimentIdentifier.PROJECT_CODE)); assertEquals("p\n", Utilities.getString(idDir, ExperimentIdentifier.PROJECT_CODE));
assertEquals("e\n", Utilities.getString(idDir, ExperimentIdentifier.EXPERIMENT_CODE)); assertEquals("e\n", Utilities.getString(idDir, ExperimentIdentifier.EXPERIMENT_CODE));
...@@ -149,7 +151,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase ...@@ -149,7 +151,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase
public void testGetExperimentIdentifier() public void testGetExperimentIdentifier()
{ {
dataStructure.create(); dataStructure.create();
final ExperimentIdentifier id = new ExperimentIdentifier("g", "p", "e"); final ExperimentIdentifier id = new ExperimentIdentifier("i", "g", "p", "e");
dataStructure.setExperimentIdentifier(id); dataStructure.setExperimentIdentifier(id);
assertEquals(id, dataStructure.getExperimentIdentifier()); assertEquals(id, dataStructure.getExperimentIdentifier());
} }
...@@ -240,7 +242,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase ...@@ -240,7 +242,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase
dataStructure.create(); dataStructure.create();
dataStructure.getOriginalData().addKeyValuePair("answer", "42"); dataStructure.getOriginalData().addKeyValuePair("answer", "42");
dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0); dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0);
dataStructure.setExperimentIdentifier(new ExperimentIdentifier("g", "p", "e")); dataStructure.setExperimentIdentifier(new ExperimentIdentifier("i", "g", "p", "e"));
dataStructure.setExperimentRegistrationTimestamp(new ExperimentRegistrationTimestamp( dataStructure.setExperimentRegistrationTimestamp(new ExperimentRegistrationTimestamp(
new Date(0))); new Date(0)));
try try
...@@ -259,7 +261,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase ...@@ -259,7 +261,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase
dataStructure.create(); dataStructure.create();
dataStructure.getOriginalData().addKeyValuePair("answer", "42"); dataStructure.getOriginalData().addKeyValuePair("answer", "42");
dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0); dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0);
dataStructure.setExperimentIdentifier(new ExperimentIdentifier("g", "p", "e")); dataStructure.setExperimentIdentifier(new ExperimentIdentifier("i", "g", "p", "e"));
dataStructure.setExperimentRegistrator(new ExperimentRegistrator("g", "p", "g@p")); dataStructure.setExperimentRegistrator(new ExperimentRegistrator("g", "p", "g@p"));
try try
{ {
...@@ -277,7 +279,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase ...@@ -277,7 +279,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase
dataStructure.create(); dataStructure.create();
dataStructure.getOriginalData().addKeyValuePair("answer", "42"); dataStructure.getOriginalData().addKeyValuePair("answer", "42");
dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0); dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0);
dataStructure.setExperimentIdentifier(new ExperimentIdentifier("g", "p", "e")); dataStructure.setExperimentIdentifier(new ExperimentIdentifier("i", "g", "p", "e"));
dataStructure.setExperimentRegistrator(new ExperimentRegistrator("g", "p", "g@p")); dataStructure.setExperimentRegistrator(new ExperimentRegistrator("g", "p", "g@p"));
dataStructure.setExperimentRegistrationTimestamp(new ExperimentRegistrationTimestamp( dataStructure.setExperimentRegistrationTimestamp(new ExperimentRegistrationTimestamp(
new Date(0))); new Date(0)));
...@@ -297,7 +299,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase ...@@ -297,7 +299,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase
dataStructure.create(); dataStructure.create();
dataStructure.getOriginalData().addKeyValuePair("answer", "42"); dataStructure.getOriginalData().addKeyValuePair("answer", "42");
dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0); dataStructure.setFormat(UnknownFormatV1_0.UNKNOWN_1_0);
final ExperimentIdentifier experimentIdentifier = new ExperimentIdentifier("g", "p", "e"); final ExperimentIdentifier experimentIdentifier = new ExperimentIdentifier("i", "g", "p", "e");
dataStructure.setExperimentIdentifier(experimentIdentifier); dataStructure.setExperimentIdentifier(experimentIdentifier);
final ExperimentRegistrationTimestamp experimentRegistratorDate = final ExperimentRegistrationTimestamp experimentRegistratorDate =
new ExperimentRegistrationTimestamp(new Date(4711L * 4711000L)); new ExperimentRegistrationTimestamp(new Date(4711L * 4711000L));
...@@ -486,7 +488,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase ...@@ -486,7 +488,7 @@ public final class DataStructureTestV1_0 extends AbstractFileSystemTestCase
final IDirectory metaData = root.makeDirectory(DataStructureV1_0.DIR_METADATA); final IDirectory metaData = root.makeDirectory(DataStructureV1_0.DIR_METADATA);
new Format(UnknownFormatV1_0.UNKNOWN_1_0.getCode(), new Version(2, 0), null) new Format(UnknownFormatV1_0.UNKNOWN_1_0.getCode(), new Version(2, 0), null)
.saveTo(metaData); .saveTo(metaData);
new ExperimentIdentifier("g", "p", "e").saveTo(metaData); new ExperimentIdentifier("i", "g", "p", "e").saveTo(metaData);
new ExperimentRegistrationTimestamp(new Date(0)).saveTo(metaData); new ExperimentRegistrationTimestamp(new Date(0)).saveTo(metaData);
new ExperimentRegistrator("john", "doe", "j@doe").saveTo(metaData); new ExperimentRegistrator("john", "doe", "j@doe").saveTo(metaData);
new Sample("a", "CELL_PLATE", "b").saveTo(metaData); new Sample("a", "CELL_PLATE", "b").saveTo(metaData);
......
...@@ -33,12 +33,12 @@ public final class ExperimentIdentifierTest extends EqualsHashCodeTestCase<Exper ...@@ -33,12 +33,12 @@ public final class ExperimentIdentifierTest extends EqualsHashCodeTestCase<Exper
@Override @Override
protected final ExperimentIdentifier createInstance() throws Exception protected final ExperimentIdentifier createInstance() throws Exception
{ {
return new ExperimentIdentifier("group", "project", "experiment1"); return new ExperimentIdentifier("instance", "group", "project", "experiment1");
} }
@Override @Override
protected final ExperimentIdentifier createNotEqualInstance() throws Exception protected final ExperimentIdentifier createNotEqualInstance() throws Exception
{ {
return new ExperimentIdentifier("group", "project", "experiment2"); return new ExperimentIdentifier("instance", "group", "project", "experiment2");
} }
} }
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