BerichtstatusRapport.java

  1. /*
  2.  * Copyright (C) 2017 B3Partners B.V.
  3.  */
  4. package nl.b3p.brmo.service.scanner;

  5. import static nl.b3p.brmo.persistence.staging.AutomatischProces.ProcessingStatus.PROCESSING;
  6. import static nl.b3p.brmo.persistence.staging.AutomatischProces.ProcessingStatus.WAITING;

  7. import java.util.Calendar;
  8. import java.util.Date;
  9. import javax.persistence.EntityManager;
  10. import javax.persistence.Transient;
  11. import nl.b3p.brmo.loader.BrmoFramework;
  12. import nl.b3p.brmo.loader.entity.Bericht;
  13. import nl.b3p.brmo.loader.util.BrmoException;
  14. import nl.b3p.brmo.persistence.staging.AutomatischProces;
  15. import nl.b3p.brmo.persistence.staging.BerichtstatusRapportProces;
  16. import nl.b3p.brmo.service.util.ConfigUtil;
  17. import org.apache.commons.logging.Log;
  18. import org.apache.commons.logging.LogFactory;
  19. import org.stripesstuff.stripersist.Stripersist;

  20. /**
  21.  * @author mprins
  22.  */
  23. public class BerichtstatusRapport extends AbstractExecutableProces {

  24.   private static final Log LOG = LogFactory.getLog(MailRapportage.class);
  25.   private BerichtstatusRapportProces config;
  26.   @Transient private ProgressUpdateListener listener;

  27.   public BerichtstatusRapport(BerichtstatusRapportProces config) {
  28.     this.config = config;
  29.   }

  30.   @Override
  31.   public void execute() throws BrmoException {
  32.     this.execute(
  33.         new ProgressUpdateListener() {
  34.           @Override
  35.           public void total(long total) {}

  36.           @Override
  37.           public void progress(long progress) {}

  38.           @Override
  39.           public void exception(Throwable t) {
  40.             LOG.error(t);
  41.           }

  42.           @Override
  43.           public void updateStatus(String status) {}

  44.           @Override
  45.           public void addLog(String log) {}
  46.         });
  47.   }

  48.   @Override
  49.   public void execute(ProgressUpdateListener listener) {
  50.     EntityManager em = Stripersist.getEntityManager();

  51.     this.listener = listener;
  52.     config.setStatus(PROCESSING);
  53.     config.setLastrun(new Date());
  54.     em.merge(config);
  55.     em.flush();

  56.     StringBuilder sb = new StringBuilder(AutomatischProces.LOG_NEWLINE);
  57.     String oldLog = config.getLogfile();
  58.     if (oldLog != null) {
  59.       if (oldLog.length() > OLD_LOG_LENGTH) {
  60.         sb.append(oldLog.substring(oldLog.length() - OLD_LOG_LENGTH / 10));
  61.       } else {
  62.         sb.append(oldLog).append(AutomatischProces.LOG_NEWLINE);
  63.       }
  64.     }

  65.     config.setStatus(PROCESSING);
  66.     String msg =
  67.         String.format(
  68.             "De Berichtstatus Rapportage met ID %d is gestart op %tc.",
  69.             config.getId(), Calendar.getInstance());
  70.     LOG.info(msg);
  71.     listener.updateStatus(msg);
  72.     listener.addLog(msg);
  73.     sb.append(msg).append(AutomatischProces.LOG_NEWLINE);
  74.     this.active = true;

  75.     LOG.info("Ophalen bericht status informatie.");
  76.     BrmoFramework brmo = null;
  77.     long aantal = -1L;
  78.     StringBuilder samenvatting = new StringBuilder("Berichtstatus overzicht");
  79.     samenvatting.append(AutomatischProces.LOG_NEWLINE);
  80.     try {
  81.       brmo = new BrmoFramework(ConfigUtil.getDataSourceStaging(), null, null);
  82.       for (Bericht.STATUS status : Bericht.STATUS.values()) {
  83.         aantal = brmo.getCountBerichten(null, status.name());
  84.         msg = String.format("Aantal berichten met status %s: %s.", status.name(), aantal);
  85.         sb.append(msg).append(AutomatischProces.LOG_NEWLINE);
  86.         samenvatting.append(msg).append(AutomatischProces.LOG_NEWLINE);
  87.         LOG.info(msg);
  88.         listener.updateStatus(msg);
  89.         listener.addLog(msg);
  90.       }
  91.     } catch (BrmoException ex) {
  92.       LOG.error(ex.getLocalizedMessage());
  93.       listener.exception(ex);
  94.       sb.append(ex.getLocalizedMessage()).append(AutomatischProces.LOG_NEWLINE);
  95.     } finally {
  96.       if (brmo != null) {
  97.         brmo.closeBrmoFramework();
  98.       }
  99.     }
  100.     msg =
  101.         String.format(
  102.             "De Berichtstatus Rapportage met ID %d is afgerond op %tc.",
  103.             config.getId(), Calendar.getInstance());
  104.     LOG.info(msg);
  105.     listener.updateStatus(msg);
  106.     listener.addLog(msg);
  107.     sb.append(msg).append(AutomatischProces.LOG_NEWLINE);
  108.     config.setSamenvatting(samenvatting.toString());
  109.     config.setStatus(WAITING);
  110.     config.setLastrun(new Date());
  111.     config.setLogfile(sb.toString());
  112.   }
  113. }