From 3379a39fe7b3612d347f1b683fe601514f5d5f20 Mon Sep 17 00:00:00 2001 From: "alex.berg" Date: Mon, 30 Jul 2012 14:12:04 -0500 Subject: [PATCH 1/2] Make trailing slash optional on domain, Properties optional. Signed-off-by: Alex Berg --- .../src/classes/ExportReport.cls | 3 ++ .../src/classes/Properties.cls | 4 +- ScheduleReportPackage/src/package.xml | 50 +++++++++++++++++-- 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/ScheduleReportPackage/src/classes/ExportReport.cls b/ScheduleReportPackage/src/classes/ExportReport.cls index 5a5457a..60d9eba 100755 --- a/ScheduleReportPackage/src/classes/ExportReport.cls +++ b/ScheduleReportPackage/src/classes/ExportReport.cls @@ -24,6 +24,7 @@ public with sharing class ExportReport { HttpRequest req = new HttpRequest(); req.setEndpoint(endPoint); req.setMethod('GET'); + req.setTimeout(30000); //if session id is provided add to the cookie so the webservice is authenticated if (sid!=null) req.setHeader('Cookie','sid='+sid); return req; @@ -108,6 +109,8 @@ public with sharing class ExportReport { if (un == null || pw == null) { throw new customException('Login credentials not defined in custom setting'); } + if (sfDomain.lastIndexOf('/') != sfDomain.length() - 1) + sfDomain += '/'; //login to salesforce using web callout to scrape for the session id String authURL = sfDomain + '?un=' + un + '&pw=' + pw; String sid = handleRedirectRequest(authURL); diff --git a/ScheduleReportPackage/src/classes/Properties.cls b/ScheduleReportPackage/src/classes/Properties.cls index bc1a6e4..773dc68 100755 --- a/ScheduleReportPackage/src/classes/Properties.cls +++ b/ScheduleReportPackage/src/classes/Properties.cls @@ -1,7 +1,7 @@ public with sharing class Properties { private static String getStringValue(String key) { - String retVal; + String retVal = ''; try { Properties__c prop = Properties__c.getValues(key); @@ -13,7 +13,7 @@ public with sharing class Properties { return retVal; } private static Boolean getBooleanValue(String key) { - Boolean retVal; + Boolean retVal = false; try { if (getStringValue(key).equals('true')) { diff --git a/ScheduleReportPackage/src/package.xml b/ScheduleReportPackage/src/package.xml index 4aa8b5d..94f6235 100755 --- a/ScheduleReportPackage/src/package.xml +++ b/ScheduleReportPackage/src/package.xml @@ -1,11 +1,53 @@ - Scheduled Report Exports - Scheduled Report Exports -http://www.cloudspokes.com/challenge_detail.html?contestID=344 - + + autoCompleteController ExportReport + Properties + scheduledReportControllerExtension_test + scheduledReportExport + scheduledReportExportControllerExtension + ScheduleReportExport + ScheduleReportExport_test + SingleReportExport ApexClass + + autoComplete2 + ApexComponent + + + Scheduled_Report_Templates + EmailTemplate + + + Scheduled_Report_Export__c-Scheduled Report Export Layout + Scheduled_Report_Export_Job__c-Scheduled Report Export Job Layout + Scheduled_Report_Export_Recipient__c-Scheduled Report Export Recepient Layout + Layout + + + Properties__c + Scheduled_Report_Export__c + Scheduled_Report_Export_Job__c + Scheduled_Report_Export_Recipient__c + CustomObject + + + detailScheduledReportExport + editScheduledReportExport + ApexPage + + + ScheduledReportAfterUpdate + ScheduledReportExportAfterInsert + ScheduledReportExportBeforeInsert + ScheduledReportExportBeforeUpdate + ApexTrigger + + + Scheduled_Report_Export__c + Workflow + 23.0 From dd852aed97c0cb7b89b5fa9bf85da5f54f0e51d2 Mon Sep 17 00:00:00 2001 From: chexxor Date: Thu, 16 Aug 2012 14:30:56 -0500 Subject: [PATCH 2/2] Add query string capability to report export emailer. --- .../src/classes/ExportReport.cls | 14 +++ .../src/classes/ScheduleReportExport.cls | 18 ++-- .../src/classes/ScheduleReportExport_test.cls | 2 +- ...cheduledReportControllerExtension_test.cls | 92 +++++++++++++++++++ ...-Scheduled Report Export Job Layout.layout | 6 +- ...t__c-Scheduled Report Export Layout.layout | 6 +- .../Scheduled_Report_Export_Job__c.object | 11 +++ .../objects/Scheduled_Report_Export__c.object | 42 +++------ .../pages/detailScheduledReportExport.page | 1 + .../src/pages/editScheduledReportExport.page | 20 ++++ 10 files changed, 171 insertions(+), 41 deletions(-) diff --git a/ScheduleReportPackage/src/classes/ExportReport.cls b/ScheduleReportPackage/src/classes/ExportReport.cls index 60d9eba..5b64351 100755 --- a/ScheduleReportPackage/src/classes/ExportReport.cls +++ b/ScheduleReportPackage/src/classes/ExportReport.cls @@ -119,17 +119,31 @@ public with sharing class ExportReport { } public blob getReportAsCSV(Id reportId, TestPath path) { + return this.getReportAsCSV(reportId, null, path); + } + + public blob getReportAsCSV(Id reportId, String queryStringParams, TestPath path) { String sid = getSessionId(); //url format to return an exported report in csv format String uri = sfDomain + reportId + '?export=1&enc=UTF-8&xf=csv'; + if (queryStringParams != null) + uri += queryStringParams; return Blob.valueOf(getReport(uri, 'text/csv; charset=UTF-8', sid, path)); } + public String getReportAsHTML(Id reportId, TestPath path) { + return this.getReportAsHTML(reportId, null, path); + } + + public String getReportAsHTML(Id reportId, String queryStringParams, TestPath path) { String sid = getSessionId(); //url format to return report without headers String uri = sfDomain + reportId + '?isdtp=nv'; + if (queryStringParams != null) + uri += queryStringParams; + System.debug('uri: ' + uri); String body = getReport(uri, 'text/html; charset=UTF-8', sid, path); if (body.indexOf('