diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/AbstractXLSExportHelper.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/AbstractXLSExportHelper.java index c7fac581199807ea4d9457ecac26a8633bf37421..5d7d2765a3573380fb1ec2c8557657f4e4e9337c 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/AbstractXLSExportHelper.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/AbstractXLSExportHelper.java @@ -21,6 +21,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IEntityType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IEntityTypeHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.Plugin; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.DataType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.Vocabulary; @@ -127,13 +128,16 @@ abstract class AbstractXLSExportHelper implements IXLSExportHelper return null; } - protected static Function<String, String> getPropertiesMappingFunction( + protected static Function<Map.Entry<String, DataType>, String> getPropertiesMappingFunction( final XLSExport.TextFormatting textFormatting, final Map<String, String> properties) { return textFormatting == XLSExport.TextFormatting.PLAIN - ? propertyCode -> properties.get(propertyCode) != null - ? properties.get(propertyCode).replaceAll("<[^>]+>", "") : null - : properties::get; + ? codeToTypeEntry -> codeToTypeEntry.getValue() == DataType.MULTILINE_VARCHAR + ? properties.get(codeToTypeEntry.getKey()) != null + ? properties.get(codeToTypeEntry.getKey()).replaceAll("<[^>]+>", "") + : null + : properties.get(codeToTypeEntry.getKey()) + : codeToTypeEntry -> properties.get(codeToTypeEntry.getKey()); } - + } diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSDataSetExportHelper.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSDataSetExportHelper.java index 1bda579ccc93e193326a02b2514e0f31b2d5b243..307f06b9dd58fbae7a61723d39ff3e16b818e037 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSDataSetExportHelper.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSDataSetExportHelper.java @@ -15,6 +15,9 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSet; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.DataSetPermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.DataType; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyType; import ch.ethz.sis.openbis.generic.server.xls.export.XLSExport; public class XLSDataSetExportHelper extends AbstractXLSExportHelper @@ -41,10 +44,12 @@ public class XLSDataSetExportHelper extends AbstractXLSExportHelper final List<String> headers = new ArrayList<>(List.of("Code", entry.getValue().get(0).getSample() != null ? "Sample" : "Experiment")); - final List<String> propertyNames = entry.getKey().getPropertyAssignments().stream().map( + final List<PropertyAssignment> propertyAssignments = entry.getKey().getPropertyAssignments(); + final List<String> propertyNames = propertyAssignments.stream().map( assignment -> assignment.getPropertyType().getLabel()).collect(Collectors.toList()); - final List<String> propertyCodes = entry.getKey().getPropertyAssignments().stream().map( - assignment -> assignment.getPropertyType().getCode()).collect(Collectors.toList()); + final Map<String, DataType> propertyCodeToTypeMap = propertyAssignments.stream() + .map(PropertyAssignment::getPropertyType) + .collect(Collectors.toMap(PropertyType::getCode, PropertyType::getDataType)); headers.addAll(propertyNames); addRow(wb, rowNumber++, true, headers.toArray(String[]::new)); @@ -58,7 +63,7 @@ public class XLSDataSetExportHelper extends AbstractXLSExportHelper List.of(dataSet.getCode(), identifierHolder.getIdentifier().getIdentifier())); final Map<String, String> properties = dataSet.getProperties(); - dataSetValues.addAll(propertyCodes.stream() + dataSetValues.addAll(propertyCodeToTypeMap.entrySet().stream() .map(getPropertiesMappingFunction(textFormatting, properties)) .collect(Collectors.toList())); diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSExperimentExportHelper.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSExperimentExportHelper.java index 60adfc86fef8b2351aee07309651277d6f84a011..1b8afff5851c1df84e3052b7a9af66dd1e29ca63 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSExperimentExportHelper.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSExperimentExportHelper.java @@ -14,6 +14,9 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentPermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.DataType; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyType; import ch.ethz.sis.openbis.generic.server.xls.export.XLSExport; public class XLSExperimentExportHelper extends AbstractXLSExportHelper @@ -39,10 +42,12 @@ public class XLSExperimentExportHelper extends AbstractXLSExportHelper addRow(wb, rowNumber++, false, entry.getKey().getPermId().getPermId()); final List<String> headers = new ArrayList<>(List.of("Identifier", "Code", "Project")); - final List<String> propertyNames = entry.getKey().getPropertyAssignments().stream().map( + final List<PropertyAssignment> propertyAssignments = entry.getKey().getPropertyAssignments(); + final List<String> propertyNames = propertyAssignments.stream().map( assignment -> assignment.getPropertyType().getLabel()).collect(Collectors.toList()); - final List<String> propertyCodes = entry.getKey().getPropertyAssignments().stream().map( - assignment -> assignment.getPropertyType().getCode()).collect(Collectors.toList()); + final Map<String, DataType> propertyCodeToTypeMap = propertyAssignments.stream() + .map(PropertyAssignment::getPropertyType) + .collect(Collectors.toMap(PropertyType::getCode, PropertyType::getDataType)); headers.addAll(propertyNames); addRow(wb, rowNumber++, true, headers.toArray(String[]::new)); @@ -54,7 +59,7 @@ public class XLSExperimentExportHelper extends AbstractXLSExportHelper experiment.getProject().getIdentifier().getIdentifier())); final Map<String, String> properties = experiment.getProperties(); - experimentValues.addAll(propertyCodes.stream() + experimentValues.addAll(propertyCodeToTypeMap.entrySet().stream() .map(getPropertiesMappingFunction(textFormatting, properties)) .collect(Collectors.toList())); diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSSampleExportHelper.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSSampleExportHelper.java index bf216a8faf9b76c1e43feb52f27e4f26547789fd..9aab8b9baf88ca1d87f89d8786edc0073b040c00 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSSampleExportHelper.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSSampleExportHelper.java @@ -10,6 +10,9 @@ import java.util.stream.Collectors; import org.apache.poi.ss.usermodel.Workbook; import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.DataType; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions; @@ -40,10 +43,13 @@ public class XLSSampleExportHelper extends AbstractXLSExportHelper final List<String> headers = new ArrayList<>(List.of("$", "Identifier", "Code", "Space", "Project", "Experiment", "Auto generate code", "Parents", "Children")); - final List<String> propertyNames = entry.getKey().getPropertyAssignments().stream().map( + final List<PropertyAssignment> propertyAssignments = entry.getKey().getPropertyAssignments(); + final List<String> propertyNames = propertyAssignments.stream().map( assignment -> assignment.getPropertyType().getLabel()).collect(Collectors.toList()); - final List<String> propertyCodes = entry.getKey().getPropertyAssignments().stream().map( - assignment -> assignment.getPropertyType().getCode()).collect(Collectors.toList()); + final Map<String, DataType> propertyCodeToTypeMap = propertyAssignments.stream() + .map(PropertyAssignment::getPropertyType) + .collect(Collectors.toMap(PropertyType::getCode, PropertyType::getDataType)); + headers.addAll(propertyNames); addRow(wb, rowNumber++, true, headers.toArray(String[]::new)); @@ -64,7 +70,7 @@ public class XLSSampleExportHelper extends AbstractXLSExportHelper "FALSE", parents, children)); final Map<String, String> properties = sample.getProperties(); - sampleValues.addAll(propertyCodes.stream() + sampleValues.addAll(propertyCodeToTypeMap.entrySet().stream() .map(getPropertiesMappingFunction(textFormatting, properties)) .collect(Collectors.toList()));