From e9e97f62b62f82401b19b18e9a51f92e4eebdf73 Mon Sep 17 00:00:00 2001 From: erickson Date: Fri, 30 Apr 2010 15:43:10 +0000 Subject: [PATCH] Added global_flag and support for using the internal record identifier as the tcn_value for newly imported records TODO: add support to vandelay stored import procedures git-svn-id: svn://svn.open-ils.org/ILS/trunk@16361 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../OpenILS/Application/Cat/BibCommon.pm | 26 +++++++++++++++++-- Open-ILS/src/sql/Pg/002.schema.config.sql | 2 +- Open-ILS/src/sql/Pg/950.data.seed-values.sql | 13 ++++++++++ .../0249.data.id_as_tcn_global_flag.sql | 16 ++++++++++++ 4 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 Open-ILS/src/sql/Pg/upgrade/0249.data.id_as_tcn_global_flag.sql diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Cat/BibCommon.pm b/Open-ILS/src/perlmods/OpenILS/Application/Cat/BibCommon.pm index 3dd3d32118..c19c5b952b 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Cat/BibCommon.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Cat/BibCommon.pm @@ -78,7 +78,10 @@ sub biblio_record_xml_import { my( $evt, $tcn, $tcn_source, $marcdoc ); - if( $auto_tcn ) { + my $use_id = $e->retrieve_config_global_flag('cat.bib.use_id_for_tcn'); + $use_id = ($use_id and $U->is_true($use_id->enabled)); + + if( $auto_tcn or $use_id ) { # auto_tcn forces a blank TCN value so the DB will have to generate one for us $marcdoc = __make_marc_doc($xml); } else { @@ -101,8 +104,27 @@ sub biblio_record_xml_import { $record->marc($U->entityize($marcdoc->documentElement->toString)); $record = $e->create_biblio_record_entry($record) or return $e->die_event; - $logger->info("marc create/import created new record ".$record->id); + if($use_id) { + my $existing = $e->search_biblio_record_entry( + { + tcn_value => $record->id, + deleted => 'f' + }, { + idlist => 1 + } + ); + + if(@$existing) { + # leave the auto-generated tcn_value in place + $logger->warn("Collision using internal ID as tcn_value for record " . $record->id); + } else { + $record->tcn_value($record->id); + $e->update_biblio_record_entry($record) or return $e->die_event; + } + } + + $logger->info("marc create/import created new record ".$record->id); return $record; } diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index 94c61c784a..6e69762522 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -65,7 +65,7 @@ CREATE TABLE config.upgrade_log ( install_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() ); -INSERT INTO config.upgrade_log (version) VALUES ('0248'); -- miker +INSERT INTO config.upgrade_log (version) VALUES ('0249'); -- berick CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql index e20a41bb5e..0fd9936d65 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -4716,3 +4716,16 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) 'bool' ); +INSERT INTO config.global_flag (name, label) -- defaults to enabled=FALSE + VALUES ( + 'cat.bib.use_id_for_tcn', + oils_i18n_gettext( + 'cat.bib.use_id_for_tcn', + 'Cat: Use Internal ID for TCN Value', + 'cgf', + 'label' + ) + ); + + + diff --git a/Open-ILS/src/sql/Pg/upgrade/0249.data.id_as_tcn_global_flag.sql b/Open-ILS/src/sql/Pg/upgrade/0249.data.id_as_tcn_global_flag.sql new file mode 100644 index 0000000000..de7b7de61f --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0249.data.id_as_tcn_global_flag.sql @@ -0,0 +1,16 @@ +BEGIN; + +INSERT INTO config.upgrade_log (version) VALUES ('0249'); + +INSERT INTO config.global_flag (name, label) -- defaults to enabled=FALSE + VALUES ( + 'cat.bib.use_id_for_tcn', + oils_i18n_gettext( + 'cat.bib.use_id_for_tcn', + 'Cat: Use Internal ID for TCN Value', + 'cgf', + 'label' + ) + ); + +COMMIT; -- 2.43.2