From 26b7d3dd5c5983689802e1fa56a52b7ef27c78a2 Mon Sep 17 00:00:00 2001 From: Vinicius Avellar Date: Sun, 23 Jul 2017 20:09:21 -0300 Subject: [PATCH] Change the way ut_file_mapper handle default parameters --- .gitignore | 1 + source/core/ut_file_mapper.pkb | 54 ++++++++++++++++++++-------------- source/core/ut_file_mapper.pks | 20 ++++++------- 3 files changed, 43 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index 8dea1b354..46b48cc7f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff: .idea/ +.vscode/ .sonar/ site/ pages/ diff --git a/source/core/ut_file_mapper.pkb b/source/core/ut_file_mapper.pkb index da53618b3..217a2d6de 100644 --- a/source/core/ut_file_mapper.pkb +++ b/source/core/ut_file_mapper.pkb @@ -50,11 +50,11 @@ create or replace package body ut_file_mapper is function build_file_mappings( a_file_paths ut_varchar2_list, - a_file_to_object_type_mapping ut_key_value_pairs := default_file_to_obj_type_map(), - a_regex_pattern varchar2 := gc_file_mapping_regex, - a_object_owner_subexpression positive := gc_regex_owner_subexpression, - a_object_name_subexpression positive := gc_regex_name_subexpression, - a_object_type_subexpression positive := gc_regex_type_subexpression + a_file_to_object_type_mapping ut_key_value_pairs := null, + a_regex_pattern varchar2 := null, + a_object_owner_subexpression positive := null, + a_object_name_subexpression positive := null, + a_object_type_subexpression positive := null ) return ut_file_mappings is begin return build_file_mappings( @@ -66,43 +66,53 @@ create or replace package body ut_file_mapper is function build_file_mappings( a_object_owner varchar2, a_file_paths ut_varchar2_list, - a_file_to_object_type_mapping ut_key_value_pairs := default_file_to_obj_type_map(), - a_regex_pattern varchar2 := gc_file_mapping_regex, - a_object_owner_subexpression positive := gc_regex_owner_subexpression, - a_object_name_subexpression positive := gc_regex_name_subexpression, - a_object_type_subexpression positive := gc_regex_type_subexpression + a_file_to_object_type_mapping ut_key_value_pairs := null, + a_regex_pattern varchar2 := null, + a_object_owner_subexpression positive := null, + a_object_name_subexpression positive := null, + a_object_type_subexpression positive := null ) return ut_file_mappings is - l_key_values tt_key_values; - l_mappings ut_file_mappings; - l_mapping ut_file_mapping; + l_file_to_object_type_mapping ut_key_value_pairs := coalesce(a_file_to_object_type_mapping, default_file_to_obj_type_map()); + l_regex_pattern varchar2(4000) := coalesce(a_regex_pattern, gc_file_mapping_regex); + l_object_owner_subexpression positive := coalesce(a_object_owner_subexpression, gc_regex_owner_subexpression); + l_object_name_subexpression positive := coalesce(a_object_name_subexpression, gc_regex_name_subexpression); + l_object_type_subexpression positive := coalesce(a_object_type_subexpression, gc_regex_type_subexpression); + + l_key_values tt_key_values; + l_mappings ut_file_mappings; + l_mapping ut_file_mapping; l_object_type_key varchar2(4000); l_object_type varchar2(4000); l_object_owner varchar2(4000); begin if a_file_paths is not null then - l_key_values := to_hash_table(a_file_to_object_type_mapping); + l_key_values := to_hash_table(l_file_to_object_type_mapping); l_mappings := ut_file_mappings(); + for i in 1 .. a_file_paths.count loop - l_object_type_key := upper(regexp_substr(a_file_paths(i), a_regex_pattern,1,1,'i',a_object_type_subexpression)); + l_object_type_key := upper(regexp_substr(a_file_paths(i), l_regex_pattern, 1, 1, 'i', l_object_type_subexpression)); if l_key_values.exists(l_object_type_key) then l_object_type := upper(l_key_values(l_object_type_key)); else l_object_type := null; end if; - l_object_owner := upper(regexp_substr(a_file_paths(i), a_regex_pattern, 1, 1, 'i', a_object_owner_subexpression)); - if l_object_owner is null then - l_object_owner := coalesce( a_object_owner, sys_context('USERENV', 'CURRENT_SCHEMA') ); - end if; + + l_object_owner := coalesce( + upper(a_object_owner), + upper(regexp_substr(a_file_paths(i), l_regex_pattern, 1, 1, 'i', l_object_owner_subexpression)), + sys_context('USERENV', 'CURRENT_SCHEMA')); + l_mapping := ut_file_mapping( - file_name => a_file_paths(i), + file_name => a_file_paths(i), object_owner => l_object_owner, - object_name => upper(regexp_substr(a_file_paths(i), a_regex_pattern, 1, 1, 'i', a_object_name_subexpression)), - object_type => l_object_type + object_name => upper(regexp_substr(a_file_paths(i), l_regex_pattern, 1, 1, 'i', l_object_name_subexpression)), + object_type => l_object_type ); l_mappings.extend(); l_mappings(l_mappings.last) := l_mapping; end loop; end if; + return l_mappings; end; diff --git a/source/core/ut_file_mapper.pks b/source/core/ut_file_mapper.pks index 46f8f7d6d..f8523688e 100644 --- a/source/core/ut_file_mapper.pks +++ b/source/core/ut_file_mapper.pks @@ -25,21 +25,21 @@ create or replace package ut_file_mapper authid current_user is function build_file_mappings( a_file_paths ut_varchar2_list, - a_file_to_object_type_mapping ut_key_value_pairs := default_file_to_obj_type_map(), - a_regex_pattern varchar2 := gc_file_mapping_regex, - a_object_owner_subexpression positive := gc_regex_owner_subexpression, - a_object_name_subexpression positive := gc_regex_name_subexpression, - a_object_type_subexpression positive := gc_regex_type_subexpression + a_file_to_object_type_mapping ut_key_value_pairs := null, + a_regex_pattern varchar2 := null, + a_object_owner_subexpression positive := null, + a_object_name_subexpression positive := null, + a_object_type_subexpression positive := null ) return ut_file_mappings; function build_file_mappings( a_object_owner varchar2, a_file_paths ut_varchar2_list, - a_file_to_object_type_mapping ut_key_value_pairs := default_file_to_obj_type_map(), - a_regex_pattern varchar2 := gc_file_mapping_regex, - a_object_owner_subexpression positive := gc_regex_owner_subexpression, - a_object_name_subexpression positive := gc_regex_name_subexpression, - a_object_type_subexpression positive := gc_regex_type_subexpression + a_file_to_object_type_mapping ut_key_value_pairs := null, + a_regex_pattern varchar2 := null, + a_object_owner_subexpression positive := null, + a_object_name_subexpression positive := null, + a_object_type_subexpression positive := null ) return ut_file_mappings;