From 96852ede9b04817974ca3283ced2c9332fff9cea Mon Sep 17 00:00:00 2001 From: vkovtun <vkovtun@ethz.ch> Date: Wed, 22 Nov 2023 16:57:24 +0100 Subject: [PATCH] BIS-772: Working on PDF export. Added attributes filtering for HTML export for spaces. --- .../v3/executor/exporter/ExportExecutor.java | 26 ++++++++++++++---- .../systemtest/asapi/v3/ExportData.java | 10 +++++++ .../export-space-filtered-fields-html.zip | Bin 0 -> 493 bytes 3 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/test_files/export/export-space-filtered-fields-html.zip diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutor.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutor.java index 63286f51fe4..76cc929272c 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutor.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/exporter/ExportExecutor.java @@ -85,6 +85,7 @@ import com.openhtmltopdf.pdfboxout.PdfRendererBuilder; import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ICodeHolder; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IDescriptionHolder; 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.common.interfaces.IIdentifierHolder; @@ -929,10 +930,23 @@ public class ExportExecutor implements IExportExecutor } // TODO: what to do when typeObj is null? - final List<Map<String, String>> selectedExportFields = - entityTypeExportFieldsMap == null || entityTypeExportFieldsMap.isEmpty() || typeObj == null - ? null - : entityTypeExportFieldsMap.get(typeObj.getCode()); + final List<Map<String, String>> selectedExportFields; + if (entityTypeExportFieldsMap == null || entityTypeExportFieldsMap.isEmpty()) + { + selectedExportFields = null; + } else if (typeObj != null) + { + selectedExportFields = entityTypeExportFieldsMap.get(typeObj.getCode()); + } else if (entityObj instanceof Space) + { + selectedExportFields = entityTypeExportFieldsMap.get(SPACE.name()); + } else if (entityObj instanceof Project) + { + selectedExportFields = entityTypeExportFieldsMap.get(PROJECT.name()); + } else + { + selectedExportFields = null; + } final Set<String> selectedExportAttributes = selectedExportFields != null ? selectedExportFields.stream().filter(map -> Objects.equals(map.get(FIELD_TYPE_KEY), ATTRIBUTE.name())) @@ -995,9 +1009,9 @@ public class ExportExecutor implements IExportExecutor } } - if (entityObj instanceof Project && allowsValue(selectedExportAttributes, Attribute.DESCRIPTION.name())) + if (entityObj instanceof IDescriptionHolder && allowsValue(selectedExportAttributes, Attribute.DESCRIPTION.name())) { - final String description = ((Project) entityObj).getDescription(); + final String description = ((IDescriptionHolder) entityObj).getDescription(); if (description != null) { documentBuilder.addHeader("Description"); diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExportData.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExportData.java index fc444435681..467d30a01ef 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExportData.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExportData.java @@ -352,6 +352,16 @@ public class ExportData }, // HTML: Selected fields + { + // Space: TEST-SPACE + "export-space-filtered-fields-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), + new SelectedFields(List.of(CODE, PERM_ID, MODIFICATION_DATE), List.of()), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, { // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST "export-sample-filtered-fields-html.zip", diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/test_files/export/export-space-filtered-fields-html.zip b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/test_files/export/export-space-filtered-fields-html.zip new file mode 100644 index 0000000000000000000000000000000000000000..4633bed1615a5c35ac117c184939b66872931f91 GIT binary patch literal 493 zcmWIWW@Zs#;Nak3uxTy}X8-~w5CH@%KwOZLrq9d};LXkf5`oDCfb{@1F<fpb3pXsN zefu9MyNi*5K^Uqh#5FiXH#or2*;Oy2BsZsb!a=`g2Z6Ttc1KUhwzbY+h%^sWn0P~L zqUkHa2rZRX)e_-Xx2>1@-de%#zuEY|`TsL~`~Bu6|D3q|!mK*(pRfOFbsyX$c>j-t z;Y7|o_9wn_&3NpTxNMzS$IHpAVcBOS6wiHrb7tS-<^EIjci8XP;C%aK=KE=K?vkmU z+WUBJe!rbq{=1!#`|yVw?m8c~X-<8xgT+gG?LLj5xtue_F6n*RZJ|0>cJ;gyA;vTE zE?-^x@(aVw4Hs3ayKT7QI*;cC2o|h4QD!r>d*hnf#a<z6LO)O5B~#J(?CcfiX@4fi zWtZO5(>%LgbKYw<v*c~n%y|+U6_U<;Wctq`uq&ovpNqKA{Qz%9CJ_eQp$rOJ1OSCO lOb4zohN)iCXaZz{bfATJfHx}}ND&hd76a)NVB|0`001mHq__Y8 literal 0 HcmV?d00001 -- GitLab