Bug 9498 - Update encoding for Norwegian sample Z39.50 servers
[koha.git] / misc / commit_file.pl
blob9c1089ad2c9841e84cceb29b95920e225d63cde8
1 #!/usr/bin/perl
3 use strict;
4 use warnings;
5 BEGIN {
6 # find Koha's Perl modules
7 # test carefully before changing this
8 use FindBin;
9 eval { require "$FindBin::Bin/kohalib.pl" };
12 use C4::Context;
13 use C4::ImportBatch;
14 use Getopt::Long;
16 $| = 1;
18 # command-line parameters
19 my $batch_number = "";
20 my $list_batches = 0;
21 my $revert = 0;
22 my $want_help = 0;
24 my $result = GetOptions(
25 'batch-number:s' => \$batch_number,
26 'list-batches' => \$list_batches,
27 'revert' => \$revert,
28 'h|help' => \$want_help
31 if ($want_help or (not $batch_number and not $list_batches)) {
32 print_usage();
33 exit 0;
36 if ($list_batches) {
37 list_batches();
38 exit 0;
41 # FIXME dummy user so that logging won't fail
42 # in future, probably should tie to a real user account
43 C4::Context->set_userenv(0, 'batch', 0, 'batch', 'batch', 'batch', 'batch', 'batch');
45 my $dbh = C4::Context->dbh;
46 $dbh->{AutoCommit} = 0;
47 if ($batch_number =~ /^\d+$/ and $batch_number > 0) {
48 my $batch = GetImportBatch($batch_number);
49 die "$0: import batch $batch_number does not exist in database\n" unless defined $batch;
50 if ($revert) {
51 die "$0: import batch $batch_number status is '" . $batch->{'import_status'} . "', and therefore cannot be imported\n"
52 unless $batch->{'import_status'} eq "imported";
53 revert_batch($batch_number);
54 } else {
55 die "$0: import batch $batch_number status is '" . $batch->{'import_status'} . "', and therefore cannot be imported\n"
56 unless $batch->{'import_status'} eq "staged" or $batch->{'import_status'} eq "reverted";
57 process_batch($batch_number);
59 $dbh->commit();
60 } else {
61 die "$0: please specify a numeric batch ID\n";
64 exit 0;
66 sub list_batches {
67 my $results = GetAllImportBatches();
68 print sprintf("%5.5s %-25.25s %-25.25s %-10.10s\n", "#", "File name", "Batch comments", "Status");
69 print '-' x 5, ' ' , '-' x 25, ' ', '-' x 25, ' ', '-' x 10, "\n" ;
70 foreach my $batch (@{ $results}) {
71 if ($batch->{'import_status'} eq "staged" or $batch->{'import_status'} eq "reverted") {
72 print sprintf("%5.5s %-25.25s %-25.25s %-10.10s\n",
73 $batch->{'import_batch_id'},
74 $batch->{'file_name'},
75 $batch->{'comments'},
76 $batch->{'import_status'});
81 sub process_batch {
82 my ($import_batch_id) = @_;
84 print "... importing MARC records -- please wait\n";
85 my ($num_added, $num_updated, $num_items_added, $num_items_errored, $num_ignored) =
86 BatchCommitRecords($import_batch_id, '', 100, \&print_progress_and_commit);
87 print "... finished importing MARC records\n";
89 print <<_SUMMARY_;
91 MARC record import report
92 ----------------------------------------
93 Batch number: $import_batch_id
94 Number of new records added: $num_added
95 Number of records replaced: $num_updated
96 Number of records ignored: $num_ignored
97 Number of items added: $num_items_added
98 Number of items ignored: $num_items_errored
100 Note: an item is ignored if its barcode is a
101 duplicate of one already in the database.
102 _SUMMARY_
105 sub revert_batch {
106 my ($import_batch_id) = @_;
108 print "... reverting batch -- please wait\n";
109 my ($num_deleted, $num_errors, $num_reverted, $num_items_deleted, $num_ignored) =
110 BatchRevertRecords($import_batch_id, 100, \&print_progress_and_commit);
111 print "... finished reverting batch\n";
113 print <<_SUMMARY_;
115 MARC record import report
116 ----------------------------------------
117 Batch number: $import_batch_id
118 Number of records deleted: $num_deleted
119 Number of errors: $num_errors
120 Number of records reverted: $num_reverted
121 Number of records ignored: $num_ignored
122 Number of items added: $num_items_deleted
124 _SUMMARY_
128 sub print_progress_and_commit {
129 my $recs = shift;
130 print "... processed $recs records\n";
131 $dbh->commit();
134 sub print_usage {
135 print <<_USAGE_;
136 $0: import a batch of staged MARC records into database.
138 Use this batch job to complete the import of a batch of
139 MARC records that was staged either by the batch job
140 stage_file.pl or by the Koha Tools option
141 "Stage MARC Records for Import".
143 Parameters:
144 --batch-number <#> number of the record batch
145 to import
146 --list-batches print a list of record batches
147 available to commit
148 --revert revert a batch instead of importing it
149 --help or -h show this message.
150 _USAGE_