Changeset 14927


Ignore:
Timestamp:
2007-12-20T17:45:11+13:00 (14 years ago)
Author:
davidb
Message:

Exporting as GreenstoneMETS and FedoraMETS changed tobe separate plugout

Location:
gsdl/trunk/perllib/plugouts
Files:
2 added
1 edited

Legend:

Unmodified
Added
Removed
  • gsdl/trunk/perllib/plugouts/METSPlugout.pm

    r13172 r14927  
    2727
    2828use strict;
     29no strict 'subs';
    2930no strict 'refs';
     31
     32use gsprintf 'gsprintf';
    3033
    3134eval {require bytes};
     
    3942
    4043my $arguments = [
    41       { 'name' => "saveas_version",
    42     'desc' => "{METSPlugout.version}",
    43     'type' => "string",
    44         'deft' => 'greenstone',
    45     'reqd' => "yes",   
    46     'hiddengli' => "no"},
    4744      { 'name' => "xslt_txt",
    4845    'desc' => "{METSPlugout.xslt_txt}",
     
    5956my $options = { 'name'     => "METSPlugout",
    6057        'desc'     => "{METSPlugout.desc}",
    61         'abstract' => "no",
     58        'abstract' => "yes",
    6259        'inherits' => "yes",
    6360            'args'     => $arguments
     
    7572    my $self = (defined $hashArgOptLists)? new BasPlugout($plugoutlist,$inputargs,$hashArgOptLists): new BasPlugout($plugoutlist,$inputargs);
    7673
    77  
    78    
     74   
    7975   return bless $self, $class;
    8076}
    8177
    82 sub saveas {
     78
     79sub saveas_doctxt
     80{
    8381    my $self = shift (@_);
    84     my ($doc_obj,$doc_dir) = @_;
    85     my $version = $self->{'saveas_version'};
    86 
    87     $self->process_assoc_files ($doc_obj, $doc_dir, '');
    88 
    89     my $output_dir = $self->get_output_dir();
    90     &util::mk_all_dir ($output_dir) unless -e $output_dir;
    91  
    92     my $working_dir = &util::filename_cat ($output_dir, $doc_dir);             
    93    
    94     &util::mk_all_dir ($working_dir) unless -e $working_dir;
    95 
    96     #########################
    97     # save the text file
    98     #########################
     82    my ($doc_obj,$working_dir) = @_;
     83
     84    my $is_recursive = 1;
     85
    9986    my $doc_txt_file = &util::filename_cat ($working_dir,"doctxt.xml");
    10087   
     
    11198
    11299    $self->output_xml_header($outhandler);
    113     $self->output_txt_section($outhandler,$doc_obj, $doc_obj->get_top_section());
     100    my $section = $doc_obj->get_top_section();
     101    $self->output_txt_section($outhandler,$doc_obj, $section, $is_recursive);
    114102    $self->output_xml_footer($outhandler);
    115103   
     
    121109    close($outhandler);
    122110    }
    123    
    124     #########################
    125     # save the mets file
    126     #########################
     111
     112}
     113
     114sub saveas_docmets
     115{
     116    my $self = shift (@_);
     117    my ($doc_obj,$working_dir) = @_;
     118
    127119    my $doc_mets_file = &util::filename_cat ($working_dir, "docmets.xml");
    128120   
     
    134126    $self->open_xslt_pipe($doc_mets_file,$self->{'xslt_mets'});
    135127
     128    my $outhandler;
     129
    136130    if (defined $self->{'xslt_writer'}){
    137131       $outhandler = $self->{'xslt_writer'};
     
    143137     
    144138    $self->output_mets_xml_header($outhandler, $doc_obj->get_OID(), $doc_title);
    145     $self->output_mets_section($outhandler, $doc_obj, $doc_obj->get_top_section(),$version,$working_dir);
     139    $self->output_mets_section($outhandler, $doc_obj, $doc_obj->get_top_section(),$working_dir);
    146140    $self->output_mets_xml_footer($outhandler);
    147141   
     
    152146    close($outhandler);
    153147    }
    154      
     148   
     149
     150}
     151
     152sub saveas
     153{
     154    my $self = shift (@_);
     155    my ($doc_obj,$doc_dir) = @_;
     156
     157    $self->process_assoc_files ($doc_obj, $doc_dir, '');
     158
     159    my $output_dir = $self->get_output_dir();
     160    &util::mk_all_dir ($output_dir) unless -e $output_dir;
     161 
     162    my $working_dir = &util::filename_cat ($output_dir, $doc_dir);             
     163   
     164    &util::mk_all_dir ($working_dir) unless -e $working_dir;
     165
     166    ###
     167    # Save the text as a filefile
     168    ###
     169    $self->saveas_doctxt($doc_obj,$working_dir);
     170
     171    ###
     172    # Save the structure and metadata as a METS file
     173    ###
     174    $self->saveas_docmets($doc_obj,$working_dir);
     175
    155176    $self->{'short_doc_file'} =  &util::filename_cat ($doc_dir, "docmets.xml");
    156177 
    157     $self->store_output_info_reference($doc_obj);
    158      
    159 }
    160 
    161 
    162 sub output_mets_xml_header(){
     178    $self->store_output_info_reference($doc_obj); 
     179
     180}
     181
     182
     183sub output_mets_xml_header
     184{
    163185    my $self = shift(@_);
    164186    my ($handle, $OID, $doc_title) = @_;
    165187
    166     my $version = $self->{'saveas_version'};
    167 
    168     my $extra_attr = "";
    169     if ($version eq "fedora") {
    170     my $fnamespace = $ENV{'FEDORA_PID_NAMESPACE'};
    171     my $oid_namespace = (defined $fnamespace) ? $fnamespace : "test";
    172 
    173     $extra_attr = "OBJID=\"$oid_namespace:$OID\" TYPE=\"FedoraObject\" LABEL=\"$doc_title\"";
    174     }
    175     else {
    176     # Greenstone METS profile
    177     $extra_attr = "OBJID=\"$OID:2\"";
    178     }
    179 
     188    gsprintf(STDERR, "METSPlugout::output_mets_xml_header {common.must_be_implemented}\n") && die "\n";
     189}
     190
     191sub output_mets_xml_header_extra_attribute
     192{
     193    my $self = shift(@_);
     194    my ($handle, $extra_attr) = @_;
    180195
    181196    print $handle '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' . "\n";
     
    188203    print $handle '           http://www.greenstone.org/namespace/gsdlmetadata/1.0/' . "\n";
    189204    print $handle '           http://www.greenstone.org/namespace/gsdlmetadata/1.0/gsdl_metadata.xsd"' . "\n";
     205
    190206    print $handle "  $extra_attr>\n";
    191207
    192     if ($version eq "fedora") {
    193     print $handle '<mets:metsHdr RECORDSTATUS="A"/>'. "\n"; # A = active
    194     }
    195 
    196 }
    197 
    198 sub output_mets_xml_footer() {
     208}
     209
     210sub output_mets_xml_footer
     211{
    199212    my $self = shift(@_);
    200213    my ($handle) = @_;
     
    205218sub output_txt_section {
    206219    my $self = shift (@_);
    207     my ($handle, $doc_obj, $section) = @_;
    208 
    209     print $handle $self->buffer_txt_section_xml($doc_obj, $section);
     220    my ($handle, $doc_obj, $section, $is_recursive) = @_;
     221
     222    print $handle $self->buffer_txt_section_xml($doc_obj, $section, $is_recursive);
    210223}
    211224
    212225sub buffer_txt_section_xml {
    213226    my $self = shift(@_);
    214     my ($doc_obj, $section) = @_;
     227    my ($doc_obj, $section, $is_recursive) = @_;
    215228 
    216229    my $section_ptr = $doc_obj->_lookup_section ($section);
     
    221234    $all_text .= &docprint::escape_text("$section_ptr->{'text'}");
    222235   
    223     #output all the subsections
    224     foreach my $subsection (@{$section_ptr->{'subsection_order'}}){
    225        $all_text .= $self->buffer_txt_section_xml($doc_obj, "$section.$subsection");
    226      }
     236    if (defined $is_recursive && $is_recursive)
     237    {
     238    # Output all the subsections
     239    foreach my $subsection (@{$section_ptr->{'subsection_order'}}){
     240        $all_text .= $self->buffer_txt_section_xml($doc_obj, "$section.$subsection");
     241    }
     242    }
    227243
    228244     $all_text .= "</Section>\n";
     
    233249}
    234250
    235 #  print out docmets.xml file
    236 sub output_mets_section {
    237     my $self = shift(@_);
    238     my ($handle, $doc_obj, $section, $version, $working_dir) = @_;
    239 
    240     # print out the dmdSection
    241     print $handle $self->buffer_mets_dmdSection_section_xml($doc_obj,$section, $version);
    242 
    243     print $handle "<mets:fileSec>\n";
    244     if ($version eq "fedora") {
    245     print $handle "  <mets:fileGrp ID=\"DATASTREAMS\">\n";
    246     }
    247 
    248     # print out the fileSection by sections
    249     print $handle $self->buffer_mets_fileSection_section_xml($doc_obj,$section,$version);
    250 
    251     # print out the whole fileSection
    252     print $handle $self->buffer_mets_fileWhole_section_xml($doc_obj,$section,$version,$working_dir);
    253 
    254     if ($version eq "fedora") {
    255     print $handle "  </mets:fileGrp>\n";
    256     }
    257     print $handle "</mets:fileSec>\n";
    258  
    259     # print out the StructMapSection by sections
    260 
    261     my $struct_type;
    262     if ($version eq "fedora") {
    263     $struct_type = "fedora:dsBindingMap";
    264     }
    265     else {
    266     $struct_type = "Section";
    267     }
    268 
    269     if ($version ne "fedora") {
    270     print $handle "<mets:structMap ID=\"Section\" TYPE=\"$struct_type\" LABEL=\"Section\">\n";
    271     my $order_num=0;
    272     print $handle $self->buffer_mets_StructMapSection_section_xml($doc_obj,$section, \$order_num);
    273     print $handle "</mets:structMap>\n";
    274 
    275     print $handle '<mets:structMap ID="All" TYPE="Whole Document" LABEL="All">'."\n";
    276     print $handle $self->buffer_mets_StructMapWhole_section_xml($doc_obj,$section);
    277     print $handle "</mets:structMap>\n";
    278     }
    279  
    280 }
    281 
    282 sub buffer_mets_dmdSection_section_xml(){
    283     my $self = shift(@_);
    284     my ($doc_obj,$section,$version) = @_;
    285    
     251#
     252#  Print out docmets.xml file
     253#
     254sub output_mets_section
     255{
     256    my $self = shift(@_);
     257    my ($handle, $doc_obj, $section, $working_dir) = @_;
     258
     259    gsprintf(STDERR, "METSPlugout::output_mets_section {common.must_be_implemented}\n") && die "\n";
     260
     261}
     262
     263
     264sub buffer_mets_dmdSection_section_xml
     265{
     266    my $self = shift(@_);
     267    my ($doc_obj,$section) = @_;
     268
     269    gsprintf(STDERR, "METSPlugout::buffer_mets_dmdSection_section_xml {common.must_be_implemented}\n") && die "\n";
     270}
     271
     272sub buffer_mets_StructMapSection_section_xml
     273{
     274    my $self = shift(@_);
     275    my ($doc_obj,$section, $order_numref, $fileid_base) = @_;
     276
    286277    $section="" unless defined $section;
     278   
    287279   
    288280    my $section_ptr=$doc_obj->_lookup_section($section);
    289281    return "" unless defined $section_ptr;
    290282
    291     # convert section number
    292     my $section_num ="1". $section;
    293     my $dmd_num = $section_num;
    294 
    295     # #**output the dmdSection details 
    296     # if ($section_num eq "1") {
    297     #   $dmd_num = "0";
    298     # }
    299 
    300 
    301     my $all_text = "";
    302 
    303     my $label_attr = "";
    304     if ($version eq "fedora") {
    305     $all_text .= "<mets:amdSec ID=\"DC\" >\n";
    306     $all_text .= "  <mets:techMD ID=\"DC.0\">\n"; # .0 fedora version number?
    307 
    308     $label_attr = "LABEL=\"Dublin Core Metadata\"";
    309     }
    310     else {
    311     # TODO::
    312     #print STDERR "***** Check that GROUPID in dmdSec is valid!!!\n";
    313     #print STDERR "***** Check to see if <techMD> required\n";
    314     # if it isn't allowed, go back and set $mdTag = dmdSec/amdSec
    315 
    316     $all_text .= "<mets:dmdSec ID=\"DM$dmd_num\" GROUPID=\"$section_num\">\n";
    317     }
    318 
    319     $all_text .= "  <mets:mdWrap $label_attr MDTYPE=\"OTHER\" OTHERMDTYPE=\"gsdl3\" ID=\"gsdl$section_num\">\n";
    320     $all_text .= "    <mets:xmlData>\n";
    321 
    322     if ($version eq "fedora") {
    323     my $dc_namespace = "";
    324     $dc_namespace .= "xmlns:dc=\"http://purl.org/dc/elements/1.1/\"";
    325     $dc_namespace .= " xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\">\n";
    326 
    327     $all_text .= "  <oai_dc:dc $dc_namespace>\n";
    328 
    329     $all_text .= $self->get_dc_metadata($doc_obj, $section,"oai_dc");
    330     $all_text .= "  </oai_dc:dc>\n";
    331     }
    332     else {
    333     foreach my $data (@{$section_ptr->{'metadata'}}){
    334         my $escaped_value = &docprint::escape_text($data->[1]);
    335         $all_text .= '      <gsdl3:Metadata name="'. $data->[0].'">'. $escaped_value. "</gsdl3:Metadata>\n";
    336         if ($data->[0] eq "dc.Title") {
    337         $all_text .= '      <gsdl3:Metadata name="Title">'. $escaped_value."</gsdl3:Metadata>\n";
    338         }
    339     }
    340     }
    341    
    342     $all_text .= "    </mets:xmlData>\n";
    343     $all_text .= "  </mets:mdWrap>\n";
    344    
    345     if ($version eq "fedora") {
    346     $all_text .= "  </mets:techMD>\n";
    347     $all_text .= "</mets:amdSec>\n";
    348     }
    349     else {
    350     $all_text .= "</mets:dmdSec>\n";   
    351     }
    352 
    353 
    354     foreach my $subsection (@{$section_ptr->{'subsection_order'}}){
    355        $all_text .= $self->buffer_mets_dmdSection_section_xml($doc_obj,"$section.$subsection",$version);
    356     }
    357    
    358     $all_text =~ s/[\x00-\x09\x0B\x0C\x0E-\x1F]//g;
    359 
    360     return $all_text;
    361 }
    362 
    363 sub buffer_mets_StructMapSection_section_xml(){
    364     my $self = shift(@_);
    365     my ($doc_obj,$section, $order_numref) = @_;
    366 
    367     $section="" unless defined $section;
    368    
    369    
    370     my $section_ptr=$doc_obj->_lookup_section($section);
    371     return "" unless defined $section_ptr;
    372 
     283    $fileid_base = "FILEGROUP_PRELUDE" unless defined $fileid_base;
    373284
    374285    # output fileSection by Sections
    375286    my $section_num ="1". $section;
    376287    my $dmd_num = $section_num;
    377 
    378     ##**output the dmdSection details 
    379     #if ($section_num eq "1") {
    380     #   $dmd_num = "0";
    381     #}
    382288
    383289    #**output the StructMap details
     
    389295    $all_text .= "      LABEL=\"$section_num\" DMDID=\"$dmdid_attr\">\n";
    390296   
    391     $all_text .= '    <mets:fptr FILEID="FILEGROUP_PRELUDE'.$section_num.'" />'. "\n";
     297    $all_text .= '    <mets:fptr FILEID="'.$fileid_base.$section_num.'" />'. "\n";
    392298
    393299
    394300    foreach my $subsection (@{$section_ptr->{'subsection_order'}}){
    395        $all_text .= $self->buffer_mets_StructMapSection_section_xml($doc_obj,"$section.$subsection", $order_numref);
     301       $all_text .= $self->buffer_mets_StructMapSection_section_xml($doc_obj,"$section.$subsection", $order_numref, $fileid_base);
    396302    }
    397303   
     
    404310
    405311
    406 sub buffer_mets_StructMapWhole_section_xml(){
     312sub buffer_mets_StructMapWhole_section_xml
     313{
    407314    my $self = shift(@_);
    408315    my ($doc_obj,$section) = @_;
     
    440347}
    441348
    442 sub buffer_mets_fileSection_section_xml() {
    443     my $self = shift(@_);
    444     my ($doc_obj,$section,$version) = @_;
     349
     350
     351sub doctxt_to_xlink
     352{
     353    my $self = shift @_;
     354    my ($fname,$working_dir) = @_;
     355
     356    gsprintf(STDERR, "METSPlugout::doxtxt_to_xlink {common.must_be_implemented}\n") && die "\n";
     357}
     358
     359sub buffer_mets_fileSection_section_xml
     360{
     361    my $self = shift(@_);
     362    my ($doc_obj,$section,$working_dir, $is_txt_split,$opt_attr,$fileid_base) = @_;
    445363
    446364    #$section="" unless defined $section;
    447365   
    448 
    449366    my $section_ptr=$doc_obj->_lookup_section($section);
    450367    return "" unless defined $section_ptr;
    451368 
     369    $fileid_base = "FILEGROUP_PRELUDE" unless defined $fileid_base;
    452370
    453371    # output fileSection by sections
    454372    my $section_num ="1". $section;
    455      
    456     my $filePath = 'doctxt.xml';
    457 
    458     my $opt_owner_id = "";
    459     if ($version eq "fedora") {
    460     $opt_owner_id = "OWNERID=\"M\"";
    461     }
    462 
     373 
     374    $opt_attr = "" unless defined $opt_attr;
     375     
    463376    # output the fileSection details
    464     my $all_text = '  <mets:fileGrp ID="FILEGROUP_PRELUDE' . $section_num . '">'. "\n";
    465     $all_text .= "    <mets:file MIMETYPE=\"text/xml\" ID=\"FILE$section_num\" $opt_owner_id >\n";
    466     $all_text .= '      <mets:FLocat LOCTYPE="URL" xlink:href="file:'.$filePath.'#xpointer(/Section[';
    467    
    468     my $xpath = "1".$section;
    469     $xpath =~ s/\./]\/Section[/g;
    470    
    471     $all_text .=  $xpath;
    472 
    473     $all_text .= ']/text())" xlink:title="Hierarchical Document Structure"/>' . "\n";
     377    my $all_text = '  <mets:fileGrp ID="'.$fileid_base.$section_num . '">'. "\n";
     378    $all_text .= "    <mets:file MIMETYPE=\"text/xml\" ID=\"FILE$section_num\" $opt_attr >\n";
     379
     380    my $xlink;
     381    if (defined $is_txt_split && $is_txt_split)
     382    {
     383    my $section_fnum ="1". $section;
     384    $section_fnum =~ s/\./_/g;
     385
     386        $xlink = $self->doctxt_to_xlink("doctxt$section_fnum.xml",$working_dir);
     387    }
     388    else
     389    {
     390    $xlink = $self->doctxt_to_xlink("doctxt.xml",$working_dir);
     391
     392    $xlink .= '#xpointer(/Section[';
     393   
     394    my $xpath = "1".$section;
     395    $xpath =~ s/\./\]\/Section\[/g;
     396   
     397    $xlink .=  $xpath;
     398   
     399    $xlink .= ']/text())';
     400    }
     401
     402
     403
     404    $all_text .= '      <mets:FLocat LOCTYPE="URL" xlink:href="'.$xlink.'"';
     405
     406    $all_text .= ' xlink:title="Hierarchical Document Structure"/>' . "\n";
    474407    $all_text .= "    </mets:file>\n";
    475408    $all_text .= "  </mets:fileGrp>\n";
     
    477410
    478411    foreach my $subsection (@{$section_ptr->{'subsection_order'}}){
    479     $all_text .= $self->buffer_mets_fileSection_section_xml($doc_obj,"$section.$subsection",$version);
     412    $all_text .= $self->buffer_mets_fileSection_section_xml($doc_obj,"$section.$subsection",$working_dir, $is_txt_split, $opt_attr, $fileid_base);
    480413    }
    481414   
     
    485418}
    486419
    487 sub buffer_mets_fileWhole_section_xml(){
    488     my $self = shift(@_);
    489     my ($doc_obj,$section,$version,$working_dir) = @_;
    490 
    491     my $section_ptr = $doc_obj-> _lookup_section($section);
    492     return "" unless defined $section_ptr;
    493    
    494     my $all_text="";
    495 
    496     my $fileID=0;
    497 
    498     # Output the fileSection for the whole section
    499     #  => get the sourcefile and associative file
    500 
    501     my $id_root = "";
    502     my $opt_owner_id = "";   
    503 
    504     if ($version eq "fedora") {
    505     $opt_owner_id = "OWNERID=\"M\"";
    506     }
    507     else {
    508     $id_root = "default";
    509     }
    510 
    511     if ($version ne "fedora") {
    512     $all_text .= "  <mets:fileGrp ID=\"$id_root\">\n";
    513     }
    514 
    515     foreach my $data (@{$section_ptr->{'metadata'}}){
    516        my $escaped_value = &docprint::escape_text($data->[1]);
    517 
    518        if (($data->[0] eq "gsdlsourcefilename") && ($version ne "fedora")) {
    519           my ($dirPath) = $escaped_value =~ m/^(.*)[\/\\][^\/\\]*$/;
    520 
    521           ++$fileID;     
    522           $all_text .= "    <mets:file MIMETYPE=\"text/xml\" ID=\"$id_root.$fileID\" $opt_owner_id >\n";
    523        
    524       $all_text .= '      <mets:FLocat LOCTYPE="URL" xlink:href="file:'.$data->[1].'" />'."\n";
    525      
    526           $all_text .= "    </mets:file>\n";
    527        }
    528        
    529        if ($data->[0] eq "gsdlassocfile"){
    530        
    531        $escaped_value =~ m/^(.*?):(.*):(.*)$/;
    532        my $assoc_file = $1;
    533        my $mime_type  = $2;
    534        my $assoc_dir  = $3;
    535        
    536        if ($version eq "fedora") {
    537            $id_root = $assoc_file;
    538            $id_root =~ s/\//_/g;
    539            $all_text .= "  <mets:fileGrp ID=\"$id_root\">\n";
    540        }
    541        
    542        my $assfilePath = ($assoc_dir eq "") ? $assoc_file : "$assoc_dir/$assoc_file";
    543        ++$fileID;
    544        
    545        my $mime_attr   = "MIMETYPE=\"$mime_type\"";
    546        my $xlink_title = "xlink:title=\"$assoc_file\"";
    547 
    548        my $id_attr;
    549        my $xlink_href;
    550 
    551        if ($version eq "fedora") {
    552            $id_attr = "ID=\"$id_root.0\"";
    553 
    554            my $fedora_prefix = $ENV{'FEDORA_PREFIX'};
    555            if (!defined $fedora_prefix) {
    556            $xlink_href  = "xlink:href=\"$assfilePath\"";
    557            }
    558            else
    559            {
    560            my $gsdlhome = $ENV{'GSDLHOME'};
    561            my $gsdl_href = "$working_dir/$assfilePath";
    562 
    563            $gsdl_href =~ s/^$gsdlhome(\/)?//;
    564            $gsdl_href = "/gsdl/$gsdl_href";
    565 
    566            my $fserver = $ENV{'FEDORA_HOSTNAME'};
    567            my $fport = $ENV{'FEDORA_SERVER_PORT'};
    568 
    569            my $fdomain = "http://$fserver:$fport";
    570            $xlink_href  = "xlink:href=\"$fdomain$gsdl_href\"";
    571            }
    572 
    573            my $top_section = $doc_obj->get_top_section();
    574            my $id = $doc_obj->get_metadata_element($top_section,"Identifier");
    575        }
    576        else {
    577            $id_attr = "ID=\"$id_root.$fileID\"";
    578            $xlink_href  = "xlink:href=\"$assfilePath\"";
    579        }
    580 
    581        $all_text .= "    <mets:file $mime_attr $id_attr $opt_owner_id >\n";
    582        $all_text .= "      <mets:FLocat LOCTYPE=\"URL\" $xlink_href $xlink_title />\n";
    583        
    584        $all_text .= "    </mets:file>\n";
    585        
    586        if ($version eq "fedora") {
    587            $all_text .= "  </mets:fileGrp>\n";
    588        }
    589        
    590        }
    591    }
    592    
    593     if ($version ne "fedora") {
    594     $all_text .= "  </mets:fileGrp>\n";
    595     }         
    596    
    597     $all_text =~ s/[\x00-\x09\x0B\x0C\x0E-\x1F]//g;
    598    
    599     return $all_text;
    600 }
    601 
     420sub buffer_mets_fileWhole_section_xml
     421{
     422    my $self = shift(@_);
     423    my ($doc_obj,$section,$working_dir) = @_;
     424
     425    gsprintf(STDERR, "METSPlugout::buffer_mets_fileWhole_section_xml {common.must_be_implemented}\n") && die "\n";
     426
     427}
    602428
    6034291;
Note: See TracChangeset for help on using the changeset viewer.