Bug 11081: Port Koha::Contrib::Tamil indexer into Koha code base
[koha.git] / Koha / Indexer / RecordWriter.pm
1 package Koha::Indexer::RecordWriter;
2 use Moose;
3
4 with 'MooseX::RW::Writer::File';
5
6
7 use Carp;
8 use MARC::Batch;
9 use MARC::Record;
10 use MARC::File::XML;
11
12
13 # Is XML Stream a valid marcxml
14 # By default no => no <collection> </collection>
15 has valid => (
16     is => 'rw',
17     isa => 'Bool',
18     default => 0,
19 );
20
21
22 sub begin {
23     my $self = shift;
24     if ( $self->valid ) {
25         my $fh = $self->fh;
26         print $fh '<?xml version="1.0" encoding="UTF-8"?>', "\n", '<collection>', "\n";
27     }
28 }
29
30
31 sub end {
32     my $self = shift;
33     my $fh = $self->fh;
34     if ( $self->valid ) {
35         print $fh '</collection>', "\n";
36     }
37     $fh->flush();
38 }
39
40
41
42 #
43 # Sent record is rather a MARC::Record object or an marcxml string
44 #
45 sub write {
46     my ($self, $record) = @_;
47
48     $self->count( $self->count + 1 );
49
50     my $fh  = $self->fh;
51     my $xml = ref($record) eq 'MARC::Record'
52               ? $record->as_xml_record() : $record;
53     $xml =~ s/<\?xml version="1.0" encoding="UTF-8"\?>\n//g if $self->valid;
54     print $fh $xml;
55 }
56
57 __PACKAGE__->meta->make_immutable;
58
59 1;