create or replace package body odwaslib
is
/*****************************************************************************************
Purpose Maintain and access the ODWA Search (Query) Library
Usage
Remarks
Revision history
When Who Construct
Revision What
------------------------------------------------------------------------------------------
$revision_history$
19-Nov-2002 Kannan Parthasarathy
- Fixed OAC P1 violations.
16-aug-2001 Lucas Jellema
1.1 - implement fixes in Query Library functionality:
- query label is mandatory but does not give error when saved.
- make item search category mandatory
- make execute query a button- show rounded Save button (instead of rectangular button)
- make category a mandatory property
- enforce mandatory items
- add rounded Search button to query property palette
- Publish to Public is not longer mandatory
- Categories with spaces in their names are now catered for
30-mar-2001 Lucas Jellema
1.0
*****************************************************************************************/
/* $add_to_revision_history
$
*/
--
-- private constants
--
REVISION_LABEL constant varchar2(30) := '$x.y:: 1.1 $';
PACKAGE_NAME constant varchar2(30) := 'ODWASLIB';
procedure js_exec
is
begin
htp.p
('
');
end; -- js_exec
-- this procedure will retrieve the query criteria saved with query p_qlb_id
-- and subsequently call queryFrame with p_run_mode ='execute' (to immediately execute the query)
-- and all values for the query parameters
procedure loadQueryCriteria
( p_session_id in number
, p_qlb_id in number
) is
cursor c_qlb
( b_qlb_id in number
) is
select distinct
qlb.category
, qlb.description
, qlb.basic
, qlb.advanced
, qlb.audit_tab
, qlb.version
, qlb.label
, qlb.published
, qlb.owner
, qlb.last_date_changed
, cdwpbase.get_tag_value(qlb.basic,'name','{','}') name
, cdwpbase.get_tag_value(qlb.basic,'workareairid','{','}') workareairid
, cdwpbase.get_tag_value(qlb.basic,'elementtype','{','}') elementtype
, cdwpbase.get_tag_value(qlb.basic,'casesensitive','{','}') casesensitive
, cdwpbase.get_tag_value(qlb.basic,'folderirid','{','}') folderirid
, cdwpbase.get_tag_value(qlb.basic,'folderivid','{','}') folderivid
, cdwpbase.get_tag_value(qlb.basic,'tipversionsonly','{','}') tipversionsonly
, cdwpbase.get_tag_value(qlb.basic,'includenested','{','}') includenested
, cdwpbase.get_tag_value(qlb.advanced,'where','{','}') where_clause
, cdwpbase.get_tag_value(qlb.advanced,'ivid','{','}') ivid
, cdwpbase.get_tag_value(qlb.advanced,'irid','{','}') irid
, cdwpbase.get_tag_value(qlb.advanced,'txttype','{','}') txttype
, cdwpbase.get_tag_value(qlb.advanced,'txtcontains','{','}') txtcontains
, cdwpbase.get_tag_value(qlb.advanced,'filecontains','{','}') filecontains
, cdwpbase.get_tag_value(qlb.advanced,'deptype','{','}') deptype
, cdwpbase.get_tag_value(qlb.advanced,'globalname','{','}') globalname
, cdwpbase.get_tag_value(qlb.advanced,'globalnametype','{','}') globalnametype
, cdwpbase.get_tag_value(qlb.advanced,'usedbyivid','{','}') usedbyivid
, cdwpbase.get_tag_value(qlb.version,'checkstate','{','}') checkstate
, cdwpbase.get_tag_value(qlb.version,'rootversionsonly','{','}') rootversionsonly
, cdwpbase.get_tag_value(qlb.version,'versionlabel','{','}') versionlabel
, cdwpbase.get_tag_value(qlb.version,'branchirid','{','}') branchirid
, cdwpbase.get_tag_value(qlb.version,'cfgivid','{','}') cfgivid
, cdwpbase.get_tag_value(qlb.version,'checknotescontain','{','}') checknotescontain
, cdwpbase.get_tag_value(qlb.version,'checkoutuser','{','}') checkoutuser
, cdwpbase.get_tag_value(qlb.version,'checkedoutafter','{','}') checkedoutafter
, cdwpbase.get_tag_value(qlb.version,'checkedoutbefore','{','}') checkedoutbefore
, cdwpbase.get_tag_value(qlb.version,'checkinuser','{','}') checkinuser
, cdwpbase.get_tag_value(qlb.version,'checkedinafter','{','}') checkedinafter
, cdwpbase.get_tag_value(qlb.version,'checkedinbefore','{','}') checkedinbefore
, cdwpbase.get_tag_value(qlb.version,'checkedinat','{','}') checkedinat
, cdwpbase.get_tag_value(qlb.audit_tab,'createdby','{','}') createdby
, cdwpbase.get_tag_value(qlb.audit_tab,'createdafter','{','}') createdafter
, cdwpbase.get_tag_value(qlb.audit_tab,'createdbefore','{','}') createdbefore
, cdwpbase.get_tag_value(qlb.audit_tab,'changedby','{','}') changedby
, cdwpbase.get_tag_value(qlb.audit_tab,'changedafter','{','}') changedafter
, cdwpbase.get_tag_value(qlb.audit_tab,'changedbefore','{','}') changedbefore
, cdwpbase.get_tag_value(qlb.audit_tab,'wastebasket','{','}') wastebasket
from odwa_query_library qlb
where qlb.id = b_qlb_id
;
r_qlb c_qlb%rowtype;
begin
open c_qlb( b_qlb_id => p_qlb_id);
fetch c_qlb
into r_qlb;
close c_qlb;
odwasrch.queryFrame
( p_session_id => p_session_id
, qName => r_qlb.name
, qCaseSensitive => r_qlb.casesensitive
, qWorkareaIrid => r_qlb.workareairid
, qTipVersionsOnly => r_qlb.tipversionsonly
, qFolderIrid => r_qlb.folderirid
, qFolderIvid => r_qlb.folderivid
, qIncludeNested => r_qlb.includenested
, qElementType => r_qlb.elementtype
, qIvid => r_qlb.ivid
, qIrid => r_qlb.irid
, qTxtType => r_qlb.txttype
, qTxtContains => r_qlb.txtcontains
, qFileContains => r_qlb.filecontains
, qWhere => r_qlb.where_clause
, qDepType => r_qlb.deptype
, qGlobalName => r_qlb.globalname
, qGlobalNameType => r_qlb.globalnametype
, qUsedByIvid => r_qlb.usedbyivid
, qcheckstate => r_qlb.checkstate
, qrootversionsonly => r_qlb.rootversionsonly
, qversionlabel => r_qlb.versionlabel
, qbranchirid => r_qlb.branchirid
, qcfgivid => r_qlb.cfgivid
, qchecknotescontain => r_qlb.checknotescontain
, qcheckoutuser => r_qlb.checkoutuser
, qcheckedoutafter => r_qlb.checkedoutafter
, qcheckedoutbefore => r_qlb.checkedoutbefore
, qcheckinuser => r_qlb.checkinuser
, qcheckedinafter => r_qlb.checkedinafter
, qcheckedinbefore => r_qlb.checkedinbefore
, qcreatedby => r_qlb.createdby
, qcreatedafter => r_qlb.createdafter
, qcreatedbefore => r_qlb.createdbefore
, qchangedby => r_qlb.changedby
, qchangedafter => r_qlb.changedafter
, qchangedbefore => r_qlb.changedbefore
, qwastebasket => r_qlb.wastebasket
, p_Run_Mode => 'execute'
);
end; -- loadQueryCriteria
procedure saveQuery
( p_session_id in number
, qName in varchar2 default null -- BASIC
, qCaseSensitive in varchar2 default null
, qWorkareaIrid in varchar2 default null
, qTipVersionsOnly in varchar2 default null
, qFolderIrid in varchar2 default null
, qFolderIvid in varchar2 default null
, qIncludeNested in varchar2 default null
, qElementType in varchar2 default null
, qIvid in varchar2 default null -- ADVANCED
, qIrid in varchar2 default null
, qTxtType in varchar2 default null
, qTxtContains in varchar2 default null
, qFileContains in varchar2 default null
, qDepType in varchar2 default null
, qGlobalName in varchar2 default null
, qGlobalNameType in varchar2 default null
, qUsedByIvid in varchar2 default null
, qCheckState in varchar2 default null -- VERSION
, qRootVersionsOnly in varchar2 default null
, qVersionLabel in varchar2 default null
, qBranchIrid in varchar2 default null
, qCfgIvid in varchar2 default null
, qCheckNotesContain in varchar2 default null
, qCheckOutUser in varchar2 default null
, qCheckedOutAfter in varchar2 default null
, qCheckedOutBefore in varchar2 default null
, qCheckInUser in varchar2 default null
, qCheckedInAfter in varchar2 default null
, qCheckedInBefore in varchar2 default null
, qCheckedInAt in varchar2 default null
, qCreatedBy in varchar2 default null -- AUDIT
, qCreatedAfter in varchar2 default null
, qCreatedBefore in varchar2 default null
, qChangedBy in varchar2 default null
, qChangedAfter in varchar2 default null
, qChangedBefore in varchar2 default null
, qWastebasket in varchar2 default null
, qWhere in varchar2 default null
, qOrderBy in varchar2 default null
)
is
function add
( p_name in varchar2
, p_value in varchar2
) return varchar2
is
begin
return '{'||p_name||'='||p_value||'}';
end; -- add
function get_basic
return varchar2
is
l_basic varchar2(10000);
begin
l_basic:= add('name' , qName)
||add('casesensitive' , qCaseSensitive)
||add('workareairid' , qworkareairid)
||add('tipversionsonly', qTipVersionsOnly)
||add('folderirid' , qFolderIrid)
||add('folderivid' , qFolderIvid)
||add('elementtype' , qElementType)
||add('includenested' , qIncludeNested)
;
return l_basic;
end; -- get_basic
function get_advanced
return varchar2
is
l_advanced varchar2(10000);
begin
l_advanced:= add('ivid' , qIvid)
||add('irid' , qIrid)
||add('txttype' , qTxtType)
||add('txtcontains', qTxtContains)
||add('filecontains' , qFileContains)
||add('where' , qWhere)
||add('deptype' , qDepType)
||add('globalname' , qGlobalName)
||add('globalnametype' , qGlobalNameType)
||add('usedbyivid' , qUsedByIvid)
;
return l_advanced;
end; -- get_advanced
function get_audit
return varchar2
is
l_audit varchar2(10000);
begin
l_audit:= add('createdby' , qCreatedBy)
||add('createdafter' , qCreatedAfter)
||add('createdbefore' , qCreatedBefore)
||add('changedby' , qchangedBy)
||add('changedafter' , qchangedAfter)
||add('changedbefore' , qchangedBefore)
||add('wastebasket' , qWastebasket)
;
return l_audit;
end; -- get_audit
function get_version
return varchar2
is
l_version varchar2(10000);
begin
l_version:= add('checkstate' , qCheckState)
||add('rootversionsonly' , qRootVersionsOnly)
||add('versionlabel' , qVersionLabel)
||add('branchirid' , qBranchIrid)
||add('cfgivid' , qCfgIvid)
||add('checknotescontain' , qCheckNotesContain)
||add('checkoutuser' , qCheckOutUser)
||add('checkedoutafter' , qCheckedOutAfter)
||add('checkedoutbefore' , qCheckedOutBefore)
||add('checkedinbefore' , qCheckedInBefore)
||add('checkedinafter' , qCheckedInAfter)
||add('checkinuser' , qCheckInUser)
;
return l_version;
end; -- get_version
begin
saveQueryToLibrary
( p_session_id => p_session_id
, p_basic => get_basic
, p_advanced => get_advanced
, p_audit => get_audit
, p_version => get_version
);
end; --saveQuery
procedure js_init_textarea
( p_description in varchar2
) is
begin
htp.p
('
');
end; -- js_init_textarea
procedure saveQueryToLibrary
( p_session_id in number
, p_basic in varchar2 default null
, p_advanced in varchar2 default null
, p_audit in varchar2 default null
, p_version in varchar2 default null
, p_category in varchar2 default null
, p_label in varchar2 default null
, p_description in varchar2 default null
, p_published in varchar2 default null
, p_owner in varchar2 default USER
, p_last_date_changed in varchar2 default null
, p_status in varchar2 default null
, p_message in varchar2 default null
) is
cursor c_cat is
select distinct
qlb.category
from odwa_query_library qlb
where qlb.category is not null
order
by qlb.category
;
cursor c_qlb
( b_label in varchar2
) is
select qlb.id
, qlb.owner
from odwa_query_library qlb
where qlb.label = b_label
;
r_qlb c_qlb%rowtype;
l_cat_list varchar2(30000);
l_cat_exists boolean:= false;
begin
-- create session when necessary, refresh session cache, set workarea context
-- from here on reference to odwactxt.get_... functions for any context value
odwactxt.update_context
( p_session_id => p_session_id
, p_package_name => PACKAGE_NAME
, p_procedure_name=> 'saveQuery'
, p_new_request => false
);
htp.htmlopen;
htp.headopen;
cdwp.write_about(package_name, revision_label);
cdwp.include_report_styles;
htp.title(Rob_msg.GetMsg(Rob_msg.DSP336_ODWASLIB_QLIB ,'','','',''));
htp.p('');
odwahelp.js_invoke_help;
js_init_textarea( p_description);
htp.headClose;
htp.bodyOpen
( cattributes=>'BGCOLOR="#FFFFFF" '
||cdwpbase.ifThenElse
( p_description is not null
, ' onLoad="initTextarea()"'
)
);
odwapred.open_palette(p_title => Rob_msg.GetMsg(Rob_msg.CAP225_ODWASLIB_SAVEQRY,'','','',''));
if p_status ='I'
then
odwapred.print_property
( Rob_msg.GetMsg(Rob_msg.CAP127_ODWAINFO_STATUS ,'','','','')
, ''||Rob_msg.GetMsg(Rob_msg.CAP226_ODWASLIB_SUCINS,'','','','')||''
, p_mandatory=> 'Y'
);
elsif p_status ='U'
then
odwapred.print_property
( Rob_msg.GetMsg(Rob_msg.CAP127_ODWAINFO_STATUS ,'','','','')
, ''||Rob_msg.GetMsg(Rob_msg.CAP227_ODWASLIB_SUCUPD,'','','','')||''
, p_mandatory=> 'Y'
);
elsif p_status ='F'
then
odwapred.print_property
( Rob_msg.GetMsg(Rob_msg.CAP127_ODWAINFO_STATUS ,'','','','')
, cdwp.add_images('{warning.gif}')
||''||Rob_msg.GetMsg(Rob_msg.CAP228_ODWASLIB_FAIL,'','','','')||''
, p_mandatory=> 'Y'
);
end if;
if p_message is not null
then
odwapred.print_property
( ''
, p_message
, p_mandatory=> 'N'
);
end if; -- p_message is not null
htp.formopen
( curl => ''
, cmethod => 'POST'
, cattributes => 'NAME="catForm" '
, ctarget => ''
);
-- Categories
l_cat_list:= htf.formselectopen
( cname => 'category_example'
, cprompt => ''
, nsize => 1
, cattributes => 'SINGLE'
||' onChange="document.saveQueryForm.p_category.value=document.catForm.category_example.options[document.saveQueryForm.p_category.value=document.catForm.category_example.selectedIndex].value"'
);
l_cat_list:= l_cat_list
||'