/** * Create an instance of {@link AddOrUpdateScheduledReportRequestMsg } * */ public AddOrUpdateScheduledReportRequestMsg createAddOrUpdateScheduledReportRequestMsg() { return new AddOrUpdateScheduledReportRequestMsg(); }
Utility.validateClassification(request.getClassification()); if (request.getJobs().isEmpty()) { throw new IllegalArgumentException("at least one report must be specified for updating"); AuditLogger.logItem(this.getClass().getCanonicalName(), "addOrUpdateScheduledReport", currentUser, "", (request.getClassification()), ctx.getMessageContext()); for (int i = 0; i < request.getJobs().size(); i++) { PreparedStatement cmd = null; try { 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); Utility.getARSSerializationContext().createMarshaller().marshal(request.getJobs().get(i), sw); byte[] bits = sw.toString().getBytes(Constants.CHARSET);
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"); validReportDefinition(request.getJobs().get(i)); validateReportAlerts(request.getJobs().get(i)); 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());