# TGdq.cfg: Manages Data Query Target Definitions # # $Id: TGdq.cfg,v 1.11 2015/08/28 07:35:35 RDA Exp $ # ARCS: $Header: /home/cvs/cvs/RDA_8/src/scripting/lib/collect/RDA/TGdq.cfg,v 1.11 2015/08/28 07:35:35 RDA Exp $ # # Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. # # Change History # 20150828 MSC Add N_ATTEMPTS management. #------------------------------------------------------------------------------ # Module definition #------------------------------------------------------------------------------ dsc='Manages Data Query Target Definitions' var=select_command exe=sdcl { "macro gen_title "{var ($tgt) = @arg " " var $ttl = concat('Using ',$tgt->get_first('T_USER','/')) " if $tgt->get_first('B_SYSDBA') " var $ttl = concat($ttl,' as SYSDBA') " if compare('ne',${T_TMP_TYPE},$typ = lc(${T_TYPE})) " var $ttl = concat($ttl,' for ',join('/',$typ,${T_TMP_TYPE},${T_TMP_SID})) " elsif $tgt->get_first('T_SOURCE') " var $ttl = concat($ttl,' at ',last) " else " var $ttl = concat($ttl,' locally') " return $ttl "} " "macro is_local "{if or(${I_DATABASE},\ " ${I_ORACLE_BASE},\ " ${I_ORACLE_HOME},\ " ${D_ORACLE_BASE},\ " ${D_ORACLE_HOME},\ " ${T_ORACLE_HOME},\ " ${RUN.CLASS.SQ.I_DATABASE},\ " ${RUN.CLASS.DB.I_ORACLE_BASE},\ " ${RUN.CLASS.DB.I_ORACLE_HOME},\ " ${RUN.CLASS.OB.D_ORACLE_BASE},\ " ${RUN.CLASS.OH.D_ORACLE_HOME},\ " ${RUN.CLASS.OH.T_ORACLE_HOME}) " return true " if match(${T_USER},'@') " return false " if match(${T_SOURCE},':|^\(DESCRIPTION=\(.*\)\)') " return false " if !${CUR.B_NO_DIALOG} " return true " if compare('eq',${T_USER},'/') " return true " if ?${RUN.CLASS.OH.D_ORACLE_HOME} " return true " if ${B_MISSING_BASE} " return false " if ?${RUN.CLASS.OH.D_ORACLE_BASE} " return true " return false "} " "macro is_unique "{var ($cur,$ttl) = @arg " " loop $itm ($[COL]->get_items('DQ')) " {if and(compare('eq',$ttl,$itm->get_first('T_TITLE')),\ " compare('ne',$cur,$itm->get_path)) " return false " } " return true "} } #------------------------------------------------------------------------------ # Setting definitions #------------------------------------------------------------------------------ [select_command] typ=T dft=${W_ADMIN_COMMAND} dsc='Select the administration action' nam=- var=define:do_define:\ edit: do_edit:\ select:do_select #------------------------------------------------------------------------------ # Define a query target #------------------------------------------------------------------------------ [do_define] typ=B dft=${T_ADMIN_VALUE} nam=- var=true:W_CLASS,B_DEDICATED,T_TYPE,T_SOURCE,check_type exe=sdcl { "var $cnt = undef } [W_CLASS] typ=T def=${T_ADMIN_VALUE} dft='DQ' dsc='Target type' [B_DEDICATED] typ=B def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DQ.B_DEDICATED} dsc='Is it a dedicated target?' opt=true [T_TYPE] typ=T def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DQ.T_TYPE:'oracle'} dsc='Data source type' err='Invalid type' inp='Enter the data source type' ref='^(\+|\-|\w+)$' val=E [T_SOURCE] typ=T def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DQ.T_SOURCE:\ check(lc(${T_TYPE}),'^(oracle|\+)$',${T_ORACLE_SID:\ ${RUN.CLASS.DQ.T_ORACLE_SID}})} dsc='Data source identifier' inp='Enter the data source identifier' [check_type] typ=T def=${T_ADMIN_VALUE} dsc='Determine how to get the connection description' nam=-T_TMP_TYPE var=oracle:T_USER,need_sysdba,T_TITLE,N_ATTEMPTS,B_LOCAL:\ T_USER,need_sysdba,T_TITLE,N_ATTEMPTS exe=sdcl { "var (${AUX.dft},${T_TMP_SID/T}) = normDbSource(${T_TYPE},${T_SOURCE}) "if compare('eq',lc(${T_TYPE}),'jdbc') " var ${I_DRIVER:'Associated data source for a database connection'} = \ " ${RUN.CLASS.DQ.I_DRIVER:${I_DRIVER:${CTX.I_DRIVER}}} } [T_USER] typ=T def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DQ.T_USER:check(${T_TMP_TYPE},'oracle','system')} dsc='User to connect to the data source' inp='Enter the user for connecting to the data source' [need_sysdba] typ=B def=${T_ADMIN_VALUE} dsc='Indicate that T_USER will connect as SYSDBA' nam=B_SYSDBA exe=sdcl { "if member(${T_TMP_TYPE},'db2','sqlserver') " var ${AUX.dft} = false "else " var (${AUX.dft},${AUX.inp}) = (\ " ${RUN.CLASS.DQ.B_SYSDBA:check(${T_USER},'^\/',true,${B_SYSDBA})},\ " "Is '${T_USER}' a SYSDBA user (will connect as SYSDBA) (Y/N)?") } [T_TITLE] typ=T def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DQ.T_TITLE:gen_title(${CUR.O_MODULE})} dsc='Data Query target description' err='Duplicate description' inp='Enter the query target description' ref=is_unique(${CUR.K_MODULE},last) val=E [N_ATTEMPTS] typ=N def=${T_ADMIN_VALUE} dft=${RUN.CLASS.SQ.N_ATTEMPTS} dsc='Maximum number of SQL execution attempts' err='The number of attempts must be a positive integer' opt=true ref='I[0,[' val=F [B_LOCAL] typ=B def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DQ.B_LOCAL:is_local()} dsc='Is a local connection required?' inp='Is a local connection required (Y/N)?' var=true:I_DATABASE [I_DATABASE] typ=I bef="Select a database target for '${T_SOURCE}':" cls='DB' def=${T_ADMIN_VALUE} dft=(${RUN.CLASS.DQ.I_DATABASE},findItem('DB','T_ORACLE_SID',${T_SOURCE})) dsc='Oracle database target' inp='Specify the Oracle database' exe=sdcl { "if ${RUN.CLASS.DB.T_ORACLE_SID/M} " var ${RUN.CLASS.DB.T_ORACLE_SID} = ${T_SOURCE} } #------------------------------------------------------------------------------ # Edit a query target #------------------------------------------------------------------------------ [do_edit] typ=M add=('R|Return to the previous menu|-|-') aft='\040' bef='Edit a query target:' cas=false dft=(@{T_ADMIN_VALUE}) dsc='Edit a query target' err='Invalid entry' inp='Enter the item number or the action letter.' nam=-T_ADMIN_VALUE val=E var=-::do_define exe=sdcl { "# Get the target list "if !?$cnt "{keep $cnt,@itm,@rsp " var ($cnt,@itm,@rsp) = (0) " loop $itm ($[COL]->get_items('DQ')) " {var $pth = concat('COL/',$itm->get_path) " call push(@itm,incr($cnt),$itm->get_first('T_TITLE',$pth)) " call push(@rsp,$cnt,$pth) " } "} " "# Determine the menu items and responses "var ${AUX.itm} = [@itm] "var ${AUX.rsp} = [@rsp] } #------------------------------------------------------------------------------ # Select a query target #------------------------------------------------------------------------------ [do_select] typ=M aft='\040' alt=add_target,do_define,do_select ask=true cas=false dft=(@{T_ADMIN_VALUE}) dsc='Select a query' nam=-T_ADMIN_VALUE val=E var=+:add_target,do_define,do_select:\ -:do_edit,do_select:\ *:all_targets:\ .:no_targets exe=sdcl { "# Get the target list "if !?$cnt "{keep $cnt,@add,@all,@itm,@mnu,@rsp " " var ($cnt,@all,@itm,@mnu,@rsp) = (0) " if ${B_ADMIN_END} " {loop $itm ($[COL]->get_items('DQ')) " {next $itm->get_first('B_DEDICATED') " var $pth = concat('COL/',$itm->get_path) " call push(@itm,incr($cnt),$itm->get_first('T_TITLE',$pth)) " call push(@rsp,$cnt,$pth) " call push(@all,$pth) " call push(@mnu,$cnt) " } " } " else " {loop $itm ($[COL]->get_items('DQ')) " {var $pth = concat('COL/',$itm->get_path) " call push(@itm,incr($cnt),$itm->get_first('T_TITLE',$pth)) " call push(@rsp,$cnt,$pth) " next $itm->get_first('B_DEDICATED') " call push(@mnu,$cnt) " } " } "} " "# Determine the menu items and responses "var @add = ('D|Define a new query target|+|-') "if $cnt " call push(@add,'E|Edit a query target|-|-') "if ${B_ADMIN_END} "{if $cnt " call unshift(@add,'A|All query targets|*|-') " call push(@add,'N|No query targets|.|-') " var ${AUX.bef} = ${T_ADMIN_BEFORE:'Select a query target list:'} " var ${AUX.opt} = false " var ${AUX.pck} = true "} "else "{var ${AUX.bef} = ${T_ADMIN_BEFORE:'Select a query target:'} " var ${AUX.err} = 'Invalid entry' " var ${AUX.inp} = 'Enter the item number or the action letter.' " var ${AUX.opt} = cond($cnt,false,true) "} "var ${AUX.add} = [@add] "var ${AUX.itm} = [@itm] "var ${AUX.rsp} = [@rsp] } [add_target] typ=T dft="COL/${NXT.DQ:${K_ADMIN_PARENT}}" dsc='Determine the identifier for a new target' nam=-T_ADMIN_VALUE [all_targets] typ=T dft=(@all) dsc='Select all targets' end='' nam=-T_ADMIN_VALUE [no_targets] typ=T dft=() dsc='Select no targets' end='' nam=-T_ADMIN_VALUE