public ReportDefinition findJobWithIdOf(String jobId) { ReportDefinition rd = null; for (int i = 0; i < getCompletedJobs().size(); i++) { if (getCompletedJobs().get(i).getJob().getJobId().equals(jobId)) { rd = getCompletedJobs().get(i).getJob(); return rd; } } return rd; }
/** * Create an instance of {@link ReportDefinition } * */ public ReportDefinition createReportDefinition() { return new ReportDefinition(); }
log.log(Level.INFO,"excuting ARS job " + get.getJobId() + " for " + get.getOwner()); Reporting r = new Reporting(); if (get.getExportCSVDataRequestMsg() != null) { org.miloss.fgsms.services.interfaces.reportingservice.ExportCSVDataRequestMsg x = new org.miloss.fgsms.services.interfaces.reportingservice.ExportCSVDataRequestMsg(); x.setClassification(get.getExportCSVDataRequestMsg().getClassification()); x.setAllServices(false); x.setExportType(get.getExportCSVDataRequestMsg().getExportType()); x.getURLs().addAll(get.getExportCSVDataRequestMsg().getURLs()); x.setRange(convertDiffRangeToRange(get.getExportCSVDataRequestMsg().getRange())); CsvExporter.generateCSVReport(x, path, files, get.getOwner(), null, r.getClassLevelFromDB()); updateLastRanAt(get); return storeReport(Reporting.generateZipFileandDelete(files, path), get.getJobId(), pooled); } catch (Exception e) { log.log(Level.ERROR, "error caught generating report", e); } else if (get.getExportDataRequestMsg() != null) { try { TimeRange ConvertDiffRangeToRange = convertDiffRangeToRange(get.getExportDataRequestMsg().getRange()); org.miloss.fgsms.services.interfaces.reportingservice.ExportDataRequestMsg request = new org.miloss.fgsms.services.interfaces.reportingservice.ExportDataRequestMsg(); request.getURLs().addAll(get.getExportDataRequestMsg().getURLs()); request.setRange(ConvertDiffRangeToRange); request.setReportTypes(get.getExportDataRequestMsg().getReportTypes()); request.setClassification(get.getExportDataRequestMsg().getClassification()); ExportDataToHTMLResponseMsg exportDataToHTML = r.generateHtmlReport(get.getOwner(), request); updateLastRanAt(get); byte[] bits = exportDataToHTML.getZipFile(); return storeReport(bits, get.getJobId(), pooled);
if (!Utility.stringIsNullOrEmpty(request.getJobs().get(i).getJobId())) { cmd = con.prepareStatement("UPDATE arsjobs SET reportdef=?, hasextrapermissions=?, enabled=? WHERE jobid=?;"); cmd.setBoolean(2, !request.getJobs().get(i).getAdditionalReaders().isEmpty()); cmd.setBoolean(3, request.getJobs().get(i).isEnabled()); cmd.setString(4, request.getJobs().get(i).getJobId()); } else { request.getJobs().get(i).setJobId(UUID.randomUUID().toString()); cmd = con.prepareStatement("INSERT INTO arsjobs (reportdef, hasextrapermissions, enabled, lastranat, jobid, owninguser) values (?,?,?,?,?,?);"); cmd.setBoolean(2, !request.getJobs().get(i).getAdditionalReaders().isEmpty()); cmd.setBoolean(3, request.getJobs().get(i).isEnabled()); cmd.setLong(4, 0); cmd.setString(5, request.getJobs().get(i).getJobId()); cmd.setString(6, currentUser);
private static void validateRequest(AddOrUpdateScheduledReportRequestMsg request, String currentUser, WebServiceContext ctx) throws AccessDeniedException { for (int i = 0; i < request.getJobs().size(); i++) { request.getJobs().get(i).setOwner(currentUser); if (Utility.stringIsNullOrEmpty(request.getJobs().get(i).getJobId())) { if (!IsReportJobOwner(currentUser, request.getJobs().get(i).getJobId())) { AccessDeniedException f = new AccessDeniedException("the report job " + request.getJobs().get(i).getJobId() + " is not owned by you", null); throw f; if (request.getJobs().get(i).getExportCSVDataRequestMsg() == null && request.getJobs().get(i).getExportDataRequestMsg() == null) { throw new IllegalArgumentException("one of ExportData or ExportCSV must be specified"); if (request.getJobs().get(i).getExportCSVDataRequestMsg() != null && request.getJobs().get(i).getExportDataRequestMsg() != null) { throw new IllegalArgumentException("both ExportData and ExportCSV cannot be specified on the same report definition"); if (request.getJobs().get(i).getExportCSVDataRequestMsg() != null) { if (request.getJobs().get(i).getExportCSVDataRequestMsg().getExportType() != ExportRecordsEnum.AUDIT_LOGS && request.getJobs().get(i).getExportCSVDataRequestMsg().getURLs().isEmpty()) { throw new IllegalArgumentException("ExportCSV requires at least one URL when not requesting audit logs"); for (int k = 0; k < request.getJobs().get(i).getExportCSVDataRequestMsg().getURLs().size(); k++) { if (request.getJobs().get(i).getExportCSVDataRequestMsg().getExportType() == ExportRecordsEnum.TRANSACTIONS) { UserIdentityUtil.assertAuditAccess(request.getJobs().get(i).getExportCSVDataRequestMsg().getURLs().get(k), currentUser, "addOrUpdateScheduledReport", request.getClassification(), ctx); } else { UserIdentityUtil.assertReadAccess(request.getJobs().get(i).getExportCSVDataRequestMsg().getURLs().get(k), currentUser, "addOrUpdateScheduledReport", request.getClassification(), ctx); assertNotNull(request.getJobs().get(i).getExportCSVDataRequestMsg().getExportType()); assertNotNull(request.getJobs().get(i).getExportCSVDataRequestMsg().getRange()); assertNotNull(request.getJobs().get(i).getExportCSVDataRequestMsg().getRange().getEnd()); assertNotNull(request.getJobs().get(i).getExportCSVDataRequestMsg().getRange().getStart());
if (get.getSchedule() == null) { throw new IllegalArgumentException("The schedule is empty"); if (get.getSchedule().getTriggers().isEmpty()) { throw new IllegalArgumentException("The report def has no triggers defined."); for (int i = 0; i < get.getSchedule().getTriggers().size(); i++) { if (get.getSchedule().getTriggers().get(i).getStartingAt() == null) { throw new IllegalArgumentException("The report def has invalid triggers."); if (get.getSchedule().getTriggers().get(i) instanceof DailySchedule) { DailySchedule ds = (DailySchedule) get.getSchedule().getTriggers().get(i); if (ds.getReoccurs() == null || ds.getReoccurs().intValue() < 1) { throw new IllegalArgumentException("The report def has invalid value for reoccuring."); } else if (get.getSchedule().getTriggers().get(i) instanceof WeeklySchedule) { WeeklySchedule ds = (WeeklySchedule) get.getSchedule().getTriggers().get(i); if (ds.getDayOfTheWeekIs().isEmpty()) { throw new IllegalArgumentException("The report def has invalid weekly schedule for day of the weeks."); } else if (get.getSchedule().getTriggers().get(i) instanceof MonthlySchedule) { MonthlySchedule ds = (MonthlySchedule) get.getSchedule().getTriggers().get(i); if (ds.getDayOfTheMonthIs().isEmpty()) { throw new IllegalArgumentException("The report def has invalid weekly schedule for day of the month."); } else if (get.getSchedule().getTriggers().get(i) instanceof OneTimeSchedule) { } else if (get.getSchedule().getTriggers().get(i) instanceof ImmediateSchedule) {
log.log(Level.INFO, items.size() + " jobs defined. Processing...."); for (int i = 0; i < items.size(); i++) { if (items.get(i).isEnabled() && CalendarCalculator.isTimeToRun(items.get(i), Calendar.getInstance())) { log.log(Level.INFO, "Enqueing report generation for " + items.get(i).getJobId()); if (waitforfinish) { String id = GenerateReport(items.get(i), pooled); log.log(Level.DEBUG, "Skipping report generation for " + items.get(i).getJobId() + " it's not time to fire");
sendMailAlert(get.getOwner() + ",<br>A report has been generated and is now available for download. Additional information is as follows:<br>" + "<table><tr><td>Report Name</td><td>" + Utility.encodeHTML(get.getFriendlyName()) + "</td></tr>" + "<tr><td>Generated Report ID</td><td>" + link + "</td></tr></table><br>" + (guess ? "The download urls above may not work because the system administrator has not defined the public url of FGSMS in general settings." : "") + "You are the owner of this report and can delete the generated report or the reporting job itself.", subject, getEmailAddresses(get.getOwner(), pooled), pooled); for (int i = 0; i < get.getAdditionalReaders().size(); i++) { sendMailAlert(get.getAdditionalReaders().get(i) + ",<br>A report has been generated and is now available for download. Additional information is as follows:<br>" + "<table><tr><td>Report Name</td><td>" + Utility.encodeHTML(get.getFriendlyName()) + "</td></tr>" + "<tr><td>Generated Report ID</td><td>" + link + "</td></tr></table><br>" + (guess ? "The download urls above may not work because the system administrator has not defined the public url of FGSMS in general settings." : "") + "You have been granted read access to this generated report by the user " + get.getOwner(), subject, getEmailAddresses(get.getOwner(), pooled), pooled);
ed.setJob(foo.getValue()); ed.getJob().setLastRanAt(ConvertToXmlGreg(rs.getLong("lastranat"))); ret.getCompletedJobs().add(ed); cmd.setString(1, ret.getCompletedJobs().get(i).getJob().getJobId()); cmd.setInt(2, request.getRecordlimit()); cmd.setInt(3, request.getOffset());
if (rd.getOwner().equalsIgnoreCase(currentUser)) { access = true; } else { for (int i = 0; i < rd.getAdditionalReaders().size(); i++) { if (currentUser.equalsIgnoreCase(rd.getAdditionalReaders().get(i))) { access = true;
for (int i = 0; i < get.getSchedule().getTriggers().size(); i++) { Date starton = null; if (get.getSchedule().getTriggers().get(i).getStartingAt() != null) { starton = get.getSchedule().getTriggers().get(i).getStartingAt().getTime(); if (get.getSchedule().getTriggers().get(i).getStartingAt().get(Calendar.HOUR_OF_DAY) == cal.get(Calendar.HOUR_OF_DAY) && get.getSchedule().getTriggers().get(i).getStartingAt().get(Calendar.MINUTE) == cal.get(Calendar.MINUTE)) { if (get.getSchedule().getTriggers().get(i).getClass().getCanonicalName().equalsIgnoreCase(DailySchedule.class.getCanonicalName())) { DailySchedule d = (DailySchedule) get.getSchedule().getTriggers().get(i); if (d.getReoccurs() == BigInteger.ONE) { return true; if (get.getLastRanAt() == null) { return true; Calendar nextrun = get.getLastRanAt(); int compare = nextrun.compareTo(cal); log.log(Level.INFO, "compare value " + compare); } else if (get.getSchedule().getTriggers().get(i).getClass().getCanonicalName().equalsIgnoreCase(WeeklySchedule.class.getCanonicalName())) { WeeklySchedule d = (WeeklySchedule) get.getSchedule().getTriggers().get(i); if (get.getLastRanAt() == null) { return true; Calendar lastRanAt = get.getLastRanAt(); if (lastRanAt == null) { return true;//this should have been handled already but...
if (foo != null && foo.getValue() != null) { rd = foo.getValue(); rd.setLastRanAt(ConvertLong(rs.getLong("lastranat"))); ret.add(rd);
if (foo != null && foo.getValue() != null) { rd = foo.getValue(); rd.setLastRanAt(ConvertLong(rs.getLong("lastranat"))); ret.add(rd);
private void updateLastRanAt(ReportDefinition get) { Connection con = Utility.getPerformanceDBConnection(); PreparedStatement cmd = null; try { cmd = con.prepareStatement("update arsjobs set lastranat=? where jobid=?"); cmd.setLong(1, System.currentTimeMillis()); cmd.setString(2, get.getJobId()); cmd.executeUpdate(); } catch (Exception ex) { log.log(Level.WARN, null, ex); } finally { DBUtils.safeClose(cmd); DBUtils.safeClose(con); } } }