$Koha::Contrib::Tamil::Indexer::VERSION
=
'0.064'
;
use
5.010;
has
koha
=> (
is
=>
'rw'
,
isa
=>
'Koha::Contrib::Tamil::Koha'
,
required
=> 0,
traits
=> [
'NoGetopt'
],
);
has
conf
=> (
is
=>
'rw'
,
isa
=>
'Str'
,
trigger
=>
sub
{
my
(
$self
,
$file
) =
@_
;
$self
->koha( Koha::Contrib::Tamil::Koha->new(
conf_file
=>
$file
) );
return
$file
;
},
);
has
source
=> (
is
=>
'rw'
,
isa
=>
'Koha::RecordType'
,
default
=>
'biblio'
);
has
select
=> (
is
=>
'rw'
,
isa
=>
'Koha::RecordSelect'
,
required
=> 1,
default
=>
'all'
,
);
has
directory
=> (
is
=>
'rw'
,
isa
=>
'Str'
,
default
=>
'./koha-index'
,
);
has
keep
=> (
is
=>
'rw'
,
isa
=>
'Bool'
,
default
=> 0 );
has
verbose
=> (
is
=>
'rw'
,
isa
=>
'Bool'
,
default
=> 0 );
has
help
=> (
is
=>
'rw'
,
isa
=>
'Bool'
,
default
=> 0,
traits
=> [
'NoGetopt'
],
);
has
blocking
=> (
is
=>
'rw'
,
isa
=>
'Bool'
,
default
=> 0,
traits
=> [
'NoGetopt'
],
);
sub
run {
my
$self
=
shift
;
my
$is_full_indexing
=
$self
->
select
=~ /all/i;
my
$is_biblio_indexing
=
$self
->source =~ /biblio/i;
$self
->koha( Koha::Contrib::Tamil::Koha->new() )
unless
$self
->koha;
unless
( -d
$self
->directory ) {
mkdir
$self
->directory
or
die
"Unable to create directory: "
.
$self
->directory;
}
my
$from_dir
=
$self
->directory .
"/"
.
$self
->source;
mkdir
$from_dir
;
for
my
$dir
( (
"$from_dir/update"
,
"$from_dir/delete"
) ) {
rmtree(
$dir
)
if
-d
$dir
;
mkdir
$dir
;
}
my
$is_dom
=
$self
->source eq
'biblio'
?
'zebra_bib_index_mode'
:
'zebra_auth_index_mode'
;
$is_dom
=
$self
->koha->conf->{config}->{
$is_dom
} ||
''
;
$is_dom
=
$is_dom
=~ /grs/i ? 0 : 1;
print
__
"Exporting records to update"
,
"\n"
if
$self
->verbose;
my
$exporter
= AnyEvent::Processor::Conversion->new(
reader
=> Koha::Contrib::Tamil::RecordReader->new(
koha
=>
$self
->koha,
source
=>
$self
->source,
select
=>
$is_full_indexing
?
'all'
:
'queue_update'
,
xml
=>
'1'
),
writer
=> Koha::Contrib::Tamil::RecordWriter::File::Marcxml->new(
fh
=> IO::File->new(
"$from_dir/update/records"
,
'>:encoding(utf8)'
),
valid
=>
$is_dom
),
blocking
=>
$self
->blocking,
verbose
=>
$self
->verbose,
);
$exporter
->run();
if
( !
$is_full_indexing
) {
print
__
"Exporting records to delete"
,
"\n"
if
$self
->verbose;
$exporter
= AnyEvent::Processor::Conversion->new(
reader
=> Koha::Contrib::Tamil::RecordReader->new(
koha
=>
$self
->koha,
source
=>
$self
->source,
select
=>
'queue_delete'
,
xml
=>
'1'
),
writer
=> Koha::Contrib::Tamil::RecordWriter::File::Marcxml->new(
fh
=> IO::File->new(
"$from_dir/delete/records"
,
'>:utf8'
),
valid
=>
$is_dom
),
blocking
=>
$self
->blocking,
verbose
=>
$self
->verbose,
);
$exporter
->run();
}
my
$cmd
;
my
$zconfig
=
$self
->koha->conf->{server}->{
$is_biblio_indexing
?
'biblioserver'
:
'authorityserver'
}->{config};
my
$db_name
=
$is_biblio_indexing
?
'biblios'
:
'authorities'
;
my
$cmd_base
=
"zebraidx -c "
.
$zconfig
;
$cmd_base
.=
" -n"
if
$is_full_indexing
;
$cmd_base
.=
$self
->verbose ?
" -v warning,log"
:
" -v none"
;
$cmd_base
.=
" -g marcxml"
;
$cmd_base
.=
" -d $db_name"
;
if
(
$is_full_indexing
) {
$cmd
=
"$cmd_base init"
;
print
"$cmd\n"
if
$self
->verbose;
system
(
$cmd
);
}
$cmd
=
"$cmd_base update $from_dir/update"
;
print
"$cmd\n"
if
$self
->verbose;
system
(
$cmd
);
if
( !
$is_full_indexing
) {
$cmd
=
"$cmd_base adelete $from_dir/delete"
;
print
"$cmd\n"
if
$self
->verbose;
system
(
$cmd
);
my
$cmd
=
"$cmd_base commit"
;
print
"$cmd\n"
if
$self
->verbose;
system
(
$cmd
);
}
rmtree(
$self
->directory )
unless
$self
->keep;
}
no
Moose;
__PACKAGE__->meta->make_immutable;