Skip to content

Commit

Permalink
[WIP] migratie naar HR dataservice v3 (van 2.5 die vervalt)
Browse files Browse the repository at this point in the history
  • Loading branch information
mprins committed Aug 9, 2018
1 parent 611cf0a commit cb6da63
Show file tree
Hide file tree
Showing 13 changed files with 3,639 additions and 103 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public class BrmoFramework {

public static final String XSL_BRK = "/xsl/brk-snapshot-to-rsgb-xml.xsl";
public static final String XSL_BAG = "/xsl/bag-mutatie-to-rsgb-xml.xsl";
public static final String XSL_NHR = "/xsl/nhr-to-rsgb-xml-2.5.xsl";
public static final String XSL_NHR = "/xsl/nhr-to-rsgb-xml-3.0.xsl";
public static final String XSL_BRP = "/xsl/brp-to-rsgb-xml.xsl";
public static final String XSL_GBAV = "/xsl/gbav-to-rsgb-xml.xsl";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public NhrXMLReader(InputStream in) throws Exception {
private synchronized void initTemplates() throws Exception {
if(splitTemplates == null) {
log.info("Initializing NHR split XSL templates...");
Source xsl = new StreamSource(this.getClass().getResourceAsStream("/xsl/nhr-split-2.5.xsl"));
Source xsl = new StreamSource(this.getClass().getResourceAsStream("/xsl/nhr-split-3.0.xsl"));
TransformerFactory tf = TransformerFactory.newInstance();
tf.setURIResolver(new URIResolver() {
@Override
Expand Down
59 changes: 59 additions & 0 deletions brmo-loader/src/main/resources/xsl/nhr-object-ref-3.0.xsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:cat="http://schemas.kvk.nl/schemas/hrip/catalogus/2015/02">

<xsl:template name="get-name-abbr">
<xsl:variable name="n" select="local-name(.)"/>
<xsl:choose>
<xsl:when test="$n ='naamPersoon'">naamPers</xsl:when>
<xsl:when test="$n ='natuurlijkPersoon'">natPers</xsl:when>
<xsl:when test="$n ='buitenlandseVennootschap'">buitenlVenn</xsl:when>
<xsl:when test="$n ='eenmanszaakMetMeerdereEigenaren'">eenmZMeerEig</xsl:when>
<xsl:when test="$n ='rechtspersoon'">rechtspersoon</xsl:when>
<xsl:when test="$n ='rechtspersoonInOprichting'">rechtspersOpr</xsl:when>
<xsl:when test="$n ='samenwerkingsverband'">samenwvb</xsl:when>
<xsl:when test="$n ='maatschappelijkeActiviteit'">maatschAct</xsl:when>
<xsl:when test="$n ='onderneming'">onderneming</xsl:when>
<xsl:when test="$n ='commercieleVestiging'">comVestg</xsl:when>
<xsl:when test="$n ='nietCommercieleVestiging'">nietComVestg</xsl:when>
<!--<xsl:when test="$n ='binnenlandsAdres'">bnnldsAdres</xsl:when>-->
<!--<xsl:when test="$n ='deponeringen'">deponering</xsl:when>-->
<xsl:otherwise><xsl:value-of select="$n"/></xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template match="*[cat:kvkNummer]" mode="object_ref">
<xsl:text>nhr.</xsl:text><xsl:call-template name="get-name-abbr"/><xsl:text>.kvk.</xsl:text>
<xsl:value-of select="cat:kvkNummer"/>
</xsl:template>

<xsl:template match="*[cat:vestigingsnummer]" mode="object_ref">
<xsl:text>nhr.</xsl:text><xsl:call-template name="get-name-abbr"/><xsl:text>.</xsl:text>
<xsl:value-of select="cat:vestigingsnummer"/></xsl:template>

<xsl:template match="*[cat:bsn or cat:rsin]" mode="object_ref">
<xsl:text>nhr.</xsl:text><xsl:call-template name="get-name-abbr"/><xsl:text>.</xsl:text>
<xsl:if test="cat:bsn">
<xsl:text>bsn.</xsl:text><xsl:value-of select="cat:bsn"/>
</xsl:if>
<xsl:if test="cat:rsin">
<xsl:text>rsin.</xsl:text><xsl:value-of select="cat:rsin"/>
</xsl:if>
</xsl:template>

<!--<xsl:template match="*[cat:rechtspersoon/cat:bsn or cat:rechtspersoon/cat:rsin]" mode="object_ref">-->
<!--<xsl:text>nhr.</xsl:text><xsl:call-template name="get-name-abbr"/><xsl:text>.</xsl:text>-->
<!--<xsl:if test="cat:rechtspersoon/cat:bsn">-->
<!--<xsl:text>bsn.</xsl:text><xsl:value-of select="cat:rechtspersoon/cat:bsn"/>-->
<!--</xsl:if>-->
<!--<xsl:if test="cat:rechtspersoon/cat:rsin">-->
<!--<xsl:text>rsin.</xsl:text><xsl:value-of select="cat:rechtspersoon/cat:rsin"/>-->
<!--</xsl:if>-->
<!--</xsl:template>-->



<!-- lege template voor gevallen zonder kvkNummer, vestigingsnummer, bsn of rsin bij heeftAlsEigenaar -->
<xsl:template match="*" mode="object_ref" />
</xsl:stylesheet>
113 changes: 113 additions & 0 deletions brmo-loader/src/main/resources/xsl/nhr-split-3.0.xsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:cat="http://schemas.kvk.nl/schemas/hrip/catalogus/2015/02"
xmlns:tns="http://schemas.kvk.nl/schemas/hrip/dataservice/2015/02"
xmlns:brmo="http://www.b3partners.nl/brmo/bericht"
xmlns:fn="http://www.w3.org/2005/xpath-functions">

<xsl:import href="nhr-object-ref-3.0.xsl"/>

<!-- Dit stylesheet splitst een NHR Dataservice respons in meerdere berichten over
authentieke gegevens van de basisregistratie.
-->
<xsl:template match="/">
<brmo:berichten>
<!-- Bij het parsen wordt bij berichten de volgorde van de bericht elementen aangehouden in
de volgordenummer kolom -->
<xsl:apply-templates select="//tns:product"/>
</brmo:berichten>
</xsl:template>

<xsl:template match="cat:maatschappelijkeActiviteit">
<xsl:variable name="datum">
<brmo:datum><xsl:value-of select="../../@peilmoment"/></brmo:datum>
</xsl:variable>

<xsl:for-each select="cat:heeftAlsEigenaar/*[cat:bsn or cat:rsin]">
<!-- TODO: afsplitsen door/voor Persoon -->
<brmo:bericht>
<brmo:object_ref><xsl:apply-templates select="." mode="object_ref"/></brmo:object_ref>
<xsl:copy-of select="$datum"/>
<brmo:br_xml>
<xsl:copy>
<xsl:attribute name="peilmoment"><xsl:value-of select="$datum"/></xsl:attribute>
<xsl:copy-of select="node()"/>
<cat:isEigenaarVan>
<xsl:for-each select="../..">
<xsl:copy>
<xsl:copy-of select="cat:kvkNummer"/>
</xsl:copy>
</xsl:for-each>
</cat:isEigenaarVan>
</xsl:copy>
</brmo:br_xml>
</brmo:bericht>
</xsl:for-each>

<brmo:bericht>
<brmo:object_ref><xsl:apply-templates select="." mode="object_ref"/></brmo:object_ref>
<xsl:copy-of select="$datum"/>
<brmo:br_xml>
<xsl:copy>
<xsl:attribute name="peilmoment"><xsl:value-of select="$datum"/></xsl:attribute>
<xsl:copy-of select="node()"/>
</xsl:copy>
</brmo:br_xml>
</brmo:bericht>

<!-- Completere vestiging in wordtGeleidVanuit dan wordtUitgeoefendIn -->
<xsl:variable name="leidendeVestiging" select="cat:wordtGeleidVanuit/cat:vestigingsnummer"/>
<xsl:for-each select="cat:wordtGeleidVanuit/*">
<brmo:bericht>
<brmo:object_ref><xsl:apply-templates select="." mode="object_ref"/></brmo:object_ref>
<xsl:copy-of select="$datum"/>
<brmo:br_xml>
<!-- Voeg element wordtUitgeoefendDoor toe. Deze is niet aanwezig bij opvragen van
maatschappelijkeActiviteit, maar in RSGB een foreign key dus deze informatie bij
splitsen wel overbrengen via toevoegen van dit element -->
<xsl:copy>
<xsl:attribute name="peilmoment"><xsl:value-of select="$datum"/></xsl:attribute>
<xsl:copy-of select="node()"/>

<cat:wordtUitgeoefendDoor>
<!-- Voor een commercieleVestiging komt hier een onderneming, met alleen het kvkNummer -->
<xsl:if test="local-name(.) = 'commercieleVestiging'">
<xsl:variable name="vestigingsnr" select="cat:vestigingsnummer"/>
<xsl:for-each select="//cat:onderneming[cat:wordtUitgeoefendIn/cat:commercieleVestiging/cat:vestigingsnummer = $vestigingsnr]">
<xsl:copy>
<xsl:copy-of select="cat:kvkNummer"/>
</xsl:copy>
</xsl:for-each>
</xsl:if>

<!-- Voor een nietCommercieleVestiging komt hier een maatschappelijkeActiviteit -->
<xsl:if test="local-name(.) = 'nietCommercieleVestiging'">
<hier_komt_de_ma/>
</xsl:if>
</cat:wordtUitgeoefendDoor>
</xsl:copy>
</brmo:br_xml>
</brmo:bericht>
</xsl:for-each>

<!-- Incompletere commerciele vestigingen waaruit de maatschappelijkeActiviteit niet wordt geleid, maar toch worden
meegeleverd (testcases nodig!) -->
<xsl:for-each select="//cat:commercieleVestiging[cat:vestigingsnummer != $leidendeVestiging]">
<!-- child van onderneming, manifesteertZichAls en maatschappelijkeActiviteit -->
<brmo:message fatal="true">
Onbekende case: commercieleVestiging van maatschappelijkeActiviteit waaruit deze niet wordt geleid, aub testcase aanmelden bij ontwikkelaars!
</brmo:message>
</xsl:for-each>

<!-- Incompletere niet commerciele vestigingen waaruit de maatschappelijkeActiviteit niet wordt geleid, maar toch worden
meegeleverd (testcases nodig) -->
<xsl:for-each select="//cat:nietCommercieleVestiging[cat:vestigingsnummer != $leidendeVestiging]">
<!-- child van wordtUitgeoefendIn en maatschappelijkeActiviteit -->
<brmo:message fatal="true">
Onbekende case: nietCommercieleVestiging van maatschappelijkeActiviteit waaruit deze niet wordt geleid, aub testcase aanmelden bij ontwikkelaars!
</brmo:message>
</xsl:for-each>

</xsl:template>
</xsl:stylesheet>
Loading

0 comments on commit cb6da63

Please sign in to comment.