From 277414562fb83e467d493bac67d443fb20c7a60b Mon Sep 17 00:00:00 2001
From: Maria Hofmann <m.hofmann@adito.de>
Date: Mon, 20 May 2019 15:48:05 +0200
Subject: [PATCH] DSGVO Entity und Context erstellen und einrichten

---
 entity/DSGVO_entity/DSGVO_entity.aod          | 113 ++++++++++++++----
 .../entityfields/date_edit/valueProcess.js    |   7 ++
 .../entityfields/date_new/valueProcess.js     |   7 ++
 .../entityfields/dsgvoid/valueProcess.js      |   8 ++
 .../entityfields/user_edit/valueProcess.js    |   7 ++
 .../entityfields/user_new/valueProcess.js     |   7 ++
 neonContext/DSGVO/DSGVO.aod                   |  22 ++++
 neonView/DSGVOEdit_view/DSGVOEdit_view.aod    |  31 +++++
 .../DSGVOFilter_view/DSGVOFilter_view.aod     |  43 +++++++
 .../DSGVOPreview_view/DSGVOPreview_view.aod   |  31 +++++
 report/DSGVO_report/reportData.jasper         | Bin 28291 -> 31418 bytes
 11 files changed, 254 insertions(+), 22 deletions(-)
 create mode 100644 entity/DSGVO_entity/entityfields/date_edit/valueProcess.js
 create mode 100644 entity/DSGVO_entity/entityfields/date_new/valueProcess.js
 create mode 100644 entity/DSGVO_entity/entityfields/dsgvoid/valueProcess.js
 create mode 100644 entity/DSGVO_entity/entityfields/user_edit/valueProcess.js
 create mode 100644 entity/DSGVO_entity/entityfields/user_new/valueProcess.js
 create mode 100644 neonContext/DSGVO/DSGVO.aod
 create mode 100644 neonView/DSGVOEdit_view/DSGVOEdit_view.aod
 create mode 100644 neonView/DSGVOFilter_view/DSGVOFilter_view.aod
 create mode 100644 neonView/DSGVOPreview_view/DSGVOPreview_view.aod

diff --git a/entity/DSGVO_entity/DSGVO_entity.aod b/entity/DSGVO_entity/DSGVO_entity.aod
index b7276f8a0c..5681d8f103 100644
--- a/entity/DSGVO_entity/DSGVO_entity.aod
+++ b/entity/DSGVO_entity/DSGVO_entity.aod
@@ -9,6 +9,50 @@
     <entityProvider>
       <name>#PROVIDER</name>
     </entityProvider>
+    <entityField>
+      <name>DSGVOID</name>
+      <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/dsgvoid/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>ROW_ID</name>
+    </entityField>
+    <entityField>
+      <name>RIGHT</name>
+      <title>DataPrivacy Right</title>
+      <mandatory v="true" />
+    </entityField>
+    <entityField>
+      <name>USE</name>
+      <title>DataPrivacy Use</title>
+      <mandatory v="true" />
+    </entityField>
+    <entityField>
+      <name>TABLENAME</name>
+    </entityField>
+    <entityField>
+      <name>VALID_TO</name>
+      <title>Valid to</title>
+    </entityField>
+    <entityField>
+      <name>CONTACT_ID</name>
+      <linkedContext>Default_context</linkedContext>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -20,34 +64,59 @@
       <fromClauseProcess>%aditoprj%/entity/DSGVO_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <linkInformation>
         <linkInformation>
-          <name>19492a6a-0237-4e52-a084-30ee856107cb</name>
+          <name>32dd6b4a-8fd0-48ed-b39a-b1bd222b7e88</name>
           <tableName>DSGVO</tableName>
           <primaryKey>DSGVOID</primaryKey>
           <isUIDTable v="false" />
           <readonly v="false" />
         </linkInformation>
-        <linkInformation>
-          <name>02f589ab-e542-4c37-a305-10b458c88380</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>404928e9-d53f-4b09-bf15-9d68886d73ff</name>
-          <tableName>COMMUNICATION</tableName>
-          <primaryKey>COMMUNICATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>22e52f2a-c5dc-45d3-9f76-4b0c5ba42fd6</name>
-          <tableName>ADDRESS</tableName>
-          <primaryKey>ADDRESSID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="false" />
-        </linkInformation>
       </linkInformation>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>CONTACT_ID.value</name>
+          <recordfield>DSGVO.CONTACT_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>DSGVO.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>DSGVO.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DSGVOID.value</name>
+          <recordfield>DSGVO.DSGVOID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>RIGHT.value</name>
+          <recordfield>DSGVO.RIGHT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ROW_ID.value</name>
+          <recordfield>DSGVO.ROW_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TABLENAME.value</name>
+          <recordfield>DSGVO.TABLENAME</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USE.value</name>
+          <recordfield>DSGVO.USE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>DSGVO.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>DSGVO.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>VALID_TO.value</name>
+          <recordfield>DSGVO.VALID_TO</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/DSGVO_entity/entityfields/date_edit/valueProcess.js b/entity/DSGVO_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000..5e6ef05973
--- /dev/null
+++ b/entity/DSGVO_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/DSGVO_entity/entityfields/date_new/valueProcess.js b/entity/DSGVO_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000..a72892783b
--- /dev/null
+++ b/entity/DSGVO_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/DSGVO_entity/entityfields/dsgvoid/valueProcess.js b/entity/DSGVO_entity/entityfields/dsgvoid/valueProcess.js
new file mode 100644
index 0000000000..ef478411d7
--- /dev/null
+++ b/entity/DSGVO_entity/entityfields/dsgvoid/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.result");
+import("system.util");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW){
+    result.string(util.getNewUUID());
+}
\ No newline at end of file
diff --git a/entity/DSGVO_entity/entityfields/user_edit/valueProcess.js b/entity/DSGVO_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000..6af880ae3e
--- /dev/null
+++ b/entity/DSGVO_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/DSGVO_entity/entityfields/user_new/valueProcess.js b/entity/DSGVO_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000..e518bc75a9
--- /dev/null
+++ b/entity/DSGVO_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/neonContext/DSGVO/DSGVO.aod b/neonContext/DSGVO/DSGVO.aod
new file mode 100644
index 0000000000..605b9fa14c
--- /dev/null
+++ b/neonContext/DSGVO/DSGVO.aod
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
+  <name>DSGVO</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterview>DSGVOFilter_view</filterview>
+  <editview>DSGVOEdit_view</editview>
+  <entity>DSGVO_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>aacec0e0-816b-4075-bc45-a0fea73f2c62</name>
+      <view>DSGVOFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>6632d226-6b4a-4497-bafe-10f36e54c90f</name>
+      <view>DSGVOEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>ed1cb100-0801-4280-a1a2-57ad858de187</name>
+      <view>DSGVOPreview_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod
new file mode 100644
index 0000000000..7ffda7078f
--- /dev/null
+++ b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>DSGVOEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Generic</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>c3923993-98fa-484d-bd74-607040917611</name>
+          <entityField>RIGHT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>4108c82d-0359-44d5-bf76-6632f96852a5</name>
+          <entityField>USE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>a9e1245c-7798-4170-9f2f-2e33f61cd6aa</name>
+          <entityField>VALID_TO</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod
new file mode 100644
index 0000000000..cf36b04ef2
--- /dev/null
+++ b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>DSGVOFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>76d31355-bdff-4b4c-a61c-285ed96c6721</name>
+          <entityField>ROW_ID</entityField>
+          <width v="75" />
+          <expandRatio v="100" />
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b9a96821-ed98-44e8-b1d9-c5577c53bf72</name>
+          <entityField>USE</entityField>
+          <width v="75" />
+          <expandRatio v="100" />
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>ad9e414f-4f0f-4efb-887a-468e7a9fefb5</name>
+          <entityField>RIGHT</entityField>
+          <width v="75" />
+          <expandRatio v="100" />
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>ae9f07de-c29e-4d14-97a1-a01e47c84cbd</name>
+          <entityField>VALID_TO</entityField>
+          <width v="75" />
+          <expandRatio v="100" />
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/DSGVOPreview_view/DSGVOPreview_view.aod b/neonView/DSGVOPreview_view/DSGVOPreview_view.aod
new file mode 100644
index 0000000000..046014dee0
--- /dev/null
+++ b/neonView/DSGVOPreview_view/DSGVOPreview_view.aod
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>DSGVOPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Info</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>ea829487-d4a6-45e5-a5af-c8af2eb696e2</name>
+          <entityField>RIGHT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>f702234f-edab-46d4-9c1b-f20e36fd29b8</name>
+          <entityField>USE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>23c39671-0aea-4b58-b726-96d0b7f5384e</name>
+          <entityField>VALID_TO</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/report/DSGVO_report/reportData.jasper b/report/DSGVO_report/reportData.jasper
index 33f416115211e24b4b78144ae30c00bb58aeeda5..62cb7ad949c6c6aa454241039cef8e37bb37f45c 100644
GIT binary patch
delta 5675
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
Q`8wfb_0K)cmedURA8XCvcK`qY

delta 3005
zcmeHI`%fHY6uoy@gqDTK8w5&$1tPWOQJ&?^mWVAh-DP={hs&m}23!irf{39AHWF$o
z&@Z(%eF!R0t0tILnnI$W)L0VR(jQD}VvHvC2d%WUV4~IPo$s3^OLqPP-O1cNGw05n
z^W8H$JF|wbevebt32r-6Qth<~ZJul)B9K|K%^vPAssX^ACF>&D?QAbJvysrpm|u=g
zYiWbS$jiajcEYd^;7emGebxyJiz@VgL^LwY@J|s?w3oZKOBeH7RXA>Qkd1`}v*n!Q
zB;1!9fZohEe;b?6HEKH~6<(SZ<OR#+WhluDs30#BF7nOnWL_Ri(}ihrq*cMAlBgKL
zOo2|@D;@IEqu@cX+=C1y4+1K9kO>zLJ$wXj7N(PrI9a??r_&Bf;=BwfhzpjB%TN**
zP(fTKT*L>sxM6pWEd2iNd@YlNc^Od<7AzN*Aqhtcs30u&T;HX&zg%3dW?Q#Mj?8(n
z{hQQw)y^IjyIJVNZa=kIg{Q@Xw`V98$0Y;2j4BuqEH@xSY2^Yc7?25<m5;J*S&__=
zQDxWf9Y#FIekz^Bx9vyE_PIICtnQCj;UyNK55<pIhCW?|@3OJ<810<okC#gd{shbY
z$xs@QfC~N`Jq8n=WoAQ+LwwYb$A<E~@CrMf-$~V69#1X?%T103wXul(RlwLy<1V@~
zpkn>X@`^mRw}`RqEDcMl^q{LUD_0y>6;~C-;(ciWysRiJK(KrPGL!}^puz%V!eziK
z{LzZ4P9k@8xgo5n+RI^Lq&hDa|CUVf@<73aV7UnyN+twUFd-8zCLU1A;qnwZ4@@`=
zWY*{^eMn!$i^f%75I%w^ae9+&AoQ*TTdMI76}Kic;(Ev1PNm@^38*zVeDv4mSB6MF
zcnMPQAy@?;&cp^Eg5W;n9v2@$Ojmcp;bFB-SE-de@Di=yL9hxQoQVw{1i?MXJuV)i
zrCHdo*Y~3)cxdtA%xCmBv;%%;Pn*JhGg6aMGLw_D(lbn{nW;%h>Gs!63tsV_@EZbn
zz#RnNCUd7b(P}>QTw+m6i`8O2v>BFRMFa70k40Gn1E|H)X|{HlZI<G8TVpeQKVyHz
zdcr*#m%xoSz+x;5yFlLsq%3{BX)mT-&k|pV?6nh`r~MjrkSfN^!q*4X7h$n%67D(S
zTTb{p3A>4&t4`;?a5_KjbpC?V`Ev=MK<YGnGY3ngFdR;YrR#_NbhKyv$i~LHlCg+o
zw@3AEB_>BOezzyULp=#<w^>-OF<peaWlv1e3J|PRyI~8}0Z_ppl)y32!y90P<4_L_
z8sH=}!dujL20Gv@bio+(!8>pSCa9C#zz1*&J|uPu#^GZ)51)b^rfI96p&`w}0(?$`
znu8m#K*PF>YPf<iu!wPR6?O0}S-4L<D!5D*)O7R}JWjs;%R&4=)A*5s_?d#ZMM3;R
zLHtTV+@T=uQV^>Y#2N+h2L<sb1@VxA_y>m34NlQ?&!8ua<0d$d-e5-`n8tcPm`8sa
ze=uCb5V(Qih!}xtjKUa<#yHw^xPwN&`hO74zX;3#6=p#R=7Jvcz=%aqPmgQ^J_(Ij
z0#+=A4lIK%)I%Q{;0RX2F|48>YAJ|13Zj96FjEi~3gTG`qNIs}c%Fi2p&(i*2pa{_
qK|#DkL3C3Lhbf5H$if=^7F3|JL7*u)EzRYXXJc*Kx3KrRgZ>3%j-D?7

-- 
GitLab