Skip to content

Commit

Permalink
gebruik koppeltabellen voor relaties isbeperkttot, isbelastmet en aan…
Browse files Browse the repository at this point in the history
…tekeningrecht
  • Loading branch information
mprins committed Dec 27, 2022
1 parent f807051 commit 0794bfe
Show file tree
Hide file tree
Showing 7 changed files with 184 additions and 82 deletions.
108 changes: 81 additions & 27 deletions brmo-loader/src/main/resources/xsl/brk2-snapshot-to-rsgb-xml.xsl
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
version="1.0">

<xsl:strip-space elements="*"/>
<!--<xsl:output encoding="UTF-8" version="1.0" indent="yes"/>-->
<xsl:output encoding="UTF-8" version="1.0" indent="yes"/>

<!-- parameters van het bericht -->
<xsl:param name="objectRef" select="'NL.KAD.OnroerendeZaak:onbekend'"/>
Expand Down Expand Up @@ -756,33 +756,53 @@
<xsl:template name="recht">
<xsl:param name="recht"/>

<xsl:variable name="rechtId">
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="$recht/Recht:identificatie"/>
</xsl:call-template>
</xsl:variable>

<recht column-dat-beg-geldh="begingeldigheid" column-datum-einde-geldh="einddatumrecht">
<identificatie>
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="$recht/Recht:identificatie"/>
</xsl:call-template>
<xsl:value-of select="$rechtId"/>
</identificatie>
<aard>
<xsl:value-of select="$recht/Recht:aard/Typen:waarde"/>
</aard>
<toelichtingbewaarder>
<xsl:value-of select="$recht/Recht:toelichtingBewaarder"/>
</toelichtingbewaarder>
<isbelastmet>
<!-- TODO (recht): (bron Zakelijkrecht) dit kunnen er meer dan 1 (0..∞) zijn -->
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="$recht/Recht:isBelastMet/Recht-ref:ZakelijkRechtRef"/>
</xsl:call-template>
</isbelastmet>
<!-- isbelastmet via koppeltabel -->
<isgebaseerdop>
<xsl:call-template name="domein_identificatie">
<!-- TODO (recht): (bron oa. ZakelijkRecht/Mandeligheid/Aantekening)
<!-- (bron oa. ZakelijkRecht/Mandeligheid/Aantekening)
Er kunnen meer dan 1 stukdelen zijn (xsd zegt max 2)
bijv. NL.IMKAD.KadastraalObject.53730012470000 heeft meerdere stukdeel referenties
bijv. NL.IMKAD.KadastraalObject:53730012470000 / /brk2/stand-perceel-8.anon.xml uit stand
nov.2022 heeft meerdere stukdeel referenties;
dit betreft een datafout want er is een tenaamstelling met 4 stukdelen (xsd stelt max 2.
We nemen alleen de eerste 2 stukdelen mee.
-->
<xsl:with-param name="id" select="$recht/Recht:isGebaseerdOp/Stuk-ref:StukdeelRef"/>
<xsl:with-param name="id" select="$recht/Recht:isGebaseerdOp/Stuk-ref:StukdeelRef[1]"/>
</xsl:call-template>
</isgebaseerdop>
<isgebaseerdop2>
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="$recht/Recht:isGebaseerdOp/Stuk-ref:StukdeelRef[2]"/>
</xsl:call-template>
</isgebaseerdop2>
<xsl:if test="$recht/Recht:isGebaseerdOp/Stuk-ref:StukdeelRef[3]">
<xsl:comment>
<xsl:text>LET OP (DATAFOUT): er zijn meer dan 2 stukdeel referenties voor relatie 'isGebaseerdOp' van: </xsl:text>
<xsl:value-of select="$rechtId"/>
</xsl:comment>
<xsl:for-each select="$recht/Recht:isGebaseerdOp/Stuk-ref:StukdeelRef">
<xsl:comment>
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="."/>
</xsl:call-template>
</xsl:comment>
</xsl:for-each>
</xsl:if>
<betreft>
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="$recht/Recht:betreft/Recht-ref:ZakelijkRechtRef"/>
Expand Down Expand Up @@ -815,14 +835,7 @@
<xsl:with-param name="id" select="$recht/Recht:isBestemdTot/Recht-ref:MandeligheidRef"/>
</xsl:call-template>
</isbestemdtot>
<isbeperkttot>
<!-- TODO (recht): (bron Zakelijkrecht) dit kunnen er meer dan 1 (0..∞) zijn;
bijv. test bestand "/brk2/stand-appre-2.anon.xml" / NL.IMKAD.KadastraalObject:53850184110001
-->
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="$recht/Recht:isBeperktTot/Recht-ref:TenaamstellingRef"/>
</xsl:call-template>
</isbeperkttot>
<!-- isbeperkttot via koppeltabel -->
<soort>
<xsl:value-of select="$recht/Recht:soort/Typen:waarde"/>
</soort>
Expand Down Expand Up @@ -910,12 +923,7 @@
<betreftgedeeltevanperceel>
<xsl:value-of select="$recht/Recht:betreftGedeelteVanPerceel"/>
</betreftgedeeltevanperceel>
<aantekeningrecht>
<!-- TODO (recht): (bron Aantekening) dit kunnen er meer dan 1 (0..∞) referenties naar tenaamstellingen zijn -->
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="$recht/Recht:aantekeningRecht/Recht-ref:TenaamstellingRef"/>
</xsl:call-template>
</aantekeningrecht>
<!-- aantekeningrecht via koppeltabel -->
<aantekeningkadastraalobject>
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id"
Expand All @@ -934,6 +942,52 @@
<xsl:value-of select="$toestandsdatum"/>
</begingeldigheid>
</recht>


<!-- 1:n relaties van rechten -->
<xsl:for-each select="$recht/Recht:isBeperktTot/Recht-ref:TenaamstellingRef">
<!-- (bron Zakelijkrecht) dit kunnen er meer dan 1 (0..∞) zijn;
bijv. test bestand "/brk2/stand-appre-2.anon.xml" / NL.IMKAD.KadastraalObject:53850184110001
-->
<isbeperkttot>
<zakelijkrecht>
<xsl:value-of select="$rechtId"/>
</zakelijkrecht>
<tenaamstelling>
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="."/>
</xsl:call-template>
</tenaamstelling>
</isbeperkttot>
</xsl:for-each>

<xsl:for-each select="$recht/Recht:isBelastMet/Recht-ref:ZakelijkRechtRef">
<!-- (bron Zakelijkrecht) dit kunnen er meer dan 1 (0..∞) zijn -->
<isbelastmet>
<zakelijkrecht>
<xsl:value-of select="$rechtId"/>
</zakelijkrecht>
<isbelastmet>
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="."/>
</xsl:call-template>
</isbelastmet>
</isbelastmet>
</xsl:for-each>

<xsl:for-each select="$recht/Recht:aantekeningRecht/Recht-ref:TenaamstellingRef">
<!-- (bron Aantekening) er kunnen er meer dan 1 (0..∞) referenties naar tenaamstellingen zijn -->
<aantekeningrecht>
<aantekening>
<xsl:value-of select="$rechtId"/>
</aantekening>
<tenaamstelling>
<xsl:call-template name="domein_identificatie">
<xsl:with-param name="id" select="."/>
</xsl:call-template>
</tenaamstelling>
</aantekeningrecht>
</xsl:for-each>
</xsl:template>


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,26 +66,28 @@ class Brk2ToStagingToRsgbBrkIntegrationTest extends AbstractDatabaseIntegrationT

static Stream<Arguments> argumentsProvider() {
return Stream.of(
// { "filename", objectRef, aantalRecht, aantalStuk, aantalStukdeel, aantalNP, aantalNNP, aantalAdres (Adres:*), aantalKadObjLocatie, aantalPubliekRBeperking, aantalOnrndZkBeperking, aantalFiliatie},
arguments("/brk2/stand-appre-1.anon.xml", "NL.IMKAD.KadastraalObject:53761288010001", 3, 2, 2, 1, 1, (3), 1, 0, 0, 0),
arguments("/brk2/stand-perceel-1.anon.xml", "NL.IMKAD.KadastraalObject:50247970000", 2, 1, 1, 0, 1, (2), 0, 0, 0, 0),
arguments("/brk2/stand-perceel-2.anon.xml", "NL.IMKAD.KadastraalObject:53730000170000", 2, 1, 1, 0, 1, (2), 0, 0, 0, 0),
arguments("/brk2/stand-perceel-3.anon.xml", "NL.IMKAD.KadastraalObject:89760037170000", 2, 2, 2, 1, 1, (4), 1, 1, 1, 1, 0),
arguments("/brk2/MUTKX02-ABG00F1856-20211012-1.anon.xml", "NL.IMKAD.KadastraalObject:5260185670000", 3, 2, 2, 2, 0, (2), 0, 0, 0, 0),
arguments("/brk2/MUTKX02-ABG00F1856-20211102-1.anon.xml", "NL.IMKAD.KadastraalObject:5260185670000", 3, 2, 2, 1, 1, (2), 0, 0, 0, 0),
// { "filename", objectRef, aantalRecht, aantalStuk, aantalStukdeel, aantalNP, aantalNNP, aantalAdres (Adres:*), aantalKadObjLocatie, aantalPubliekRBeperking, aantalOnrndZkBeperking, aantalFiliatie, aantalAantekeningRecht, aantalIsbelastmetRecht, aantalIsbeperkttotRecht},
arguments("/brk2/stand-appre-1.anon.xml", "NL.IMKAD.KadastraalObject:53761288010001", 3, 2, 2, 1, 1, (3), 1, 0, 0, 0, 0, 0, 0),
arguments("/brk2/stand-perceel-1.anon.xml", "NL.IMKAD.KadastraalObject:50247970000", 2, 1, 1, 0, 1, (2), 0, 0, 0, 0, 0, 0, 0),
arguments("/brk2/stand-perceel-2.anon.xml", "NL.IMKAD.KadastraalObject:53730000170000", 2, 1, 1, 0, 1, (2), 0, 0, 0, 0, 0, 0, 0),
arguments("/brk2/stand-perceel-3.anon.xml", "NL.IMKAD.KadastraalObject:89760037170000", 2, 2, 2, 1, 1, (4), 1, 1, 1, 1, 0, 0, 0, 0),
arguments("/brk2/MUTKX02-ABG00F1856-20211012-1.anon.xml", "NL.IMKAD.KadastraalObject:5260185670000", 3, 2, 2, 2, 0, (2), 0, 0, 0, 0, 1, 0, 0),
arguments("/brk2/MUTKX02-ABG00F1856-20211102-1.anon.xml", "NL.IMKAD.KadastraalObject:5260185670000", 3, 2, 2, 1, 1, (2), 0, 0, 0, 0, 1, 0, 0),
// buitenlands adres
arguments("/brk2/stand-appre-2.anon.xml", "NL.IMKAD.KadastraalObject:53850184110001", 18, 4, 7, 6, 2, (19), 11, 0, 0, 0),
arguments("/brk2/stand-appre-2.anon.xml", "NL.IMKAD.KadastraalObject:53850184110001", 18, 4, 7, 6, 2, (19), 11, 0, 0, 0, 4 + 3, 1, 6),
// met ligplaatsen
arguments("/brk2/stand-perceel-4.anon.xml", "NL.IMKAD.KadastraalObject:53830384970000", 3, 2, 2, 0, 2, (14), 11, 0, 0, 1),
arguments("/brk2/stand-perceel-4.anon.xml", "NL.IMKAD.KadastraalObject:53830384970000", 3, 2, 2, 0, 2, (14), 11, 0, 0, 1, 0, 0, 0),
// samenvoeging van 3 percelen
arguments("/brk2/stand-perceel-5.anon.xml", "NL.IMKAD.KadastraalObject:53750049870000", 2, 1, 1, 2, 0, (1), 0, 0, 0, 3),
arguments("/brk2/stand-perceel-5.anon.xml", "NL.IMKAD.KadastraalObject:53750049870000", 2, 1, 1, 2, 0, (1), 0, 0, 0, 3, 0, 0, 0),
// app.re met ondersplitsing en ontbrekende hoofdsplitsing referentie
arguments("/brk2/stand-appre-3.anon.xml", "NL.IMKAD.KadastraalObject:53830693710057", 4, 3, 3, 1, 1, (1), 0, 0, 0, 0),
arguments("/brk2/stand-appre-3.anon.xml", "NL.IMKAD.KadastraalObject:53830693710057", 4, 3, 3, 1, 1, (1), 0, 0, 0, 0, 0, 0, 0),
// erfpacht
arguments("/brk2/stand-perceel-6.anon.xml", "NL.IMKAD.KadastraalObject:53810161070000", 7, 3, 4, 0, 2, (3), 0, 0, 0, 1),
arguments("/brk2/stand-perceel-6.anon.xml", "NL.IMKAD.KadastraalObject:53810161070000", 7, 3, 4, 0, 2, (3), 0, 0, 0, 1, 1, 1, 0),
// nevenadres
arguments("/brk2/stand-perceel-7.anon.xml", "NL.IMKAD.KadastraalObject:53850231870000", 2, 4, 4, 0, 1, (6), 4, 0, 0, 1)
// { "filename", objectRef, aantalRecht, aantalStuk, aantalStukdeel, aantalNP, aantalNNP, aantalAdres (Adres:*), aantalKadObjLocatie, aantalPubliekRBeperking, aantalOnrndZkBeperking, aantalFiliatie}
arguments("/brk2/stand-perceel-7.anon.xml", "NL.IMKAD.KadastraalObject:53850231870000", 2, 4, 4, 0, 1, (6), 4, 0, 0, 1, 0, 0, 0),
// meerdere stukdelen onder tenaamstelling
arguments("/brk2/stand-perceel-8.anon.xml", "NL.IMKAD.KadastraalObject:53730012470000", 8, 7, 8, 2, 3, (3), 0, 0, 0, 0, 0, 2, 0)
// { "filename", objectRef, aantalRecht, aantalStuk, aantalStukdeel, aantalNP, aantalNNP, aantalAdres (Adres:*), aantalKadObjLocatie, aantalPubliekRBeperking, aantalOnrndZkBeperking, aantalFiliatie, aantalAantekeningRecht, aantalIsbelastmetRecht, aantalIsbeperkttotRecht}
);
}

Expand Down Expand Up @@ -154,7 +156,8 @@ void cleanup() throws Exception {
@MethodSource("argumentsProvider")
void testBericht(String bestandNaam, String objectRef,
int aantalRecht, int aantalStuk, int aantalStukdeel, int aantalNP, int aantalNNP, int aantalAdres,
int aantalKadObjLocatie, int aantalPubliekRBeperking, int aantalOnrndZkBeperking, int aantalFiliatie)
int aantalKadObjLocatie, int aantalPubliekRBeperking, int aantalOnrndZkBeperking, int aantalFiliatie,
int aantalAantekeningRecht, int aantalIsbelastmetRecht, int aantalIsbeperkttotRecht)
throws Exception {

final boolean isPerceel = objectRef.endsWith("0000");
Expand Down Expand Up @@ -226,7 +229,16 @@ void testBericht(String bestandNaam, String objectRef,
}

ITable recht = rsgbBrk.createDataSet().getTable("recht");
assertEquals(aantalRecht, recht.getRowCount(), "Er is geen/teveel/te weinig recht");
ITable aantekeningrecht = rsgbBrk.createDataSet().getTable("aantekeningrecht");
ITable isbelastmet = rsgbBrk.createDataSet().getTable("isbelastmet");
ITable isbeperkttot = rsgbBrk.createDataSet().getTable("isbeperkttot");
assertAll("rechten", () -> {
assertEquals(aantalRecht, recht.getRowCount(), "Er is geen/teveel/te weinig recht");
assertEquals(aantalAantekeningRecht, aantekeningrecht.getRowCount(), "Er zijn geen/teveel/te weinig aantekeningrecht relaties");
assertEquals(aantalIsbelastmetRecht, isbelastmet.getRowCount(), "Er zijn geen/teveel/te weinig isbelastmet relaties");
assertEquals(aantalIsbeperkttotRecht, isbeperkttot.getRowCount(), "Er zijn geen/teveel/te weinig isbeperkttot relaties");
});


ITable stuk = rsgbBrk.createDataSet().getTable("stuk");
assertEquals(aantalStuk, stuk.getRowCount(), "Er is geen/teveel/te weinig stuk");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,9 @@ public static void cleanRSGB_BRK2(final IDatabaseConnection rsgbbrk)
new DefaultTable("archief_perceel"),
new DefaultTable("archief_recht"),
new DefaultTable("objectlocatie"),
new DefaultTable("aantekeningrecht"),
new DefaultTable("isbelastmet"),
new DefaultTable("isbeperkttot"),
}));
}

Expand Down
29 changes: 23 additions & 6 deletions datamodel/brk/brk2.0_oracle.sql
Original file line number Diff line number Diff line change
Expand Up @@ -207,14 +207,13 @@ CREATE TABLE recht
identificatie VARCHAR2(255) NOT NULL PRIMARY KEY,
aard VARCHAR2(255),
toelichtingbewaarder VARCHAR2(4000 BYTE),
isbelastmet VARCHAR2(255) REFERENCES recht (identificatie),
isgebaseerdop VARCHAR2(255) REFERENCES stukdeel (identificatie),
isgebaseerdop2 VARCHAR2(255) REFERENCES stukdeel (identificatie),
betreft VARCHAR2(255) REFERENCES recht (identificatie),
rustop VARCHAR2(255) REFERENCES onroerendezaak (identificatie),
isontstaanuit VARCHAR2(255) REFERENCES recht (identificatie),
isbetrokkenbij VARCHAR2(255) REFERENCES recht (identificatie),
isbestemdtot VARCHAR2(255) REFERENCES recht (identificatie),
isbeperkttot VARCHAR2(255),
soort VARCHAR2(22),
jaarlijksbedrag DECIMAL(9, 0),
jaarlijksbedragbetreftmeerdere_oz NUMBER(1),
Expand All @@ -236,24 +235,43 @@ CREATE TABLE recht
einddatumrecht DATE,
einddatum DATE,
betreftgedeeltevanperceel NUMBER(1),
aantekeningrecht VARCHAR2(255) REFERENCES recht (identificatie),
aantekeningkadastraalobject VARCHAR2(255) REFERENCES onroerendezaak (identificatie),
betrokkenpersoon VARCHAR2(255) REFERENCES persoon (identificatie),
begingeldigheid DATE NOT NULL
);

-- koppeltabellen voor 1:n (n>1) recht:recht relaties
CREATE TABLE aantekeningrecht
(
aantekening VARCHAR2(255) REFERENCES recht (identificatie),
tenaamstelling VARCHAR2(255) REFERENCES recht (identificatie),
PRIMARY KEY (aantekening, tenaamstelling)
);
CREATE TABLE isbelastmet
(
zakelijkrecht VARCHAR2(255) REFERENCES recht (identificatie),
isbelastmet VARCHAR2(255) REFERENCES recht (identificatie),
PRIMARY KEY (zakelijkrecht, isbelastmet)
);
CREATE TABLE isbeperkttot
(
zakelijkrecht VARCHAR2(255) REFERENCES recht (identificatie),
tenaamstelling VARCHAR2(255) NOT NULL,
PRIMARY KEY (zakelijkrecht, tenaamstelling)
);

CREATE TABLE archief_recht
(
identificatie VARCHAR2(255) NOT NULL,
aard VARCHAR2(255),
toelichtingbewaarder VARCHAR2(4000),
isbelastmet VARCHAR2(255) REFERENCES recht (identificatie),
isgebaseerdop VARCHAR2(255) REFERENCES stukdeel (identificatie),
isgebaseerdop2 VARCHAR2(255) REFERENCES stukdeel (identificatie),
recht VARCHAR2(255) REFERENCES recht (identificatie),
rustop VARCHAR2(255) REFERENCES onroerendezaak (identificatie),
isontstaanuit VARCHAR2(255) REFERENCES recht (identificatie),
isbetrokkenbij VARCHAR2(255) REFERENCES recht (identificatie),
isbestemdtot VARCHAR2(255) REFERENCES recht (identificatie),
isbeperkttot VARCHAR2(255),
soort VARCHAR2(22),
jaarlijksbedrag DECIMAL(9, 0),
jaarlijksbedragbetreftmeerdere_oz NUMBER(1),
Expand All @@ -275,7 +293,6 @@ CREATE TABLE archief_recht
einddatumrecht DATE,
einddatum DATE,
betreftgedeeltevanperceel NUMBER(1),
aantekeningrecht VARCHAR2(255) REFERENCES recht (identificatie),
aantekeningkadastraalobject VARCHAR2(255) REFERENCES onroerendezaak (identificatie),
betrokkenpersoon VARCHAR2(255) REFERENCES persoon (identificatie),
begingeldigheid DATE NOT NULL,
Expand Down
Loading

0 comments on commit 0794bfe

Please sign in to comment.