]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/extras/import/import_clean_marc.pl
9d6b216cc4d049c1ee8d312aa22f877270b01dc9
[Evergreen.git] / Open-ILS / src / extras / import / import_clean_marc.pl
1 #!/usr/bin/perl -w
2 use strict;
3 use OpenSRF::EX qw/:try/;
4 use OpenSRF::System;
5 use OpenSRF::Utils::SettingsClient;
6 use OpenILS::Utils::FlatXML;
7 use Time::HiRes;
8 use Getopt::Long;
9
10 my ($config, $userid, $sourceid, $wormize) = ('/pines/conf/bootstrap.conf', 1, 2);
11
12 GetOptions (    
13         "file=s"        => \$config,
14         "wormize"       => \$wormize,
15         "sourceid"      => \$sourceid,
16         "userid=i"      => \$userid,
17 );
18
19 OpenSRF::System->bootstrap_client( config_file => $config );
20 my $st_server = OpenSRF::AppSession->new( 'storage' );
21 my $worm_server = OpenSRF::AppSession->new( 'worm' ) if ($wormize);
22
23 try {
24         $st_server->connect;
25         $worm_server->connect if ($wormize);
26         throw OpenSRF::EX::PANIC ("I can't connect to the storage server!")
27                 unless ($st_server->connected);
28 } catch Error with {
29         die shift;
30 };
31
32
33 while ( my $ns = OpenILS::Utils::FlatXML->new( xml => <STDIN> ) ) {
34
35         my $doc = $ns->xml_to_doc;
36         my $tcn = $doc->documentElement->findvalue( '/*/*[@tag="035"]' );
37         
38         my $req = $st_server->request(
39                 'open-ils.storage.biblio.record_entry.create',
40                         creator         => $userid,
41                         editor          => $userid,
42                         source          => $sourceid,
43                         tcn_value       => $tcn,
44         );
45
46         $req->wait_complete;
47
48         my $resp = $req->recv;
49         unless( $resp->content ) {
50                 throw OpenSRF::EX::ERROR ("Failed to create record for TCN [$tcn]!! -- $resp");
51         }
52
53         my $new_id = $resp->content;
54
55         $req->finish;
56
57         if ($new_id) {
58                 my $nodeset = $ns->xml_to_nodeset;
59                 
60                 $_->{owner_doc} = $new_id for (@$nodeset);
61                 
62                 $req = $st_server->request(
63                         'open-ils.storage.record_node.batch.create',
64                         @$nodeset,
65                 );
66
67                 $req->wait_complete;
68
69                 $resp = $req->recv;
70                 unless( $resp->content ) {
71                         throw OpenSRF::EX::ERROR
72                                 ("Failed to create record_nodes for TCN [$tcn]!! -- $resp");
73                 }
74
75
76                 if ($wormize) {
77                         my $worm_req = $worm_server->request(
78                                 'open-ils.worm.record_data.digest',
79                                 $new_id,
80                         );
81                 }
82
83                 $req->finish;
84         } else {
85                 throw OpenSRF::EX::ERROR ("Failed to create record for TCN [$tcn]!! -- $resp");
86         }
87 }
88
89
90
91
92