Merge remote-tracking branch 'refs/remotes/mortenbra/master'
This commit is contained in:
commit
3bffe1efb8
@ -522,7 +522,7 @@ begin
|
||||
l_xml := make_request (l_soap_action, get_request_envelope);
|
||||
|
||||
l_returnvalue.sequence_number := 1;
|
||||
l_returnvalue.folder_id := flex_ws_api.parse_xml(l_xml, '//*/t:FolderId/@Id/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.folder_id := flex_ws_api.parse_xml(l_xml, '//*/t:FolderId/@Id', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.display_name := flex_ws_api.parse_xml(l_xml, '//*/t:DisplayName/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.total_count := to_number(flex_ws_api.parse_xml(l_xml, '//*/t:TotalCount/text()', g_namespace_messages || ' ' || g_namespace_types));
|
||||
l_returnvalue.child_folder_count := to_number(flex_ws_api.parse_xml(l_xml, '//*/t:ChildFolderCount/text()', g_namespace_messages || ' ' || g_namespace_types));
|
||||
@ -831,8 +831,8 @@ begin
|
||||
|
||||
-- general Item info
|
||||
l_returnvalue.sequence_number := 1;
|
||||
l_returnvalue.item_id := flex_ws_api.parse_xml(l_xml, '//*/t:ItemId/@Id/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.change_key := flex_ws_api.parse_xml(l_xml, '//*/t:ItemId/@ChangeKey/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.item_id := flex_ws_api.parse_xml(l_xml, '//*/t:ItemId/@Id', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.change_key := flex_ws_api.parse_xml(l_xml, '//*/t:ItemId/@ChangeKey', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.item_size := to_number(flex_ws_api.parse_xml(l_xml, '//*/t:Size/text()', g_namespace_messages || ' ' || g_namespace_types));
|
||||
|
||||
l_returnvalue.subject := flex_ws_api.parse_xml(l_xml, '//*/t:Subject/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
@ -1209,7 +1209,7 @@ begin
|
||||
l_xml := make_request (l_soap_action, get_request_envelope);
|
||||
|
||||
-- TODO: verify that ID is returned/parsed...
|
||||
l_returnvalue := flex_ws_api.parse_xml(l_xml, '//*/m:Items/t:CalendarItem/t:ItemId/@Id/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue := flex_ws_api.parse_xml(l_xml, '//*/m:Items/t:CalendarItem/t:ItemId/@Id', g_namespace_messages || ' ' || g_namespace_types);
|
||||
|
||||
return l_returnvalue;
|
||||
|
||||
@ -1278,7 +1278,7 @@ begin
|
||||
l_xml := make_request (l_soap_action, get_request_envelope);
|
||||
|
||||
-- TODO: verify that ID is returned/parsed...
|
||||
l_returnvalue := flex_ws_api.parse_xml(l_xml, '//*/m:Items/t:Task/t:ItemId/@Id/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue := flex_ws_api.parse_xml(l_xml, '//*/m:Items/t:Task/t:ItemId/@Id', g_namespace_messages || ' ' || g_namespace_types);
|
||||
|
||||
return l_returnvalue;
|
||||
|
||||
@ -1376,7 +1376,7 @@ begin
|
||||
l_xml := make_request (l_soap_action, get_request_envelope);
|
||||
|
||||
-- TODO: verify that ID is returned/parsed...
|
||||
l_returnvalue := flex_ws_api.parse_xml(l_xml, '//*/m:Items/t:Message/t:ItemId/@Id/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue := flex_ws_api.parse_xml(l_xml, '//*/m:Items/t:Message/t:ItemId/@Id', g_namespace_messages || ' ' || g_namespace_types);
|
||||
|
||||
return l_returnvalue;
|
||||
|
||||
@ -1633,7 +1633,7 @@ begin
|
||||
|
||||
l_xml := make_request (l_soap_action, get_request_envelope);
|
||||
|
||||
l_returnvalue.attachment_id := flex_ws_api.parse_xml(l_xml, '//*/m:Attachments/t:FileAttachment/t:AttachmentId/@Id/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.attachment_id := flex_ws_api.parse_xml(l_xml, '//*/m:Attachments/t:FileAttachment/t:AttachmentId/@Id', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.name := flex_ws_api.parse_xml(l_xml, '//*/m:Attachments/t:FileAttachment/t:Name/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.content_type := flex_ws_api.parse_xml(l_xml, '//*/m:Attachments/t:FileAttachment/t:ContentType/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue.content_id := flex_ws_api.parse_xml(l_xml, '//*/m:Attachments/t:FileAttachment/t:ContentId/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
@ -1706,7 +1706,7 @@ begin
|
||||
l_xml := make_request (l_soap_action, get_request_envelope);
|
||||
|
||||
-- TODO: verify that value is returned...
|
||||
l_returnvalue := flex_ws_api.parse_xml(l_xml, '//*/m:Attachments/t:FileAttachment/t:AttachmentId/@Id/text()', g_namespace_messages || ' ' || g_namespace_types);
|
||||
l_returnvalue := flex_ws_api.parse_xml(l_xml, '//*/m:Attachments/t:FileAttachment/t:AttachmentId/@Id', g_namespace_messages || ' ' || g_namespace_types);
|
||||
|
||||
return l_returnvalue;
|
||||
|
||||
|
||||
@ -58,6 +58,44 @@ begin
|
||||
end get_xml;
|
||||
|
||||
|
||||
function get_worksheets_list( p_xlsx in blob ) return t_xlsx_sheet_properties
|
||||
as
|
||||
l_returnvalue t_xlsx_sheet_properties;
|
||||
l_xml xmltype;
|
||||
begin
|
||||
|
||||
/*
|
||||
|
||||
Purpose: get an array of the worksheets in the workbook
|
||||
|
||||
Remarks:
|
||||
|
||||
Who Date Description
|
||||
------ ---------- --------------------------------
|
||||
JMW 02.03.2016 Created
|
||||
|
||||
*/
|
||||
|
||||
l_xml := get_xml( p_xlsx, 'xl/workbook.xml' );
|
||||
|
||||
select xml.r_id, xml.sheetid, xml.name
|
||||
bulk collect into l_returnvalue
|
||||
from xmltable( xmlnamespaces( default 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',
|
||||
'http://schemas.openxmlformats.org/officeDocument/2006/relationships' AS "r" ),
|
||||
'/workbook/sheets/sheet'
|
||||
passing l_xml
|
||||
columns
|
||||
r_id varchar2(255) path '@r:id',
|
||||
sheetid number path '@sheetId',
|
||||
name varchar2(31) path '@name' ) xml
|
||||
where xml.r_id is not null
|
||||
order by xml.sheetid;
|
||||
|
||||
return l_returnvalue;
|
||||
|
||||
end get_worksheets_list;
|
||||
|
||||
|
||||
function get_docx_properties (p_docx in blob) return t_docx_properties
|
||||
as
|
||||
l_returnvalue t_docx_properties;
|
||||
@ -208,7 +246,9 @@ begin
|
||||
|
||||
l_blob := zip_util_pkg.get_file (p_template, l_file_list(i));
|
||||
|
||||
if l_file_list(i) in ('word/document.xml', 'word/footer1.xml', 'xl/sharedStrings.xml') or (l_file_list(i) like 'ppt/slides/slide%.xml') then
|
||||
if l_file_list(i) in ('word/document.xml', 'word/footer1.xml', 'xl/sharedStrings.xml')
|
||||
or (l_file_list(i) like 'ppt/slides/slide%.xml')
|
||||
or (l_file_list(i) like 'ppt/notesSlides/notesSlide%.xml') then
|
||||
|
||||
l_clob := sql_util_pkg.blob_to_clob (l_blob);
|
||||
l_clob := string_util_pkg.multi_replace (l_clob, p_names, p_values);
|
||||
|
||||
@ -78,6 +78,17 @@ as
|
||||
|
||||
type t_xlsx_sheet is table of t_xlsx_cell index by varchar2(20);
|
||||
|
||||
type t_xlsx_sheet_attributes is record (
|
||||
r_id varchar2(255),
|
||||
sheetid number,
|
||||
name varchar2(31)
|
||||
);
|
||||
|
||||
type t_xlsx_sheet_properties is table of t_xlsx_sheet_attributes index by pls_integer;
|
||||
|
||||
-- get list of xlsx worksheets
|
||||
function get_worksheets_list( p_xlsx in blob ) return t_xlsx_sheet_properties;
|
||||
|
||||
-- get docx properties
|
||||
function get_docx_properties (p_docx in blob) return t_docx_properties;
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ as
|
||||
g_exp_bind_vars constant varchar2(255) := ':\w+';
|
||||
g_exp_hyperlinks constant varchar2(255) := '<a href="[^"]+">[^<]+</a>';
|
||||
g_exp_ip_addresses constant varchar2(255) := '(\d{1,3}\.){3}\d{1,3}';
|
||||
g_exp_email_addresses constant varchar2(255) := '[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}';
|
||||
g_exp_email_addresses constant varchar2(255) := '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$';
|
||||
g_exp_email_address_list constant varchar2(255) := '^((\s*[a-zA-Z0-9\._%-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}\s*[,;:]){1,100}?)?(\s*[a-zA-Z0-9\._%-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4})*$';
|
||||
g_exp_double_words constant varchar2(255) := ' ([A-Za-z]+) \1';
|
||||
g_exp_cc_visa constant varchar2(255) := '^4[0-9]{12}(?:[0-9]{3})?$';
|
||||
|
||||
@ -15,56 +15,6 @@ as
|
||||
|
||||
|
||||
function is_valid_email (p_value in varchar2) return boolean
|
||||
as
|
||||
l_dot_pos number;
|
||||
l_at_pos number;
|
||||
l_str_length number;
|
||||
l_returnvalue boolean := true;
|
||||
begin
|
||||
|
||||
/*
|
||||
|
||||
Purpose: returns true if value is valid email address
|
||||
|
||||
Remarks: Written by Anil Passi, see http://oracle.anilpassi.com/validate-email-pl-sql-2.html
|
||||
|
||||
Who Date Description
|
||||
------ ---------- --------------------------------
|
||||
MBR 23.10.2011 Created
|
||||
MBR 26.10.2011 Added check against multiple at signs
|
||||
|
||||
*/
|
||||
|
||||
if p_value is null then
|
||||
l_returnvalue := false;
|
||||
else
|
||||
|
||||
l_dot_pos := instr(p_value, '.');
|
||||
l_at_pos := instr(p_value, '@');
|
||||
|
||||
l_str_length := length(p_value);
|
||||
|
||||
if ((l_dot_pos = 0) or (l_at_pos = 0) or (l_dot_pos = l_at_pos + 1) or (l_at_pos = 1) or (l_at_pos = l_str_length) or (l_dot_pos = l_str_length)) then
|
||||
l_returnvalue := false;
|
||||
end if;
|
||||
|
||||
if instr(substr(p_value, l_at_pos), '.') = 0 then
|
||||
l_returnvalue := false;
|
||||
end if;
|
||||
|
||||
if instr(substr(p_value, l_at_pos + 1), '@') > 0 then
|
||||
l_returnvalue := false;
|
||||
end if;
|
||||
|
||||
|
||||
end if;
|
||||
|
||||
return l_returnvalue;
|
||||
|
||||
end is_valid_email;
|
||||
|
||||
|
||||
function is_valid_email2 (p_value in varchar2) return boolean
|
||||
as
|
||||
l_value varchar2(32000);
|
||||
l_returnvalue boolean;
|
||||
@ -79,17 +29,29 @@ begin
|
||||
Who Date Description
|
||||
------ ---------- --------------------------------
|
||||
MBR 23.10.2011 Created
|
||||
Tim N 01.04.2016 Enhancements
|
||||
|
||||
*/
|
||||
|
||||
if p_value is null then
|
||||
l_returnvalue := false;
|
||||
else
|
||||
l_returnvalue := regexp_replace(p_value, regexp_util_pkg.g_exp_email_addresses, null) is null;
|
||||
end if;
|
||||
l_returnvalue := regexp_like(p_value, regexp_util_pkg.g_exp_email_addresses);
|
||||
|
||||
return l_returnvalue;
|
||||
|
||||
end is_valid_email;
|
||||
|
||||
|
||||
function is_valid_email2 (p_value in varchar2) return boolean
|
||||
as
|
||||
begin
|
||||
|
||||
/*
|
||||
|
||||
Purpose: backward compatibility only
|
||||
|
||||
*/
|
||||
|
||||
return is_valid_email(p_value);
|
||||
|
||||
end is_valid_email2;
|
||||
|
||||
|
||||
@ -107,14 +69,11 @@ begin
|
||||
Who Date Description
|
||||
------ ---------- --------------------------------
|
||||
MBR 23.10.2011 Created
|
||||
Tim N 01.04.2016 Enhancements
|
||||
|
||||
*/
|
||||
|
||||
if p_value is null then
|
||||
l_returnvalue := false;
|
||||
else
|
||||
l_returnvalue := regexp_replace(p_value, regexp_util_pkg.g_exp_email_address_list, null) is null;
|
||||
end if;
|
||||
l_returnvalue := regexp_like(p_value, regexp_util_pkg.g_exp_email_address_list);
|
||||
|
||||
return l_returnvalue;
|
||||
|
||||
|
||||
@ -781,9 +781,16 @@ as
|
||||
)
|
||||
is
|
||||
t_tmp blob;
|
||||
l_count binary_integer;
|
||||
begin
|
||||
dbms_lob.createtemporary( t_tmp, true );
|
||||
for i in 0 .. trunc( length( p_xml ) / 4000 )
|
||||
l_count := trunc( length( p_xml ) / 4000 );
|
||||
|
||||
if mod( length( p_xml ), 4000 ) = 0 then
|
||||
l_count := greatest(l_count - 1, 0);
|
||||
end if;
|
||||
|
||||
for i in 0 .. l_count
|
||||
loop
|
||||
dbms_lob.append( t_tmp, utl_i18n.string_to_raw( substr( p_xml, i * 4000 + 1, 4000 ), 'AL32UTF8') );
|
||||
end loop;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user