From f1addaff6644672c83d786733231e44dd889d029 Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Fri, 10 Mar 2023 16:22:54 +0100 Subject: [PATCH] TT#56913 Customer Exporter: .csv config options config options for .csv exports have to be exposable in bulk-processor .cfg files, ie. eol sep_char quote_char escape_char Change-Id: I805f11cc4d11f626bb74638680db4804488f1555 --- .../Projects/ETL/Customer/Settings.pm | 22 +++++++++++++++++++ .../Projects/ETL/Customer/settings.cfg | 5 ++++- lib/NGCP/BulkProcessor/SqlConnectors/CSVDB.pm | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/NGCP/BulkProcessor/Projects/ETL/Customer/Settings.pm b/lib/NGCP/BulkProcessor/Projects/ETL/Customer/Settings.pm index 2f4db78..7e75b47 100644 --- a/lib/NGCP/BulkProcessor/Projects/ETL/Customer/Settings.pm +++ b/lib/NGCP/BulkProcessor/Projects/ETL/Customer/Settings.pm @@ -14,6 +14,7 @@ use JSON -support_by_pp, -no_export; my $input_ref = shift; return JSON::to_json($input_ref, { allow_nonref => 1, allow_blessed => 1, convert_blessed => 1, pretty => 1, as_nonblessed => 1 }); }; +use NGCP::BulkProcessor::SqlConnectors::CSVDB qw($default_csv_config); use NGCP::BulkProcessor::Globals qw( $working_path @@ -246,12 +247,33 @@ sub update_settings { $result = 0; } + $csv_all_expected_fields = $data->{csv_sep_char} if exists $data->{csv_all_expected_fields}; + + $default_csv_config = { + eol => "\r\n", + sep_char => ';', + quote_char => '"', + escape_char => '"', + }; + $default_csv_config->{eol} = unescape($data->{csv_eol}) if exists $data->{csv_eol}; + $default_csv_config->{sep_char} = unescape($data->{csv_sep_char}) if exists $data->{csv_sep_char}; + $default_csv_config->{quote_char} = unescape($data->{csv_quote_char}) if exists $data->{csv_quote_char}; + $default_csv_config->{escape_char} = unescape($data->{csv_escape_char}) if exists $data->{csv_escape_char}; + return $result; } return 0; } +sub unescape { + my $input = shift; + $input =~ s/\\t/\t/g; + $input =~ s/\\n/\n/g; + $input =~ s/\\r/\r/g; + return $input; +} + sub run_dao_method { my $method_name = 'NGCP::BulkProcessor::Dao::' . $mr . '::' . shift; load_module($method_name); diff --git a/lib/NGCP/BulkProcessor/Projects/ETL/Customer/settings.cfg b/lib/NGCP/BulkProcessor/Projects/ETL/Customer/settings.cfg index 51ee43b..5b2f6fa 100644 --- a/lib/NGCP/BulkProcessor/Projects/ETL/Customer/settings.cfg +++ b/lib/NGCP/BulkProcessor/Projects/ETL/Customer/settings.cfg @@ -16,7 +16,10 @@ graph_fields_mode = whitelist csv_all_expected_fields = 0 - +#csv_eol = +csv_sep_char = , +csv_quote_char} = " +csv_escape_char} = " diff --git a/lib/NGCP/BulkProcessor/SqlConnectors/CSVDB.pm b/lib/NGCP/BulkProcessor/SqlConnectors/CSVDB.pm index 6a24d99..5db0ae3 100644 --- a/lib/NGCP/BulkProcessor/SqlConnectors/CSVDB.pm +++ b/lib/NGCP/BulkProcessor/SqlConnectors/CSVDB.pm @@ -66,7 +66,7 @@ our @EXPORT_OK = qw( our $csvextension = '.csv'; -my $default_csv_config = { eol => "\r\n", +our $default_csv_config = { eol => "\r\n", sep_char => ';', quote_char => '"', escape_char => '"',