extracted objects

This commit is contained in:
2025-12-17 13:02:12 +01:00
commit 7dd4ea08e1
195 changed files with 70591 additions and 0 deletions

View File

@@ -0,0 +1,721 @@
# XLIB_JASPERREPORTS
## Package Specification
```sql
PACKAGE "XLIB_JASPERREPORTS"
AS
/*=========================================================================
Purpose :
License : Copyright (c) 2010 Dietmar Aust (opal-consulting.de)
Licensed under a BSD style license (license.txt)
http://www.opal-consulting.de/pls/apex/f?p=20090928:14
$LastChangedDate: 2018-09-30 09:00:44 +0200 (So, 30 Sep 2018) $
$LastChangedBy: dietmar.aust $
Version Date Author Comment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
06.01.2010 D. Aust Initial creation
06.05.2011 D. Aust added constants for xlsx and docx
05.08.2012 D. Aust added version 2.0.0 features:
- direct printing
- save file on server
11.05.2013 D. Aust added support for tunneling images for html
exports only
2.3.0.0 19.05.2014 D. Aust - #294 - Fix chunked encoding problem in
xlib_http.get_report
- added version information to this package
2.4.0.0 15.10.2017 D. Aust FEATURE: #3941 - Support for timeZones
(report parameter REPORT_TIME_ZONE)
2.5.0.0 29.09.2018 D. Aust FEATURE: #9 - Ability to set Printjob name (programmatically)
2.5.0.1 30.09.2018 D. Aust fix bool2string issue
2.6.1 01.10.2020 D. Aust add get_default_configuration() and set_default_configuration()
2.6.2 13.10.2020 D. Aust #54 - Timeout value from default table not working
=========================================================================*/
-- version of this package
version_c constant varchar2(20 char) := '2.6.2';
-- constants
-- supported formats
c_rep_format_pdf CONSTANT VARCHAR2 (20) := 'pdf';
c_rep_format_rtf CONSTANT VARCHAR2 (20) := 'rtf';
c_rep_format_xls CONSTANT VARCHAR2 (20) := 'xls';
c_rep_format_html constant varchar2 (20) := 'html';
c_rep_format_html2 CONSTANT VARCHAR2 (20) := 'html2';
c_rep_format_csv CONSTANT VARCHAR2 (20) := 'csv';
c_rep_format_docx CONSTANT VARCHAR2 (20) := 'docx';
c_rep_format_pptx CONSTANT VARCHAR2 (20) := 'pptx';
c_rep_format_xlsx CONSTANT VARCHAR2 (20) := 'xlsx';
-- images uri
--c_images_uri_tunnel constant varchar2(100 char)
-- := 'xlib_jasperreports_img.get_image?p_url=#REPORT_URL#&p_image=';
-- #IMAGE_NAME# and #J2EE_CONTEXT# will be substituted on the J2EE server side
m_jri_cookie_name_c CONSTANT VARCHAR2 (50) := 'JRI_SESSIONID';
m_jri_path_cookie_name_c CONSTANT VARCHAR2 (50) := 'JRI_PATH';
c_images_uri_tunnel constant varchar2(500 char) := 'wwv_flow.show?p_request=APPLICATION_PROCESS%3DJRI_SHOW_IMAGE&p_flow_id=#APP_ID#&p_flow_step_id=0&p_instance=#APP_SESSION#&x01=#IMAGE_NAME#';
c_images_uri_no_tunnel constant varchar2(500 char) := '#J2EE_CONTEXT_PATH#/report_image?image=#IMAGE_NAME#';
-- exceptions
report_url_not_defined EXCEPTION;
----------------------------------------------------------------------------
-- sets the url for the report server for all requests in the
-- current session
----------------------------------------------------------------------------
PROCEDURE set_report_url (p_report_url IN VARCHAR2);
FUNCTION get_report_url
RETURN VARCHAR2;
----------------------------------------------------------------------------
-- set the image uri for html reports only!
----------------------------------------------------------------------------
PROCEDURE set_images_uri (p_images_uri IN VARCHAR2 default null);
procedure use_images_no_tunnel (p_server_uri in varchar2 default null, p_cookie_path varchar2 default null);
function get_use_images_no_tunnel return boolean;
FUNCTION get_images_uri
return varchar2;
FUNCTION get_cookie_path_no_tunnel
RETURN VARCHAR2;
/** make a callout with utl_http to the j2ee container running the
* JasperReportsIntegration web application
* => return the results
*
* @param p_rep_name name of the report (needs a name.jasper file deployed on the server)
* @param p_rep_format report format, e.g. pdf, rtf, etc, see constants
* @param p_data_source data source name, needs to be configured in J2EE application
* @param p_out_filename filename if the file should be downloaded
* @param p_rep_locale report locale setting, e.g. de_DE or en_US
* @param p_rep_encoding encoding, e.g. UTF-8
* @param p_additional_params additional parameters, e.g.: p1=1&p2=2
* @param p_print_is_enabled shall the report be sent to the printer directly?
* @param p_print_printer_name name or substring of printer name
* @param p_print_media media used, either the paper size or the tray
* @param p_print_copies number of copies to be printed
* @param p_print_duplex duplex printing?
* @param p_print_collate sorting the print output?
* @param p_save_is_enabled shall the generated file be saved on the server?
* @param p_rep_time_zone "time zone" parameter for the execution of the report,
a list of valid entries can be found here:
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
E.g.: Europe/Berlin, UCT, US/Central, US/Pacific,
Etc/Greenwich, Europe/London
* @param p_save_filename filename for the file to be saved on the server
* @param p_print_job_name name of the print job name, by default it uses: JasperReports - <report name>
*
*/
PROCEDURE show_report (
p_rep_name IN VARCHAR2 DEFAULT 'test',
p_rep_format IN VARCHAR2 DEFAULT c_rep_format_pdf,
p_data_source IN VARCHAR2 DEFAULT 'default',
p_out_filename IN VARCHAR2 DEFAULT NULL,
p_rep_locale in varchar2 default 'de_DE',
p_rep_encoding in varchar2 default 'UTF-8',
p_additional_params in varchar2 default null,
p_print_is_enabled in boolean default false,
p_print_printer_name in varchar2 default null,
p_print_media in varchar2 default null,
p_print_copies in number default 1,
p_print_duplex in boolean default false,
p_print_collate in boolean default false,
p_save_is_enabled in boolean default false,
p_save_filename in varchar2 default null,
p_rep_time_zone in varchar2 default null,
p_print_job_name in varchar2 default null
);
/* tunnels images for html reports */
procedure show_image(p_image_name IN VARCHAR2);
/** run the report and return the result as a blob
*
* @param p_rep_name name of the report (needs a name.jasper file deployed on the server)
* @param p_rep_format report format, e.g. pdf, rtf, etc, see constants
* @param p_data_source data source name, needs to be configured in J2EE application
* @param p_out_filename filename if the file should be downloaded
* @param p_rep_locale report locale setting, e.g. de_DE or en_US
* @param p_rep_encoding encoding, e.g. UTF-8
* @param p_additional_params additional parameters, e.g.: p1=1&p2=2
* @param p_print_is_enabled shall the report be sent to the printer directly?
* @param p_print_printer_name name or substring of printer name
* @param p_print_media media used, either the paper size or the tray
* @param p_print_copies number of copies to be printed
* @param p_print_duplex duplex printing?
* @param p_print_collate sorting the print output?
* @param p_save_is_enabled shall the generated file be saved on the server?
* @param p_save_filename filename for the file to be saved on the server
* @param p_rep_time_zone "time zone" parameter for the execution of the report,
a list of valid entries can be found here:
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
E.g.: Europe/Berlin, UCT, US/Central, US/Pacific,
Etc/Greenwich, Europe/London
* @param p_out_blob the blob will be returned here
* @param p_out_mime_type the proper mime type of the generated file
* @param p_print_job_name name of the print job name, by default it uses: JasperReports - <report name>
*
*/
PROCEDURE get_report (
p_rep_name IN VARCHAR2 DEFAULT 'test',
p_rep_format in varchar2 default c_rep_format_pdf,
p_data_source IN VARCHAR2 DEFAULT 'default',
p_rep_locale in varchar2 default 'de_DE',
p_rep_encoding IN VARCHAR2 DEFAULT 'UTF-8',
p_additional_params in varchar2 default null,
p_print_is_enabled in boolean default false,
p_print_printer_name in varchar2 default null,
p_print_media in varchar2 default null,
p_print_copies in number default 1,
p_print_duplex in boolean default false,
p_print_collate in boolean default false,
p_save_is_enabled in boolean default false,
p_save_filename in varchar2 default null,
p_rep_time_zone in varchar2 default null,
p_out_blob IN OUT BLOB,
p_out_mime_type IN OUT VARCHAR2,
p_print_job_name in varchar2 default null
);
----------------------------------------------------------------------------
-- get default configuration
----------------------------------------------------------------------------
FUNCTION get_default_configuration
return xlib_jasperreports_conf%rowtype;
----------------------------------------------------------------------------
-- set default configuration
----------------------------------------------------------------------------
PROCEDURE set_default_configuration(p_conf in out xlib_jasperreports_conf%rowtype);
PROCEDURE set_default_configuration (
p_protocol IN xlib_jasperreports_conf.conf_protocol%TYPE default 'http',
p_server IN xlib_jasperreports_conf.conf_server%TYPE default 'localhost',
p_port IN xlib_jasperreports_conf.conf_port%TYPE default '80',
p_context_path IN xlib_jasperreports_conf.conf_context_path%TYPE default 'jri',
p_wallet_path IN xlib_jasperreports_conf.conf_wallet_path%TYPE default null,
p_wallet_pwd IN xlib_jasperreports_conf.conf_wallet_pwd%TYPE default null,
p_http_transfer_timeout IN xlib_jasperreports_conf.conf_http_transfer_timeout%TYPE default 60);
END;```
## Package Body
```sql
PACKAGE BODY "XLIB_JASPERREPORTS"
AS
/*=========================================================================
Purpose :
License : Copyright (c) 2010 Dietmar Aust (opal-consulting.de)
Licensed under a BSD style license (license.txt)
http://www.opal-consulting.de/pls/apex/f?p=20090928:14
$LastChangedDate: 2018-09-30 09:00:44 +0200 (So, 30 Sep 2018) $
$LastChangedBy: dietmar.aust $
Version Date Author Comment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
06.01.2010 D. Aust Initial creation
06.05.2011 D. Aust added constants for xlsx and docx
05.08.2012 D. Aust added version 2.0.0 features:
- direct printing
- save file on server
11.05.2013 D. Aust added support for tunneling images for html
exports only
2.3.0.0 19.05.2014 D. Aust - #294 - Fix chunked encoding problem in
xlib_http.get_report
- added version information to this package
2.4.0.0 15.10.2017 D. Aust FEATURE: #3941 - Support for timeZones
(report parameter REPORT_TIME_ZONE)
2.5.0.0 29.09.2018 D. Aust FEATURE: #9 - Ability to set Printjob name (programmatically)
2.5.0.1 30.09.2018 D. Aust fix bool2string issue
2.6.1 01.10.2020 D. Aust add get_default_configuration() and set_default_configuration()
2.6.2 13.10.2020 D. Aust #54 - Timeout value from default table not working
=========================================================================*/
m_module constant varchar2 (100) := $$plsql_unit;
m_report_url VARCHAR2 (32767) := NULL;
m_images_uri VARCHAR2 (32767) := NULL;
m_use_images_no_tunnel boolean := false;
m_cookie_path_no_tunnel varchar2(200 char) := null;
-- convert boolean to 'true' or 'false'
FUNCTION bool2string (b IN BOOLEAN)
RETURN VARCHAR2
IS
BEGIN
IF b
THEN
RETURN 'true';
ELSE
RETURN 'false';
END IF;
END;
procedure setup_configuration_defaults
is
l_conf xlib_jasperreports_conf%rowtype;
l_timeout PLS_INTEGER;
begin
l_conf := get_default_configuration();
-- override report url if not defined
if m_report_url is null then
m_report_url := l_conf.conf_protocol || '://'||l_conf.conf_server||':'||l_conf.conf_port||'/'||l_conf.conf_context_path||'/report';
xlog(p_module => m_module, p_msg => 'Override report url from defaults: '|| m_report_url, p_type=> 'DEBUG');
end if;
-- set wallet path and pwd
-- will ALWAYS override the settings, will ignore previous calls to set_wallet
-- at least we check whether the config table has an entry for the wallet or not.
-- thus it could work relying on the wallet set by APEX through the internal workspace! :)
if lower(m_report_url) like 'https%' and l_conf.conf_wallet_path is not null then
utl_http.set_wallet(l_conf.conf_wallet_path, l_conf.conf_wallet_pwd);
xlog(p_module => m_module, p_msg => 'Override wallet location/pwd from defaults', p_type=> 'DEBUG');
end if;
-- override http transfer timeout it not defined
utl_http.get_transfer_timeout( timeout => l_timeout );
--xlog(p_module => m_module, p_msg => 'Current setting of transfer_timeout: '||l_timeout, p_type=> 'DEBUG');
if (l_timeout is null or l_timeout=60 /*60 is the default*/) then
utl_http.set_transfer_timeout(l_conf.conf_http_transfer_timeout);
xlog(p_module => m_module, p_msg => 'Override http transfer timeout ('||l_timeout||'s) from defaults: '|| l_conf.conf_http_transfer_timeout ||'s', p_type=> 'DEBUG');
end if;
end;
PROCEDURE dump_all_cookies
IS
l_proc VARCHAR2 (100) := m_module || '.dump_all_cookies';
l_name_arr OWA_COOKIE.vc_arr;
l_vals_arr OWA_COOKIE.vc_arr;
l_vals_ret INTEGER;
BEGIN
xlog (l_proc, 'start');
OWA_COOKIE.get_all (names => l_name_arr, vals => l_vals_arr, num_vals => l_vals_ret);
xlog (l_proc, '#num of cookies: ' || l_vals_ret);
FOR i IN 1 .. l_name_arr.COUNT
LOOP
xlog (l_proc, i || ':' || l_name_arr (i) || '=' || l_vals_arr (i));
END LOOP;
xlog (l_proc, 'end');
END;
----------------------------------------------------------------------------
-- sets the url for the report server for all requests in the
-- current session
----------------------------------------------------------------------------
PROCEDURE set_report_url (p_report_url IN VARCHAR2)
IS
BEGIN
xlog ('set_report_url:', p_report_url);
m_report_url := p_report_url;
END;
FUNCTION get_report_url
RETURN VARCHAR2
IS
BEGIN
RETURN m_report_url;
END;
----------------------------------------------------------------------------
-- sets the images_uri only for http reports!
----------------------------------------------------------------------------
PROCEDURE set_images_uri (p_images_uri IN VARCHAR2)
IS
BEGIN
m_images_uri := p_images_uri;
END;
/* use the images from the application server when both /ords and /jri are
installed on the same application server
the p_server_uri parameter is rarely used, only when they are not run on the same application server
and the uri differs. But that comes with a lot of CORS and other cookie issues.
*/
procedure use_images_no_tunnel (p_server_uri in varchar2 default null, p_cookie_path varchar2 default null)
is
begin
m_use_images_no_tunnel := true;
m_cookie_path_no_tunnel := p_cookie_path;
-- the placeholders #J2EE_CONTEXT_PATH# and #IMAGE_NAME# will be replaced
-- inside the J2EE application with the current values of the deployment
set_images_uri( p_images_uri => p_server_uri || '#J2EE_CONTEXT_PATH#/report_image?image=#IMAGE_NAME#');
end;
function get_use_images_no_tunnel return boolean
is
begin
return m_use_images_no_tunnel;
end;
FUNCTION get_cookie_path_no_tunnel
RETURN VARCHAR2
IS
BEGIN
RETURN m_cookie_path_no_tunnel;
END;
FUNCTION get_images_uri
RETURN VARCHAR2
IS
BEGIN
RETURN m_images_uri;
END;
FUNCTION compute_images_uri_tunnel
RETURN VARCHAR2
IS
l_uri VARCHAR2 (32767 CHAR);
BEGIN
--l_uri := sys_context( 'userenv', 'current_schema' )
-- || '.' || c_images_uri_tunnel;
/*
c_images_uri_tunnel
:='xlib_jasperreports_img.get_image?p_url=#REPORT_URL#&p_image=';
*/
--l_uri := replace(l_uri, '#REPORT_URL#', APEX_UTIL.URL_ENCODE(m_report_url));
--l_uri := replace(l_uri, '#REPORT_URL#', m_report_url);
-- c_images_uri_tunnel constant varchar2(100 char) := 'wwv_flow.show?p_request=APPLICATION_PROCESS%3DJRI_SHOW_IMAGE&p_flow_id=#APP_ID#&p_flow_step_id=0&p_instance=#APP_SESSION#&x01=#IMG_NAME#';
l_uri := c_images_uri_tunnel;
l_uri := REPLACE (l_uri, '#APP_ID#', v ('APP_ID'));
l_uri := REPLACE (l_uri, '#APP_SESSION#', v ('APP_SESSION'));
xlog ('compute tunnel', l_uri);
RETURN l_uri;
END;
----------------------------------------------------------------------------
-- displays an image for html reports
----------------------------------------------------------------------------
PROCEDURE show_image (p_image_name IN VARCHAR2)
IS
l_proc VARCHAR2 (100) := m_module || '.show_image';
l_url VARCHAR2 (32767);
l_header_name_arr xlib_http.vc_arr_t;
l_header_value_arr xlib_http.vc_arr_t;
PROCEDURE get_headers_to_pass2j2ee (p_header_name_arr OUT xlib_http.vc_arr_t,
p_header_value_arr OUT xlib_http.vc_arr_t)
IS
l_proc VARCHAR2 (100) := m_module || '.get_headers_to_pass2j2ee';
jsession_cookie OWA_COOKIE.cookie;
jsession_path_cookie OWA_COOKIE.cookie;
BEGIN
jsession_cookie := OWA_COOKIE.get (name => m_jri_cookie_name_c);
jsession_path_cookie := OWA_COOKIE.get (name => m_jri_path_cookie_name_c);
xlog (l_proc, 'show jsession_id and path: ');
xlog (l_proc, jsession_cookie.vals (1));
xlog (l_proc, jsession_path_cookie.vals (1));
p_header_name_arr (p_header_name_arr.COUNT + 1) := 'Cookie';
p_header_value_arr (p_header_value_arr.COUNT + 1) :=
'JSESSIONID=' || jsession_cookie.vals (1) || ';Path=' || jsession_path_cookie.vals (1);
--xlog(l_proc, 'end');
EXCEPTION
WHEN OTHERS
THEN
xlog (l_proc, DBMS_UTILITY.format_error_backtrace, 'ERROR');
END;
BEGIN
xlog (l_proc, 'start: ### SHOW IMAGE: ' || p_image_name);
dump_all_cookies;
-- pick up defaults from table xlib_jasperreports_conf
setup_configuration_defaults();
-------------------------------------------------------
-- assert valid values for the input variables
-------------------------------------------------------
IF m_report_url IS NULL
THEN
RAISE report_url_not_defined;
END IF;
-------------------------------------------------------
-- construct URL
-------------------------------------------------------
-- _image?image=img_0_0_15&uuid=b41eb881-7ca5-4919-bd8f-5afa8d10b398
l_url := m_report_url || '_image';
l_url := l_url || '?image=' || p_image_name;
l_url := l_url || '&JSESSIONID=' || OWA_COOKIE.get (name => m_jri_cookie_name_c).vals (1);
-------------------------------------------------------
-- determine cookies for calling the j2ee server
-- JSESSIONID needs to be passed, the path needs to
-- be modified for the j2ee server context
-------------------------------------------------------
get_headers_to_pass2j2ee (p_header_name_arr => l_header_name_arr, p_header_value_arr => l_header_value_arr);
-------------------------------------------------------
-- call J2EE server
-------------------------------------------------------
xlib_http.
display_url_raw (p_url => l_url, p_header_name_arr => l_header_name_arr, p_header_value_arr => l_header_value_arr);
END;
----------------------------------------------------------------------------
-- make a callout with utl_http to the j2ee container running the
-- JasperReportsIntegration webapp
-- => return the results
----------------------------------------------------------------------------
PROCEDURE show_report (p_rep_name IN VARCHAR2 DEFAULT 'test',
p_rep_format IN VARCHAR2 DEFAULT c_rep_format_pdf,
p_data_source IN VARCHAR2 DEFAULT 'default',
p_out_filename IN VARCHAR2 DEFAULT NULL,
p_rep_locale IN VARCHAR2 DEFAULT 'de_DE',
p_rep_encoding IN VARCHAR2 DEFAULT 'UTF-8',
p_additional_params IN VARCHAR2 DEFAULT NULL,
p_print_is_enabled IN BOOLEAN DEFAULT FALSE,
p_print_printer_name IN VARCHAR2 DEFAULT NULL,
p_print_media IN VARCHAR2 DEFAULT NULL,
p_print_copies IN NUMBER DEFAULT 1,
p_print_duplex IN BOOLEAN DEFAULT FALSE,
p_print_collate IN BOOLEAN DEFAULT FALSE,
p_save_is_enabled IN BOOLEAN DEFAULT FALSE,
p_save_filename IN VARCHAR2 DEFAULT NULL,
p_rep_time_zone IN VARCHAR2 DEFAULT NULL,
p_print_job_name IN VARCHAR2 DEFAULT NULL)
IS
l_proc VARCHAR2 (100) := m_module || '.SHOW_REPORT';
l_url VARCHAR2 (32767);
BEGIN
-- pick up defaults from table xlib_jasperreports_conf
setup_configuration_defaults();
-------------------------------------------------------
-- assert valid values for the input variables
-------------------------------------------------------
IF m_report_url IS NULL
THEN
xlog(p_module => m_module, p_msg => 'The report url is empty', p_type=> 'ERROR');
RAISE report_url_not_defined;
END IF;
-------------------------------------------------------
-- construct URL
-------------------------------------------------------
l_url := m_report_url;
l_url := l_url || '?_repName=' || p_rep_name;
l_url := l_url || '&_repFormat=' || p_rep_format;
l_url := l_url || '&_dataSource=' || p_data_source;
l_url := l_url || '&_outFilename=' || p_out_filename;
l_url := l_url || '&_repLocale=' || p_rep_locale;
l_url := l_url || '&_repEncoding=' || p_rep_encoding;
l_url := l_url || '&_repTimeZone=' || APEX_UTIL.URL_ENCODE (p_rep_time_zone);
-- per default use the tunnel through the database
IF m_images_uri IS NULL OR m_images_uri = c_images_uri_tunnel
THEN
-- tunnel through database
l_url := l_url || '&_imagesURI=' || APEX_UTIL.URL_ENCODE (compute_images_uri_tunnel);
ELSE
-- use parameter, mostly for direct access to servlet
l_url := l_url || '&_imagesURI=' || APEX_UTIL.URL_ENCODE (m_images_uri);
END IF;
-- direct printing
l_url := l_url || '&_printIsEnabled=' || bool2string (p_print_is_enabled);
l_url := l_url || '&_printPrinterName=' || p_print_printer_name;
l_url := l_url || '&_printPrinterTray=' || p_print_media;
l_url := l_url || '&_printCopies=' || p_print_copies;
l_url := l_url || '&_printDuplex=' || bool2string (p_print_duplex);
l_url := l_url || '&_printCollate=' || bool2string (p_print_collate);
l_url := l_url || '&_printJobName=' || p_print_job_name;
-- save file on server
l_url := l_url || '&_saveIsEnabled=' || bool2string (p_save_is_enabled);
l_url := l_url || '&_saveFileName=' || p_save_filename;
/*
Each additional parameter needs to be escaped using utl_url.escape()
utl_url.escape(
url => p_additional_params,
escape_reserved_chars => true,
url_charset => 'UTF-8'
);
*/
-- additional report parameter passed?
IF (p_additional_params IS NOT NULL)
THEN
-- l_url := l_url || '&' || p_additional_params;
l_url := l_url || '&' || utl_url.escape(
url => p_additional_params,
escape_reserved_chars => false,
url_charset => 'UTF-8'
);
END IF;
-------------------------------------------------------
-- call J2EE server
-------------------------------------------------------
xlib_http.display_url_raw (p_url => l_url);
END;
----------------------------------------------------------------------------
-- run the report and return the result as a blob
----------------------------------------------------------------------------
PROCEDURE get_report (p_rep_name IN VARCHAR2 DEFAULT 'test',
p_rep_format IN VARCHAR2 DEFAULT c_rep_format_pdf,
p_data_source IN VARCHAR2 DEFAULT 'default',
p_rep_locale IN VARCHAR2 DEFAULT 'de_DE',
p_rep_encoding IN VARCHAR2 DEFAULT 'UTF-8',
p_additional_params IN VARCHAR2 DEFAULT NULL,
p_print_is_enabled IN BOOLEAN DEFAULT FALSE,
p_print_printer_name IN VARCHAR2 DEFAULT NULL,
p_print_media IN VARCHAR2 DEFAULT NULL,
p_print_copies IN NUMBER DEFAULT 1,
p_print_duplex IN BOOLEAN DEFAULT FALSE,
p_print_collate IN BOOLEAN DEFAULT FALSE,
p_save_is_enabled IN BOOLEAN DEFAULT FALSE,
p_save_filename IN VARCHAR2 DEFAULT NULL,
p_rep_time_zone IN VARCHAR2 DEFAULT NULL,
p_out_blob IN OUT BLOB,
p_out_mime_type IN OUT VARCHAR2,
p_print_job_name IN VARCHAR2 DEFAULT NULL)
IS
l_proc VARCHAR2 (100) := m_module || '.GET_REPORT';
l_url VARCHAR2 (32767);
BEGIN
-- pick up defaults from table xlib_jasperreports_conf
setup_configuration_defaults();
-------------------------------------------------------
-- assert valid values for the input variables
-------------------------------------------------------
IF m_report_url IS NULL
THEN
RAISE report_url_not_defined;
END IF;
-------------------------------------------------------
-- construct URL
-------------------------------------------------------
l_url := m_report_url;
l_url := l_url || '?_repName=' || p_rep_name;
l_url := l_url || '&_repFormat=' || p_rep_format;
l_url := l_url || '&_dataSource=' || p_data_source;
l_url := l_url || '&_repLocale=' || p_rep_locale;
l_url := l_url || '&_repEncoding=' || p_rep_encoding;
l_url := l_url || '&_repTimeZone=' || APEX_UTIL.URL_ENCODE (p_rep_time_zone);
-- per default use the tunnel through the database
IF m_images_uri IS NULL OR m_images_uri = c_images_uri_tunnel
THEN
-- tunnel through database
l_url := l_url || '&_imagesURI=' || APEX_UTIL.URL_ENCODE (compute_images_uri_tunnel);
ELSE
-- use parameter, mostly for direct access to servlet
l_url := l_url || '&_imagesURI=' || APEX_UTIL.URL_ENCODE (m_images_uri);
END IF;
-- direct printing
l_url := l_url || '&_printIsEnabled=' || bool2string (p_print_is_enabled);
l_url := l_url || '&_printPrinterName=' || p_print_printer_name;
l_url := l_url || '&_printPrinterTray=' || p_print_media;
l_url := l_url || '&_printCopies=' || p_print_copies;
l_url := l_url || '&_printDuplex=' || bool2string (p_print_duplex);
l_url := l_url || '&_printCollate=' || bool2string (p_print_collate);
l_url := l_url || '&_printJobName=' || p_print_job_name;
-- save file on server
l_url := l_url || '&_saveIsEnabled=' || bool2string (p_save_is_enabled);
l_url := l_url || '&_saveFileName=' || p_save_filename;
-- additional report parameter passed?
IF (p_additional_params IS NOT NULL)
THEN
-- l_url := l_url || '&' || p_additional_params;
l_url := l_url || '&' || utl_url.escape(
url => p_additional_params,
escape_reserved_chars => false,
url_charset => 'UTF-8'
);
END IF;
-------------------------------------------------------
-- call Tomcat
-------------------------------------------------------
xlib_http.retrieve_blob_from_url (p_url => l_url, o_blob => p_out_blob, o_mime_type => p_out_mime_type);
END;
----------------------------------------------------------------------------
-- get default configuration
----------------------------------------------------------------------------
FUNCTION get_default_configuration
RETURN xlib_jasperreports_conf%ROWTYPE
IS
l_conf xlib_jasperreports_conf%ROWTYPE;
BEGIN
SELECT *
INTO l_conf
FROM xlib_jasperreports_conf
WHERE conf_id = 'MAIN';
RETURN l_conf;
END;
----------------------------------------------------------------------------
-- set default configuration
----------------------------------------------------------------------------
PROCEDURE set_default_configuration (p_conf IN OUT xlib_jasperreports_conf%ROWTYPE)
IS
BEGIN
p_conf.conf_id := 'MAIN';
UPDATE xlib_jasperreports_conf
SET row = p_conf
WHERE conf_id = p_conf.conf_id;
END;
PROCEDURE set_default_configuration (
p_protocol IN xlib_jasperreports_conf.conf_protocol%TYPE default 'http',
p_server IN xlib_jasperreports_conf.conf_server%TYPE default 'localhost',
p_port IN xlib_jasperreports_conf.conf_port%TYPE default '80',
p_context_path IN xlib_jasperreports_conf.conf_context_path%TYPE default 'jri',
p_wallet_path IN xlib_jasperreports_conf.conf_wallet_path%TYPE default null,
p_wallet_pwd IN xlib_jasperreports_conf.conf_wallet_pwd%TYPE default null,
p_http_transfer_timeout IN xlib_jasperreports_conf.conf_http_transfer_timeout%TYPE default 60)
IS
BEGIN
UPDATE xlib_jasperreports_conf
SET conf_protocol = p_protocol,
conf_server = p_server,
conf_port = p_port,
conf_context_path = p_context_path,
conf_wallet_path = p_wallet_path,
conf_wallet_pwd = p_wallet_pwd,
conf_http_transfer_timeout = p_http_transfer_timeout
WHERE conf_id = 'MAIN';
END;
END;```