########################################################################## # # audioDBBuildproc.pm -- # A component of the Greenstone digital library software # from the New Zealand Digital Library Project at the # University of Waikato, New Zealand. # # Copyright (C) 1999 New Zealand Digital Library Project # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # ########################################################################### # This document processor outputs a document for indexing (should be # implemented by subclass) and storing in the database package audioDBBuildproc; use strict; no strict 'refs'; # allow filehandles to be variables and viceversa use util; use extrabuildproc; BEGIN { @audioDBBuildproc::ISA = ('extrabuildproc'); } sub new() { my $class = shift @_; my $self = new extrabuildproc (@_); return bless $self, $class; } sub textedit { my $self = shift (@_); my ($doc_obj,$file,$mode) = @_; # Code written on the assumption that that audioDB does a replace # operation when presented with a docid that already extis. # => don't need to do anything special to distinguish between # a mode of "add" and "update" my $outhandle = $self->{'outhandle'}; my $source_dir = $self->{'source_dir'}; # typically the archives dir my $build_dir = $self->{'build_dir'}; # full path to adb database my $adb_filename = &util::filename_cat($build_dir, "audioDB", "lsh-features.adb"); # get doc id my $doc_oid = $doc_obj->get_OID(); # map to assoc dir my $top_section = $doc_obj->get_top_section(); my $assoc_file = $doc_obj->get_metadata_element ($top_section,"assocfilepath"); my $assoc_filename = &util::filename_cat($source_dir,$assoc_file); my $chr12_filename = &util::filename_cat($assoc_filename,"doc.chr12"); my $powerlog_filename = &util::filename_cat($assoc_filename,"doc.power"); print $outhandle " Inserting features for $doc_oid\n"; my $cmd = "audioDB -d \"$adb_filename\" -I -k \"$doc_oid\" -f \"$chr12_filename\" -w \"$powerlog_filename\""; my $status = system($cmd); if ($status != 0) { print STDERR "Error: failed to run:\n $cmd\n$!\n"; } } sub text { my $self = shift (@_); my ($doc_obj,$file) = @_; $self->textedit($doc_obj,$file,"add"); } sub textreindex { my $self = shift @_; my ($doc_obj,$file) = @_; $self->textedit($doc_obj,$file,"update"); } sub textdelete { my $self = shift @_; my ($doc_obj,$file) = @_; print STDERR "Warning: audioDB command-line does not currently support delete operation\n"; # $self->textedit($doc_obj,$file,"delete"); } 1;