Added global_flag and support for using the internal record
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 30 Apr 2010 15:43:10 +0000 (15:43 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 30 Apr 2010 15:43:10 +0000 (15:43 +0000)
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

Open-ILS/src/perlmods/OpenILS/Application/Cat/BibCommon.pm
Open-ILS/src/sql/Pg/002.schema.config.sql
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/0249.data.id_as_tcn_global_flag.sql [new file with mode: 0644]

index 3dd3d32..c19c5b9 100644 (file)
@@ -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;
 }
 
index 94c61c7..6e69762 100644 (file)
@@ -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,
index e20a41b..0fd9936 100644 (file)
@@ -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 (file)
index 0000000..de7b7de
--- /dev/null
@@ -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;