diff --git a/brmo-loader/src/main/java/nl/b3p/brmo/loader/entity/Bericht.java b/brmo-loader/src/main/java/nl/b3p/brmo/loader/entity/Bericht.java index d7edf7d8e5..9b64d12a10 100644 --- a/brmo-loader/src/main/java/nl/b3p/brmo/loader/entity/Bericht.java +++ b/brmo-loader/src/main/java/nl/b3p/brmo/loader/entity/Bericht.java @@ -23,7 +23,7 @@ public class Bericht { private String xslVersion; public static enum STATUS { - STAGING_OK, STAGING_NOK, RSGB_WAITING, RSGB_PROCESSING, RSGB_OK, RSGB_OUTDATED, RSGB_NOK, ARCHIVE + STAGING_OK, STAGING_NOK, STAGING_FORWARDED, RSGB_WAITING, RSGB_PROCESSING, RSGB_OK, RSGB_OUTDATED, RSGB_NOK, ARCHIVE }; public Bericht(String brXml) { diff --git a/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/BerichtDoorsturenProces.java b/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/BerichtDoorsturenProces.java index 8a6c27fa43..745334d234 100644 --- a/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/BerichtDoorsturenProces.java +++ b/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/BerichtDoorsturenProces.java @@ -59,6 +59,7 @@ public void addLog(String log) { } }); } + @Override public void execute(ProgressUpdateListener listener) { this.l = listener; @@ -67,29 +68,29 @@ public void execute(ProgressUpdateListener listener) { l.updateStatus("Laden berichten..."); this.config.setStatus(AutomatischProces.ProcessingStatus.PROCESSING); - String id = ClobElement.nullSafeGet(config.getConfig().get("gds2_ophaalproces_id")); GDS2OphaalProces proces = Stripersist.getEntityManager().find(GDS2OphaalProces.class, Long.parseLong(id)); - List berichten = Stripersist.getEntityManager().createQuery("select b from Bericht b join b.laadprocesid l where b.status in ('STAGING_OK', 'STAGING_NOK') and l.automatischProces = :proces") + List berichtIDs = Stripersist.getEntityManager().createQuery("select b.id from Bericht b join b.laadprocesid l where b.status in ('STAGING_OK', 'STAGING_NOK') and l.automatischProces = :proces") .setParameter("proces", proces) .getResultList(); - if(berichten.isEmpty()) { + if (berichtIDs.isEmpty()) { this.config.setSamenvatting("Geen berichten om door te sturen"); } else { - this.l.total(berichten.size()); + this.l.total(berichtIDs.size()); String url = ClobElement.nullSafeGet(proces.getConfig().get("delivery_endpoint")); - if(url == null) { + if (url == null) { this.config.setSamenvatting("GDS2 ophaal proces heeft geen afleveringsendpoint"); } else { int doorgestuurd = 0, fouten = 0; - for(Object o: berichten) { - Bericht b = (Bericht)o; - if(GDS2OphalenProces.doorsturenBericht(proces, l, (Bericht)b, url)) { + for (Long pkid : berichtIDs) { + Bericht b = Stripersist.getEntityManager().find(Bericht.class, pkid); + if (GDS2OphalenProces.doorsturenBericht(proces, l, b, url)) { doorgestuurd++; + this.l.progress(doorgestuurd); } else { fouten++; } @@ -109,7 +110,7 @@ public void execute(ProgressUpdateListener listener) { this.config.setStatus(AutomatischProces.ProcessingStatus.ERROR); l.exception(e); } finally { - if(Stripersist.getEntityManager().getTransaction().getRollbackOnly()) { + if (Stripersist.getEntityManager().getTransaction().getRollbackOnly()) { // XXX bij rollback only wordt status niet naar ERROR gezet vanwege // rollback, zou in aparte transactie moeten Stripersist.getEntityManager().getTransaction().rollback(); 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 19a6468a55..e50793e46c 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 @@ -12,6 +12,8 @@ import java.io.ByteArrayOutputStream; import java.io.FileWriter; import java.io.InputStream; +import java.io.PrintWriter; +import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; @@ -489,26 +491,33 @@ private Bericht laadAfgifte(AfgifteGBType a, String url) throws Exception { IOUtils.write(b.getBr_orgineel_xml(), new FileWriter(fName)); } - BrkSnapshotXMLReader reader = new BrkSnapshotXMLReader(new ByteArrayInputStream(b.getBr_orgineel_xml().getBytes("UTF-8"))); - BrkBericht bericht = reader.next(); + try { + BrkSnapshotXMLReader reader = new BrkSnapshotXMLReader(new ByteArrayInputStream(b.getBr_orgineel_xml().getBytes("UTF-8"))); + BrkBericht bericht = reader.next(); - //Als objectRef niet opgehaald kan worden,dan kan het - //bericht niet verwerkt worden. - String objectRef = bericht.getObjectRef(); - if (objectRef!=null && !objectRef.isEmpty()) { - b.setObject_ref(bericht.getObjectRef()); - b.setStatus(Bericht.STATUS.STAGING_OK); - b.setOpmerking("Klaar voor verwerking."); - } else { + if(bericht.getDatum() != null) { + b.setDatum(bericht.getDatum()); + } + b.setBr_xml(bericht.getBrXml()); + b.setVolgordenummer(bericht.getVolgordeNummer()); + + //Als objectRef niet opgehaald kan worden,dan kan het + //bericht niet verwerkt worden. + String objectRef = bericht.getObjectRef(); + if (objectRef!=null && !objectRef.isEmpty()) { + b.setObject_ref(bericht.getObjectRef()); + b.setStatus(Bericht.STATUS.STAGING_OK); + b.setOpmerking("Klaar voor verwerking."); + } else { + b.setStatus(Bericht.STATUS.STAGING_NOK); + b.setOpmerking("Object Ref niet gevonden in bericht-xml, neem contact op met leverancier."); + } + } catch(Exception e) { b.setStatus(Bericht.STATUS.STAGING_NOK); - b.setOpmerking("Object Ref niet gevonden in bericht-xml, neem contact op met leverancier."); - } - - if(bericht.getDatum() != null) { - b.setDatum(bericht.getDatum()); + StringWriter sw = new StringWriter(); + e.printStackTrace(new PrintWriter(sw)); + b.setOpmerking("Fout bij parsen BRK bericht: " + sw.toString()); } - b.setBr_xml(bericht.getBrXml()); - b.setVolgordenummer(bericht.getVolgordeNummer()); Stripersist.getEntityManager().persist(lp); Stripersist.getEntityManager().persist(b);