AfgifteNummerScanUitvoerenActionBean.java
- /*
- * Copyright (C) 2019 B3Partners B.V.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- package nl.b3p.brmo.service.stripes;
- import java.io.PrintWriter;
- import java.io.StringWriter;
- import java.util.Date;
- import net.sourceforge.stripes.action.ActionBean;
- import net.sourceforge.stripes.action.ActionBeanContext;
- import net.sourceforge.stripes.action.After;
- import net.sourceforge.stripes.action.Before;
- import net.sourceforge.stripes.action.DefaultHandler;
- import net.sourceforge.stripes.action.ForwardResolution;
- import net.sourceforge.stripes.action.Resolution;
- import net.sourceforge.stripes.action.SimpleMessage;
- import net.sourceforge.stripes.validation.SimpleError;
- import net.sourceforge.stripes.validation.Validate;
- import nl.b3p.brmo.persistence.staging.AfgifteNummerScannerProces;
- import nl.b3p.brmo.persistence.staging.AutomatischProces;
- import nl.b3p.brmo.service.scanner.AbstractExecutableProces;
- import nl.b3p.brmo.service.scanner.AfgifteNummerScanner;
- import nl.b3p.brmo.service.scanner.ProgressUpdateListener;
- import org.stripesstuff.plugin.waitpage.WaitPage;
- import org.stripesstuff.stripersist.EntityTypeConverter;
- import org.stripesstuff.stripersist.Stripersist;
- /**
- * actionbean voor uitvoeren van afgiftenummer scan.
- *
- * @since 2.0.0
- * @author mprins
- */
- public class AfgifteNummerScanUitvoerenActionBean implements ActionBean, ProgressUpdateListener {
- private static final String JSP = "/WEB-INF/jsp/beheer/afgiftenummerscanneruitvoeren.jsp";
- @Validate(converter = EntityTypeConverter.class)
- private AfgifteNummerScannerProces proces;
- private ActionBeanContext context;
- private String exceptionStacktrace;
- private String status;
- private long total;
- private boolean complete;
- private Date start;
- private Date update;
- private StringBuilder log = new StringBuilder();
- @DefaultHandler
- @WaitPage(path = JSP, delay = 1000, refresh = 1000)
- public Resolution execute() {
- String samenvatting = null;
- if (proces == null) {
- getContext().getMessages().add(new SimpleMessage("Proces ongeldig!"));
- completed();
- return new ForwardResolution(JSP);
- }
- proces = Stripersist.getEntityManager().find(AfgifteNummerScannerProces.class, proces.getId());
- AfgifteNummerScanner _proces =
- (AfgifteNummerScanner) AbstractExecutableProces.getProces(proces);
- try {
- _proces.execute(this);
- this.proces.setOntbrekendeNummersGevonden(_proces.getOntbrekendeNummersGevonden());
- getContext().getMessages().add(new SimpleMessage("Afgiftenummer scan is afgerond."));
- samenvatting =
- "Er zijn "
- + (_proces.getOntbrekendeNummersGevonden() ? "" : "geen")
- + " ontbrekende afgiftenummers geconstateerd.";
- getContext().getMessages().add(new SimpleMessage(samenvatting));
- } catch (Exception ex) {
- this.proces.setStatus(AutomatischProces.ProcessingStatus.ERROR);
- Stripersist.getEntityManager().merge(this.proces);
- exception(ex);
- samenvatting =
- "Er is een fout opgetreden tijdens het bepalen van ontbrekende afgiftenummers.";
- getContext()
- .getMessages()
- .add(
- new SimpleError(
- "Er is een fout opgetreden tijdens het bepalen van ontbrekende afgiftenummers. {2}",
- ex.getMessage()));
- } finally {
- this.completed();
- this.proces.updateSamenvattingEnLogfile(this.log.toString());
- // de hele log is te groot voor de samenvatting, maar #updateSamenvattingEnLogfile is
- // wel handig om te gebruiken
- this.proces.setSamenvatting(samenvatting);
- if (Stripersist.getEntityManager().getTransaction().isActive()) {
- Stripersist.getEntityManager().getTransaction().commit();
- }
- }
- return new ForwardResolution(JSP);
- }
- @Override
- public void total(long total) {
- this.total = total;
- }
- @Override
- public void progress(long progress) {
- // this.processed = progress;
- this.total = progress;
- this.update = new Date();
- }
- @Override
- public void exception(Throwable t) {
- StringWriter sw = new StringWriter();
- t.printStackTrace(new PrintWriter(sw));
- this.exceptionStacktrace = sw.toString();
- }
- @Override
- public void updateStatus(String status) {
- this.status = status;
- }
- @Override
- public void addLog(String line) {
- this.log.append(line).append("\n");
- }
- @Before
- public void before() {
- start = new Date();
- }
- @After
- public void completed() {
- complete = true;
- proces.setLastrun(this.update);
- }
- // <editor-fold defaultstate="collapsed" desc="getters en setters">
- @Override
- public void setContext(ActionBeanContext context) {
- this.context = context;
- }
- @Override
- public ActionBeanContext getContext() {
- return this.context;
- }
- public AfgifteNummerScannerProces getProces() {
- return proces;
- }
- public void setProces(AfgifteNummerScannerProces proces) {
- this.proces = proces;
- }
- public String getLog() {
- return log.toString();
- }
- public void setLog(String log) {
- this.log = new StringBuilder(log);
- }
- public String getStatus() {
- return status;
- }
- public void setStatus(String status) {
- this.status = status;
- }
- public String getExceptionStacktrace() {
- return exceptionStacktrace;
- }
- public void setExceptionStacktrace(String exceptionStacktrace) {
- this.exceptionStacktrace = exceptionStacktrace;
- }
- public boolean isComplete() {
- return complete;
- }
- public void setComplete(boolean complete) {
- this.complete = complete;
- }
- public Date getStart() {
- return start;
- }
- public void setStart(Date start) {
- this.start = start;
- }
- public Date getUpdate() {
- return update;
- }
- public void setUpdate(Date update) {
- this.update = update;
- }
- public long getTotal() {
- return this.total;
- }
- public void setTotal(long total) {
- this.total = total;
- }
- // </editor-fold>
- }