--- foxridge-archiver/makemeta-lib.pl 2005/08/31 10:50:00 1.6 +++ foxridge-archiver/makemeta-lib.pl 2006/05/16 19:56:32 1.9 @@ -3,14 +3,14 @@ use strict; use XML::LibXML; -use lib '/usr/local/mpiwg/archive_devel'; +use lib '/usr/local/mpiwg/archive'; use MPIWGStor; # make output unbuffered $|=1; # program version -my $version = "0.2.2 (31.8.2005 ROC)"; +my $version = "0.2.4 (16.5.2006 ROC)"; my $help = "use: makemeta-lib [options] file.xml options: @@ -20,6 +20,7 @@ options: -cw-mode mode for copying einstein_cw archive documents -digifiles-mode mode for copying files from digifiles -map-file=mapfile.xml digilib mapping file (for digifiles mode) + -access=free adds free access tag (use access=mpiwg for restricted access) "; logger("INFO", "makemeta-lib $version"); @@ -153,6 +154,9 @@ logger('DEBUG', "map_file_name: $map_fil my $mapping_doc; my $mapping_root; +# access type +my $access_type = (exists $$args{'access'}) ? $$args{'access'} : ""; + # index.meta namespace (not really implemented!) my $namespace = ""; @@ -276,7 +280,7 @@ sub find_permanent_dir { my $online_base = '/mpiwg/online/permanent'; my $src_dir = find_online_dir($input_node, $online_base, 'pageimg'); my $dest_id = sstrip($input_node->findvalue("fm:$online_id_field")); - if (! $dest_id) { + if ((! $dest_id)||(! $src_dir)) { logger('ERROR', "no ID field for online permanent entry"); $errcnt++; return; @@ -417,11 +421,13 @@ sub process_fm_entry { $index_root->addChild($index_doc->createAttributeNS($namespace, 'version', '1.1')); $index_root->addChild($index_doc->createAttributeNS($namespace, 'type', 'MPIWG')); $index_doc->setDocumentElement($index_root); + my $derived_from = ""; # try to find the document directory my $doc_dir = ""; if ($online_mode) { $doc_dir = find_permanent_dir($input_node); + $derived_from = find_arch_dir($input_node); } elsif ($cw_mode) { $doc_dir = find_cw_dir($input_node); } elsif ($digifiles_mode) { @@ -450,6 +456,19 @@ sub process_fm_entry { # media create_text_path('media-type', 'image', $index_root, $namespace); create_text_path('meta/content-type', 'scanned document', $index_root, $namespace); + # derived-from + if ($derived_from) { + create_text_path('derived-from/archive-path', $derived_from, $index_root, $namespace); + } + # access + if ($access_type) { + if ($access_type eq "free") { + create_element_path('access-conditions/access@type=free', $index_root, $namespace); + } else { + my $acc_tag = create_element_path('access-conditions/access@type=institution', $index_root, $namespace); + create_text_path('name', $access_type, $acc_tag, $namespace); + } + } # convert bib entries my $cnt = convert_bib($input_node, $index_root, $index_doc);