@Override public void register(final Report report, final Date startAt, final long interruptMaxRetries) throws SchedulerException { ReportJob job = createSpringBean(ReportJob.class); job.setReportKey(report.getKey()); Map<String, Object> jobMap = new HashMap<>(); jobMap.put(JobManager.DOMAIN_KEY, AuthContextUtils.getDomain()); registerJob(JobNamer.getJobKey(report).getName(), job, report.getCronExpression(), startAt, jobMap); }
@Override public void delete(final ReportExec execution) { if (execution.getReport() != null) { execution.getReport().getExecs().remove(execution); } entityManager().remove(execution); } }
@Override public void getReport(final Report report, final ReportTO reportTO) { report.setName(reportTO.getName()); report.setCronExpression(reportTO.getCronExpression()); report.setActive(reportTO.isActive()); ReportTemplate template = reportTemplateDAO.find(reportTO.getTemplate()); if (template == null) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.RequiredValuesMissing); sce.getElements().add("template"); throw sce; } report.setTemplate(template); reportTO.getReportlets().forEach(reportletKey -> { Implementation reportlet = implementationDAO.find(reportletKey); if (reportlet == null) { LOG.debug("Invalid " + Implementation.class.getSimpleName() + " {}, ignoring...", reportletKey); } else { report.add(reportlet); } }); // remove all implementations not contained in the TO report.getReportlets().removeIf(reportlet -> !reportTO.getReportlets().contains(reportlet.getKey())); }
@Override public ReportTO getReportTO(final Report report) { ReportTO reportTO = new ReportTO(); reportTO.setKey(report.getKey()); reportTO.setTemplate(report.getTemplate().getKey()); reportTO.setName(report.getName()); reportTO.setCronExpression(report.getCronExpression()); reportTO.setActive(report.isActive()); report.getReportlets().stream().map(Entity::getKey).collect(Collectors.toList())); reportTO.getExecutions().addAll(report.getExecs().stream(). map(reportExec -> getExecTO(reportExec)).collect(Collectors.toList()));
if (!report.isActive()) { LOG.info("Report {} not active, aborting...", reportKey); return; execution = reportExecDAO.save(execution); report.add(execution); report = reportDAO.save(report); zos.putNextEntry(new ZipEntry(report.getName())); atts.addAttribute("", "", ReportXMLConst.ATTR_NAME, ReportXMLConst.XSD_STRING, report.getName()); handler.startElement("", "", ReportXMLConst.ELEMENT_REPORT, atts); for (int i = 0; i < report.getReportlets().size() && !interrupt; i++) { Optional<Reportlet> reportlet = ImplementationManager.buildReportlet(report.getReportlets().get(i)); if (reportlet.isPresent()) { try { status.set("Invoking reportlet " + report.getReportlets().get(i).getKey()); reportlet.get().extract(handler, status); } catch (Throwable t) {
if (isHtml(report.getName())) { context.buildConstraintViolationWithTemplate( getTemplate(EntityViolationType.InvalidName, "Invalid name")). if (report.getCronExpression() != null) { try { new CronExpression(report.getCronExpression()); } catch (ParseException e) { LOG.error("Invalid cron expression '" + report.getCronExpression() + "'", e); isValid = false; Set<String> reportletKeys = report.getReportlets().stream(). map(Entity::getKey).collect(Collectors.toSet()); if (reportletKeys.size() != report.getReportlets().size()) { LOG.error("Reportlet key must be unique"); isValid = false;
public static JobKey getJobKey(final Report report) { return new JobKey("reportJob" + report.getKey(), Scheduler.DEFAULT_GROUP); }
@Override public Response exportExecutionResult(final String executionKey, final ReportExecExportFormat fmt) { ReportExecExportFormat format = (fmt == null) ? ReportExecExportFormat.XML : fmt; ReportExec reportExec = logic.getReportExec(executionKey); StreamingOutput sout = (os) -> logic.exportExecutionResult(os, reportExec, format); return Response.ok(sout). header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + reportExec.getReport().getName() + "." + format.name().toLowerCase()). build(); }
case HTML: XSLTTransformer xsl2html = new XSLTTransformer(new StreamSource( IOUtils.toInputStream(reportExec.getReport().getTemplate().getHTMLTemplate(), StandardCharsets.UTF_8))); xsl2html.setParameters(parameters); IOUtils.toInputStream(reportExec.getReport().getTemplate().getFOTemplate(), StandardCharsets.UTF_8))); xsl2pdf.setParameters(parameters); IOUtils.toInputStream(reportExec.getReport().getTemplate().getFOTemplate(), StandardCharsets.UTF_8))); xsl2rtf.setParameters(parameters); IOUtils.toInputStream(reportExec.getReport().getTemplate().getCSVTemplate(), StandardCharsets.UTF_8))); xsl2csv.setParameters(parameters);
public static JobKey getJobKey(final Report report) { return new JobKey("reportJob" + report.getKey(), Scheduler.DEFAULT_GROUP); }
register(report, null, conf.getRight()); } catch (Exception e) { LOG.error("While loading job instance for report " + report.getName(), e); loadException = true;
@PreAuthorize("hasRole('" + StandardEntitlement.REPORT_CREATE + "')") public ReportTO create(final ReportTO reportTO) { Report report = entityFactory.newEntity(Report.class); binder.getReport(report, reportTO); report = reportDAO.save(report); try { jobManager.register( report, null, confDAO.find("tasks.interruptMaxRetries", 1L)); } catch (Exception e) { LOG.error("While registering quartz job for report " + report.getKey(), e); SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.Scheduling); sce.getElements().add(e.getMessage()); throw sce; } return binder.getReportTO(report); }
@PreAuthorize("hasRole('" + StandardEntitlement.REPORT_UPDATE + "')") public ReportTO update(final ReportTO reportTO) { Report report = reportDAO.find(reportTO.getKey()); if (report == null) { throw new NotFoundException("Report " + reportTO.getKey()); } binder.getReport(report, reportTO); report = reportDAO.save(report); try { jobManager.register( report, null, confDAO.find("tasks.interruptMaxRetries", 1L)); } catch (Exception e) { LOG.error("While registering quartz job for report " + report.getKey(), e); SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.Scheduling); sce.getElements().add(e.getMessage()); throw sce; } return binder.getReportTO(report); }
@Override public ExecTO getExecTO(final ReportExec execution) { ExecTO execTO = new ExecTO(); execTO.setKey(execution.getKey()); execTO.setJobType(JobType.REPORT); execTO.setRefKey(execution.getReport().getKey()); execTO.setRefDesc(buildRefDesc(execution.getReport())); execTO.setStatus(execution.getStatus()); execTO.setMessage(execution.getMessage()); execTO.setStart(execution.getStart()); execTO.setEnd(execution.getEnd()); return execTO; } }