From 88e2940f7a9d5acad6b4a3aa7ac375727a99c35b Mon Sep 17 00:00:00 2001 From: Mark Prins Date: Thu, 28 Jun 2018 18:01:11 +0200 Subject: [PATCH] betere afhandeling van duplicaat BAG laadprocessen die door Kadaster via GDS2 toch geleverd worden close #464 --- .../nl/b3p/brmo/loader/BrmoFramework.java | 28 +++++++++++++++++-- .../service/scanner/GDS2OphalenProces.java | 19 ++++++++++++- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/brmo-loader/src/main/java/nl/b3p/brmo/loader/BrmoFramework.java b/brmo-loader/src/main/java/nl/b3p/brmo/loader/BrmoFramework.java index 633f30f7cf..db10095223 100644 --- a/brmo-loader/src/main/java/nl/b3p/brmo/loader/BrmoFramework.java +++ b/brmo-loader/src/main/java/nl/b3p/brmo/loader/BrmoFramework.java @@ -318,7 +318,9 @@ public void loadFromFile(String type, String fileName) throws BrmoException { } /** - * NB na gebruik zelf de database verbinding sluiten / opruimen met {@link #closeBrmoFramework()} + * laden van BR data uit een bestand.
+ * NB na gebruik zelf de database verbinding sluiten / opruimen met + * {@link #closeBrmoFramework()}. * * @param type basis registratie type * @param fileName bestand @@ -383,15 +385,35 @@ protected void afterRead(int n) { } } - public void loadFromStream(String type, InputStream stream, String fileName) throws BrmoException { + /** + * laden van BR data uit een stream. + * + * @param type type registratie, bijv. {@value BrmoFramework#BR_BRK} + * @param stream datastream + * @param fileName te gebruiken bestandsnaam om laadproces te identificeren + * @throws BrmoException als er een algemene fout optreed + * @throws BrmoDuplicaatLaadprocesException als het "bestand" + * {@code fileName} al geladen is + * @throws BrmoLeegBestandException als het "bestand" {@code fileName} leeg + * is + */ + public void loadFromStream(String type, InputStream stream, String fileName) + throws BrmoException, BrmoDuplicaatLaadprocesException, BrmoLeegBestandException { try { stagingProxy.loadBr(stream, type, fileName, null); - } catch(Exception e) { + } catch (Exception e) { + if (e instanceof BrmoDuplicaatLaadprocesException) { + throw (BrmoDuplicaatLaadprocesException) e; + } + if (e instanceof BrmoLeegBestandException) { + throw (BrmoLeegBestandException) e; + } throw new BrmoException("Fout bij loaden basisregistratie gegevens", e); } } /** + * laden van BR data uit een stream. * * @param type type registratie, bijv. {@value BrmoFramework#BR_BRK} * @param stream datastream diff --git a/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/GDS2OphalenProces.java b/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/GDS2OphalenProces.java index 60225ebd2f..a2cf0fe9f5 100644 --- a/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/GDS2OphalenProces.java +++ b/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/GDS2OphalenProces.java @@ -53,6 +53,8 @@ import javax.xml.ws.handler.Handler; import nl.b3p.brmo.loader.BrmoFramework; import nl.b3p.brmo.loader.entity.BrkBericht; +import nl.b3p.brmo.loader.util.BrmoDuplicaatLaadprocesException; +import nl.b3p.brmo.loader.util.BrmoLeegBestandException; import nl.b3p.brmo.loader.xml.BrkSnapshotXMLReader; import nl.b3p.brmo.persistence.staging.AutomatischProces; import static nl.b3p.brmo.persistence.staging.AutomatischProces.LOG_NEWLINE; @@ -506,7 +508,22 @@ private void laadBagAfgifte(AfgifteGBType a, String url) throws Exception { l.updateStatus(msg); l.addLog(msg); log.debug(msg); - brmo.loadFromStream("bag", new CloseShieldInputStream(innerzip), getLaadprocesBestandsnaam(a) + "/" + entry.getName() + "/" + innerentry.getName()); + try { + brmo.loadFromStream(BrmoFramework.BR_BAG, + new CloseShieldInputStream(innerzip), + getLaadprocesBestandsnaam(a) + "/" + entry.getName() + "/" + innerentry.getName() + ); + } catch (BrmoDuplicaatLaadprocesException d) { + msg = "Duplicaat laadproces. " + d.getLocalizedMessage(); + l.updateStatus(msg); + l.addLog(msg); + log.warn(msg); + } catch (BrmoLeegBestandException e) { + msg = "Leeg bestand voor laadproces. " + e.getLocalizedMessage(); + l.updateStatus(msg); + l.addLog(msg); + log.info(msg); + } innerentry = innerzip.getNextEntry(); } } else {