diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSSampleExportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSSampleExportHelper.java index 89c334d66bed808dc473f8bcd7ce5dfbc79d21a6..c1a4f3469afd7a024ba62e6874c7212a682b240f 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSSampleExportHelper.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSSampleExportHelper.java @@ -72,7 +72,7 @@ public class XLSSampleExportHelper extends AbstractXLSEntityExportHelper<Sample, protected String[] getAttributeNames(final Sample entity) { return new String[] { "$", "Identifier", "Code", "Space", "Project", "Experiment", - "Auto generate code", "Parents", "Children" }; + "Auto generate code", "Parents", "Children", "Registrator", "Registration Date", "Modifier", "Modification Date" }; } @Override @@ -89,6 +89,8 @@ public class XLSSampleExportHelper extends AbstractXLSEntityExportHelper<Sample, fetchOptions.withChildren(); fetchOptions.withType().withPropertyAssignments().withPropertyType(); fetchOptions.withProperties(); + fetchOptions.withRegistrator(); + fetchOptions.withModifier(); return api.getSamples(sessionToken, samplePermIds, fetchOptions).values(); } @@ -136,6 +138,22 @@ public class XLSSampleExportHelper extends AbstractXLSEntityExportHelper<Sample, .map(child -> child.getIdentifier().getIdentifier()) .collect(Collectors.joining("\n")); } + case "Registrator": + { + return sample.getRegistrator().getUserId(); + } + case "Registration Date": + { + return DATE_FORMAT.format(sample.getRegistrationDate()); + } + case "Modifier": + { + return sample.getModifier().getUserId(); + } + case "Modification Date": + { + return DATE_FORMAT.format(sample.getModificationDate()); + } default: { return null; @@ -155,7 +173,9 @@ public class XLSSampleExportHelper extends AbstractXLSEntityExportHelper<Sample, .collect(Collectors.joining("\n")), sample.getChildren() == null ? "" : sample.getChildren().stream() .map(child -> child.getIdentifier().getIdentifier()) - .collect(Collectors.joining("\n"))); + .collect(Collectors.joining("\n")), sample.getRegistrator().getUserId(), + DATE_FORMAT.format(sample.getRegistrationDate()), sample.getModifier().getUserId(), + DATE_FORMAT.format(sample.getModificationDate())); } @Override diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/SampleExpectations.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/SampleExpectations.java index 0edee9c4f93107dab5f6929c83f14b85ae76668b..882d3b87e664639630f426f5e23a3add39176fc3 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/SampleExpectations.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/SampleExpectations.java @@ -16,6 +16,8 @@ package ch.ethz.sis.openbis.generic.server.xls.export; import java.util.Arrays; +import java.util.Calendar; +import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.function.Function; @@ -30,6 +32,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.EntityKind; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentIdentifier; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.Person; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.Project; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.DataType; @@ -106,6 +109,19 @@ class SampleExpectations extends Expectations defaultExperiment.setCode("DEFAULT"); defaultExperiment.setIdentifier(new ExperimentIdentifier("/DEFAULT/DEFAULT/DEFAULT")); + final Calendar calendar = Calendar.getInstance(); + calendar.set(2023, Calendar.MARCH, 10, 17, 23, 44); + final Date registrationDate = calendar.getTime(); + + calendar.set(2023, Calendar.MARCH, 11, 17, 23, 44); + final Date modificationDate = calendar.getTime(); + + final Person registrator = new Person(); + registrator.setUserId("system"); + + final Person modifier = new Person(); + modifier.setUserId("test"); + final Sample[] samples = new Sample[5]; samples[0] = new Sample(); @@ -119,6 +135,10 @@ class SampleExpectations extends Expectations samples[0].setExperiment(experiment); samples[0].setProperty("$NAME", "Bench"); samples[0].setProperty("$STORAGE.BOX_NUM", "9999"); + samples[0].setRegistrator(registrator); + samples[0].setModifier(modifier); + samples[0].setRegistrationDate(registrationDate); + samples[0].setModificationDate(modificationDate); samples[1] = new Sample(); samples[1].setType(sampleType); @@ -132,6 +152,10 @@ class SampleExpectations extends Expectations samples[1].setExperiment(experiment); samples[1].setProperty("$NAME", "Default Storage"); samples[1].setProperty("$STORAGE.BOX_NUM", "1111"); + samples[1].setRegistrator(registrator); + samples[1].setModifier(modifier); + samples[1].setRegistrationDate(registrationDate); + samples[1].setModificationDate(modificationDate); samples[2] = new Sample(); samples[2].setType(defaultSampleType); @@ -144,6 +168,10 @@ class SampleExpectations extends Expectations samples[2].setProject(defaultProject); samples[2].setExperiment(defaultExperiment); samples[2].setProperty("$NAME", "Default"); + samples[2].setRegistrator(registrator); + samples[2].setModifier(modifier); + samples[2].setRegistrationDate(registrationDate); + samples[2].setModificationDate(modificationDate); samples[3] = new Sample(); samples[3].setType(sampleType); @@ -157,6 +185,10 @@ class SampleExpectations extends Expectations samples[3].setExperiment(experiment); samples[3].setProperty("$NAME", "Child 1"); samples[3].setProperty("$STORAGE.BOX_NUM", "1"); + samples[3].setRegistrator(registrator); + samples[3].setModifier(modifier); + samples[3].setRegistrationDate(registrationDate); + samples[3].setModificationDate(modificationDate); samples[4] = new Sample(); samples[4].setType(sampleType); @@ -170,6 +202,10 @@ class SampleExpectations extends Expectations samples[4].setExperiment(experiment); samples[4].setProperty("$NAME", "Child 2"); samples[4].setProperty("$STORAGE.BOX_NUM", "2"); + samples[4].setRegistrator(registrator); + samples[4].setModifier(modifier); + samples[4].setRegistrationDate(registrationDate); + samples[4].setModificationDate(modificationDate); samples[0].setChildren(List.of(samples[3], samples[4])); samples[1].setChildren(List.of(samples[3], samples[4])); diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/XLSExportTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/XLSExportTest.java index aab49b71d3d8fe00ea467073feb292d8390752e0..39e86a4679a25d7a2d35324780daf18a28dc118a 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/XLSExportTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/XLSExportTest.java @@ -90,26 +90,26 @@ public class XLSExportTest public static final Map<String, Map<String, List<Map<String, String>>>> EXPORT_FIELDS = Map.of( DATASET.toString(), Map.of( - "ATTACHMENT", List.of( - Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Code"), - Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Sample"), - Map.of(FIELD_TYPE_KEY, FieldType.PROPERTY.toString(), FIELD_ID_KEY, "$ATTACHMENT")), - "RAW_DATA", List.of( + "ATTACHMENT", List.of( + Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Code"), + Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Sample"), + Map.of(FIELD_TYPE_KEY, FieldType.PROPERTY.toString(), FIELD_ID_KEY, "$ATTACHMENT")), + "RAW_DATA", List.of( Map.of(FIELD_TYPE_KEY, FieldType.PROPERTY.toString(), FIELD_ID_KEY, "$NAME"), Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Experiment"), Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Code"), Map.of(FIELD_TYPE_KEY, FieldType.PROPERTY.toString(), FIELD_ID_KEY, "NOTES")) ), EXPERIMENT.toString(), Map.of( - "COLLECTION", List.of( - Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Identifier"), - Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Project"), - Map.of(FIELD_TYPE_KEY, FieldType.PROPERTY.toString(), - FIELD_ID_KEY, "$DEFAULT_OBJECT_TYPE")), - "DEFAULT_EXPERIMENT", List.of(Map.of(FIELD_TYPE_KEY, FieldType.PROPERTY.toString(), - FIELD_ID_KEY, "FINISHED_FLAG"), - Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Identifier"), - Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Code")) + "COLLECTION", List.of( + Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Identifier"), + Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Project"), + Map.of(FIELD_TYPE_KEY, FieldType.PROPERTY.toString(), + FIELD_ID_KEY, "$DEFAULT_OBJECT_TYPE")), + "DEFAULT_EXPERIMENT", List.of(Map.of(FIELD_TYPE_KEY, FieldType.PROPERTY.toString(), + FIELD_ID_KEY, "FINISHED_FLAG"), + Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Identifier"), + Map.of(FIELD_TYPE_KEY, FieldType.ATTRIBUTE.toString(), FIELD_ID_KEY, "Code")) ), SAMPLE.toString(), Map.of( "DEFAULT", List.of( diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/resources/export-sample.xlsx b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/resources/export-sample.xlsx index 68a3239cd91e3ef2a78a60237b8d55c707bf8bb7..cb9c9457ec2a77c15e536c8cd0b40bccd9b05901 100644 Binary files a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/resources/export-sample.xlsx and b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/resources/export-sample.xlsx differ