From 1d36a2664f46ef4b9ab8ea2720ba66f535598549 Mon Sep 17 00:00:00 2001
From: vkovtun <viktor.kovtun@id.ethz.ch>
Date: Fri, 31 Mar 2023 12:25:47 +0200
Subject: [PATCH] SSDM-13256: Added missing columns for data set types.

---
 .../helper/XLSDataSetTypeExportHelper.java    |  27 ++++++++++++++++--
 .../xls/export/DataSetTypeExpectations.java   |  11 +++++++
 .../resources/export-data-set-type.xlsx       | Bin 5657 -> 5821 bytes
 3 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSDataSetTypeExportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSDataSetTypeExportHelper.java
index 10ebf8b0c3f..ec05f56419b 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSDataSetTypeExportHelper.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/XLSDataSetTypeExportHelper.java
@@ -17,6 +17,10 @@ package ch.ethz.sis.openbis.generic.server.xls.export.helper;
 
 import static ch.ethz.sis.openbis.generic.server.xls.export.Attribute.CODE;
 import static ch.ethz.sis.openbis.generic.server.xls.export.Attribute.DESCRIPTION;
+import static ch.ethz.sis.openbis.generic.server.xls.export.Attribute.DISALLOW_DELETION;
+import static ch.ethz.sis.openbis.generic.server.xls.export.Attribute.MAIN_DATA_SET_PATH;
+import static ch.ethz.sis.openbis.generic.server.xls.export.Attribute.MAIN_DATA_SET_PATTERN;
+import static ch.ethz.sis.openbis.generic.server.xls.export.Attribute.MODIFICATION_DATE;
 import static ch.ethz.sis.openbis.generic.server.xls.export.Attribute.VALIDATION_SCRIPT;
 import static ch.ethz.sis.openbis.generic.server.xls.export.Attribute.VERSION;
 
@@ -70,7 +74,8 @@ public class XLSDataSetTypeExportHelper extends AbstractXLSEntityTypeExportHelpe
     @Override
     protected Attribute[] getAttributes(final DataSetType entityType)
     {
-        return new Attribute[] { VERSION, CODE, DESCRIPTION, VALIDATION_SCRIPT };
+        return new Attribute[] { VERSION, CODE, DESCRIPTION, VALIDATION_SCRIPT, MAIN_DATA_SET_PATTERN, MAIN_DATA_SET_PATH, DISALLOW_DELETION,
+                MODIFICATION_DATE };
     }
 
     @Override
@@ -78,6 +83,10 @@ public class XLSDataSetTypeExportHelper extends AbstractXLSEntityTypeExportHelpe
     {
         switch (attribute)
         {
+            case VERSION:
+            {
+                return String.valueOf(VersionUtils.getStoredVersion(allVersions, ImportTypes.DATASET_TYPE, null, dataSetType.getCode()));
+            }
             case CODE:
             {
                 return dataSetType.getCode();
@@ -92,9 +101,21 @@ public class XLSDataSetTypeExportHelper extends AbstractXLSEntityTypeExportHelpe
                 return validationPlugin != null ? (validationPlugin.getName() != null ? validationPlugin.getName() + ".py" : "") : "";
 
             }
-            case VERSION:
+            case MAIN_DATA_SET_PATTERN:
             {
-                return String.valueOf(VersionUtils.getStoredVersion(allVersions, ImportTypes.DATASET_TYPE, null, dataSetType.getCode()));
+                return dataSetType.getMainDataSetPattern();
+            }
+            case MAIN_DATA_SET_PATH:
+            {
+                return dataSetType.getMainDataSetPath();
+            }
+            case DISALLOW_DELETION:
+            {
+                return dataSetType.isDisallowDeletion().toString().toUpperCase();
+            }
+            case MODIFICATION_DATE:
+            {
+                return DATE_FORMAT.format(dataSetType.getModificationDate());
             }
             default:
             {
diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/DataSetTypeExpectations.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/DataSetTypeExpectations.java
index 4b2f430b9d3..a4c21b94aca 100644
--- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/DataSetTypeExpectations.java
+++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/DataSetTypeExpectations.java
@@ -16,7 +16,9 @@
 package ch.ethz.sis.openbis.generic.server.xls.export;
 
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 
 import org.jmock.Expectations;
@@ -38,6 +40,11 @@ class DataSetTypeExpectations extends Expectations
 
     public DataSetTypeExpectations(final IApplicationServerApi api, final boolean exportReferred)
     {
+        final Calendar calendar = Calendar.getInstance();
+        calendar.set(2023, Calendar.MARCH, 10, 17, 23, 44);
+
+        final Date modificationDate = calendar.getTime();
+
         allowing(api).getDataSetTypes(with(XLSExportTest.SESSION_TOKEN), with(new CollectionMatcher<>(
                         Collections.singletonList(
                                 new EntityTypePermId("ATTACHMENT", EntityKind.DATA_SET)))),
@@ -58,6 +65,10 @@ class DataSetTypeExpectations extends Expectations
                 dataSetType.setCode("ATTACHMENT");
                 dataSetType.setDescription("Attachment");
                 dataSetType.setPropertyAssignments(getPropertyAssignments(fetchOptions));
+                dataSetType.setMainDataSetPattern(".*\\.jpg");
+                dataSetType.setMainDataSetPath("original/images/");
+                dataSetType.setDisallowDeletion(false);
+                dataSetType.setModificationDate(modificationDate);
 
                 return Collections.singletonMap(new EntityTypePermId("ATTACHMENT"), dataSetType);
             }
diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/resources/export-data-set-type.xlsx b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/xls/export/resources/export-data-set-type.xlsx
index abb65af2eddab40105eb04bef37c8ae25fc4ddc0..dbc02329a35833e4d7ad11995713e9f3fbd8432d 100644
GIT binary patch
delta 3517
zcmZ8k2|UzK|6j|xc3o>7v2w2a4!N%gZHe3>SCS<+<@`z^Ig(`&xo<f(XO#QQwady?
zl$^OrjzW6m`Tw6^&olFS&3tBFGxM35&wSpWd8doNk)Sg|lT#o-)YQ}<2@?QMCqPDi
zQrF0l$%Fq0Sa)(Bz}7QE8WB2IRedxIc1;SSE@?7M-;*_S6TM=+|1q4b{8+PoEb91R
zN|8~2x?)IB;zI}Y$3d1aL+_+FGE0gbvTrHMcaP%11#a*l^HX@1-q%~oN{aV2UAs(l
zAiYd4sw0-aH5;uyo?iny(ZR?qn8a%(M^vw(Ah-0n9>aad04z;^qQaH*;Id@)!nYCZ
zyOb>&d+dD39^UL4nlV}d$6<d8syoz;GsUFaoD95PeyM!&*VG*oP<e!4*+A0O%0d6&
zw#f~xXR{G`icag7MPhex-JhkILkb;WwmkIX{Ed1fFM9VNzLG@Er5b8O!LZPATE<Sv
z4Y;u^wu|x{&_!KgGkG5>kb)olHa>0}Uw6qZnJuYte;t0HLYe)FUSfH2ug<+acKw^3
z(@1vC3(o)oP2n4c5z6^$9c!n4p&~Ne$XJ;iH~joq8<7;)+Bb|Ui)b$)FYzqeyxd2+
z++5@X%3#!|c?;3oDT=d?D(R@E3uR<@P1D2MovzRYBrQa~aWf9W>A1BIUU+~n<nleV
ze=C$W>ZTIidaJx)pKg_JCe!z|M_OS!#!g+i$eBC^RUz1sMEbl1-dan(u@aG#dG0mt
z9xAdYrZP2085vz-KoOa^Ks1^m8%#Bst+ae5ps+B@299Sth$Zyl*{?9bQ%soMuL!7C
zKr_?<GyRUOB1i3M4=0nUw;)r2yNY*oSOw$>hD8m1?=rV7)FCqmwWL=brsv=Lm;Hpz
zCZx6B7(C}#pLIQ0=Ku4|qcdkWMx_>|Cq?8tpI<vSiIOh{tl}m<v@{QexNvK{58!O=
zQ%JeHdsMX3P+z<?r4aJ`juiJ-U=09_Mrw$&HK~CL(?LPUdRc)3&XvCRh$<Cs`E6(E
zbidZ99p`h+-160y|5Ukn2P_G3D(PpqsMbcT0ev0%JsZ)ZM)+Ysu(>pdE$c?^OLt~F
z1l1V^HGVGkval4q1+(sRWtdMWG{5z%=Zod}V=^N&6*U`w{>?Qo2*k+>0vW;n_7JQe
zr6^!I<1wSic;XR^J2%$mufr!LIp*N}9}pR}kiB@Ea4a<nV=!&Fy{l3ni4*Z)M#QR8
zBt}JdcKSxi3Smb^&iK=(K|8ifId?)P+5@{BleUUB_j|{Sp%YB-MVUPDUXy(YbpQMM
zlm4gQgq}KzbLl6>mS$YCvI)$3bS;yY2slB89RwUyFTij79A<{}3cth3eu-?+*p}7t
zX&ChCp2I#s(Zqa>&^?4Lzr5TbqYGb&O-AGm?;%^o>;{QU_152Ajct<oue8_``ct1i
zI@b=LinTO1UfbLrZC0IGKF0t^nMgmZIQz&)^aa+L7#xt!dt57}uC)nHo`zpq0AgpW
zRWeqN<{Gh#qB6hVI!Y^PncB095$HASf4(7n-hLYTKvQjfNbrVyph67IkK8mRq>#xz
z+N<u2*h9)Ao*%;2BMJIb-jJg`M2zxt`bwpkE&T*u(Vs1}$K46O7d<th!ee`FbL=|h
z<eBT&?C(W0PZcEJJ`5L05J;H$z6tCnb?`ArP2q@wT5-&^#n+6(7ul;mQ`xKf`=W#*
zlV2F22W1K|8I{Z;>k<pxbT-Q=_;p@wgbr;;>+W%JmdC}E%)2X*8+GF2CCXOUd$LUR
z7k5((g4iz2f=f*-@m^dML~_Zg7gQVjK4tvJ#HcpQ&#9N*hgDWstv)6z7Xwh5k=X*c
z()n@DgI{O>LC^WTErs)iT=XXgPZ)WXy&hK?%)W5+?vHSh%Y?XT8Oyx)Id^+<_-Zxb
zLxP!HT+$Z|-moP(qe`suba_zTao=whJp3K;w21uJ*p%9g*MCY6qqbN<80ff3M(iBS
zzDJeA(axQSNsDZ~xd)8VssObSQMijXcbPsZInL_tj4;JYI(j8o1~7H{c9q4lKj(jE
z+chca{rduH)6Lo;_FW{eH=DOBwI$zC{gsy79EhXktCyNEsR>lUT-446AHBM1S9^v(
zMvGlnp+PfF^tvU_#dHaYL_BXT#PMEBy(VnTvx%{@;yScLI5r*vp9JW*!b);G4Tqw8
zHY=MMYiyQr;!6#^U>OZ{)<-{g@tT7pSLwcCe$N^PyA4m(f?by4)Jd7fsjrOZCv5e5
zk!aR2B(zIW82zUxmn`r^KG^M(Ti&Q`z}5EXxtu#-Xzt<0Of;fNs_2vPl?}YH_}ux?
zmoFW@y#>n*&jHhygPqcyvXH*Rx7@8i)p>+MgkHUt^0Qkm@Y;{Qu}%_OHw=w9b3d%G
z<yCPU)&hstStf`(hHY#4zfRKmKvv}*)WX-oUoAcU;o%&o#V_4m*o5aV3V*yaoHjQM
z?T^iyjneXBq6nMhj?C2vSE6wmRbP;gf7cRz7<&IFc_0vpK1QvKeL?w=o7?r3Pb^Vx
zDvNfjO_cYpr)d-^wnp1(oB4n<NL<?_3HDSZ(+aX4p?lSC`-jV=n`2{21cru#V(NoO
zN&}|l5~k4P?3gBDY8zEVo%N83fFq>+zy%gyQTB2atSDmuH&RU%>*#hZ6%66-9q3#w
z7!njukQ<m~pe@*iJ#p@leXrWU_F!V^H=+hOMJ_%2`Nby`AkZ4)33B}nTs3E)Y^Sju
zdk!WDnAyh8NHd0PRWTOr<R(u3T&XKaV8AW}QF%)W4A(_!6Z$#zba5f0%B3Q|w#>ey
zYUjFV#Vw}WZVaz0xBM~|2>`DZ5XbBZPr#JcY1&_WIM%nDXQRWF7Mec3y`4rW(fCmz
zkVPeW(4;PdQm-or9%YEkov-x75RM1hCm-hnK%Mgn2Kw4d5A?!RF)lBodj1;K<+O{R
z<=9)Hmidcl@|sP1KV|_u*5F8}ziZs)$9wh1<iQa<>BWIfwhM<xYe7uWX<eTnN8BBQ
z2u<*CJB^sz&IZq??8YQWYnzpx0AAKkEyH)g9oqK}$s{f@r!mN1A->vpZE0{RC)@_G
zSqk+^%o7_CDy)+p`tBEyEn%)im(bUZ2VZfs{k_p}yx%0?5T8;=vWa{-k7`WRX+o!7
ze^wer^diMxe52Jxxh2#|ys0XPS?Q&TzhkhnK^$1pjn?K<F;G<Dprf!_uG_ufhIf9f
z@gVQa7e_63w`ZuVxQ`?8^Yy#@S2Mc+SmL3A_q4zDkeEnidizAVT>fgNXMo&CA%gv@
zZ44JIrh1+Qe}DB>K(@ziE$;8#xJH)pf%imMoh-H7&HC$03<J^Qj=)eI&=Tkh3q!<T
zFxeP+DNNR!Z?ONv-M#&_8AQ>={qA0@;BKnBQt+Up*lJTxb)lc!`Jb=}UGpVW6&LHl
zoa;8{pI|pfOLrD>671rr{^!YH`RQeVI41w+6t{&06YFWZBnmcJZ)1hOwH&LtHsHvZ
z&mX=?bx{dWn3^!FhO8BsJHZ+F;NkG5M2x)PK(`$7X&bKvq^dSTMk$;hdnC#nMRVuV
z6o#A?)!4=<();iXRzA-mSs5Sotogo$@KxOOJ7g%vg5>qB-$D~B%rVN5$c6-z?!YdL
zsU%^Yd4te3cr!O6YFZXj4uN=&am-U9qT)k0m4t863)ESdO>)4^s#%pO=-uWI_Nn#P
z=77s~E>FG(kc`Tf$|(|6RpdJ!LK2K9X2ZD#{0GrNzpK-dRAZ6^;*z9WtaKX0x$ugi
z11nYg@t<VgDP$Ws)QzDiuQ~%F5DGL^ec-4Vhd-I2r7J;7!Ly$`d_=6$oU=6&Y1)|C
zkaQNacilVs96(d}aDMZnnxwsL#xBhvFf120Djm<}-I3&mgN-b$!=~S|*1uHhJF1tM
zF1|A1@%@+#{Dglu=83T*M6VJ08|ius`D2gGtsSpmG7#wNiB10J^D)aH4U{TJ8FAFQ
zPSd!m_}y+0Mced|LWI4If9^wb$d;$rfK~jjm%BHk)<L`&7fxBJOG)=r3|*Vu`dkii
zQU<KXmMBV>Twc9LH;1?<^}No4F^{bHCMOfs^6ZQ`7SF~#(#6b>R&AxhCL95z-8Z<e
zUlwk+@m0L_(Q?qPrZwHH0yKSiE9rmOmH2G?*}bpV%f6RcXMe=QsF>eS?Jpc<&iT<y
z)Q)*?{Z~$5TLJal$`)vAnPsQ61Zz<fU;mjDD#7+4Z+MfkX{UohzrbH9_{?t3cGsKe
z=Y2D=q>y9F<o;oDK>ng<*|y!Ey9j@uzqAhmfu5b*$G_o>>i?(;mYHe%l&Y*T75p35
zl9&}vDa!z}GW`j4G5_Zihh;`caR2H08y(qCmi;G1V(kz@r_*B)oM3AxRv3yDGeVPr
z5upFDBlEvK1@X_^6Uh&|f#5$?@wfGu{%cG#R*Hp(=g&6&KGg|M|CRh1v7RhvPxq0?
c!bw(!eZj(a+9I-Wf+OJAO%@cT(5dQw0sjd~(f|Me

delta 3458
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
Zu{WPy#&Pn-|N1OYpp$4h2}6G){{_jb76||V

-- 
GitLab