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 ||'