ReportingWidget reportingWidget = (ReportingWidget) widget; for (Report report : reportingWidget.reports) { if (report.isValid() && report.isPeriodic() && report.isActive) { try { long now = System.currentTimeMillis(); initialDelaySeconds = 0; } else { initialDelaySeconds = report.calculateDelayInSeconds(); log.trace("Adding periodic report for user {} with delay {} to scheduler.", user.email, initialDelaySeconds);
@Override public int getPrice() { return Report.getPrice() * reports.length; }
private void sendEmail(Path output) throws Exception { String durationLabel = report.reportType.getDurationLabel().toLowerCase(); String subj = "Your " + durationLabel + " " + report.getReportName() + " is ready"; String gzipDownloadUrl = downloadUrl + output.getFileName(); String dynamicSection = report.buildDynamicSection(); mailWrapper.sendReportEmail(report.recipients, subj, gzipDownloadUrl, dynamicSection); }
if (report.isPeriodic()) { boolean isRemoved = reportScheduler.cancelStoredFuture(user, dashId, report.id); log.debug("Deleting reportId {} in scheduler for {}. Is removed: {}?.", if (!report.isValid()) { log.debug("Report is not valid {} for {}.", report, user.email); throw new IllegalCommandException("Report is not valid."); if (report.isPeriodic()) { long initialDelaySeconds; try { initialDelaySeconds = report.calculateDelayInSeconds(); } catch (IllegalCommandBodyException e) { dash.updatedAt = System.currentTimeMillis(); ctx.writeAndFlush(makeUTF8StringMessage(UPDATE_REPORT, message.id, report.toString()), ctx.voidPromise());
user.addEnergy(Report.getPrice()); reportingWidget.reports = ArrayUtil.remove(reportingWidget.reports, existingReportIndex, Report.class); dash.updatedAt = System.currentTimeMillis(); if (reportToDel.isPeriodic()) { ReportScheduler reportScheduler = holder.reportScheduler; boolean isRemoved = reportScheduler.cancelStoredFuture(user, dashId, reportId);
private void reschedule(long reportFinishedAt) { long initialDelaySeconds = report.calculateDelayInSeconds(); report.nextReportAt = reportFinishedAt + initialDelaySeconds * 1000; //rescheduling report log.info("Rescheduling report for {} with delay {}.", key.user.email, initialDelaySeconds); reportScheduler.schedule(this, initialDelaySeconds, TimeUnit.SECONDS); } }
try (ZipOutputStream zipStream = new ZipOutputStream(Files.newOutputStream(output)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(zipStream, REPORT_ENCODING), size)) { String fileName = truncateFileName(report.getReportName()) + ".csv"; ZipEntry zipEntry = new ZipEntry(fileName); zipStream.putNextEntry(zipEntry); String pin = reportDataStream.formatAndEscapePin(); atLeastOne = FileUtils.writeBufToCsvFilterAndFormat(writer, onePinData, pin, deviceName, startFrom, report.makeFormatter());
if (!report.isValid()) { log.debug("Report is not valid {} for {}.", report, user.email); throw new IllegalCommandException("Report is not valid.");
String pin = reportDataStream.formatAndEscapePin(); atLeastOne = FileUtils.writeBufToCsvFilterAndFormat(writer, onePinData, pin, startFrom, report.makeFormatter());
String buildDynamicSection() { StringBuilder sb = new StringBuilder(); sb.append("Report name: ").append(getReportName()).append("<br>"); reportType.buildDynamicSection(sb, tzName); return sb.toString(); }
@Override public void run() { try { report.lastReportAt = generateReport(); if (ctx.channel().isWritable()) { ctx.writeAndFlush( makeUTF8StringMessage(EXPORT_REPORT, message.id, report.toString()), ctx.voidPromise() ); } } catch (Exception e) { log.debug("Error generating export report {} for {}.", report, key.user.email, e); ctx.writeAndFlush(illegalCommand(message.id), ctx.voidPromise()); } } }, 0, TimeUnit.SECONDS);
reportingWidget.validateId(report.id); int price = Report.getPrice(); if (user.notEnoughEnergy(price)) { log.debug("Not enough energy."); if (!report.isValid()) { log.debug("Report is not valid {} for {}.", report, user.email); throw new IllegalCommandException("Report is not valid."); if (report.isPeriodic()) { long initialDelaySeconds; try { initialDelaySeconds = report.calculateDelayInSeconds(); } catch (IllegalCommandBodyException e) { dash.updatedAt = System.currentTimeMillis(); ctx.writeAndFlush(makeUTF8StringMessage(CREATE_REPORT, message.id, report.toString()), ctx.voidPromise());
startFrom, report.makeFormatter()); if (onePinDataCsv.length() > 0) { String onePinFileName =