--- foxridge-archiver/changemeta.pl 2006/06/29 07:42:46 1.3 +++ foxridge-archiver/changemeta.pl 2006/12/11 18:09:00 1.4 @@ -3,20 +3,22 @@ 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 (27.6.2006 ROC)"; +my $version = "0.3 (11.12.2006 ROC)"; my $help = "use: changemeta [options] dir options: -debug show debugging info -dry-run simulate, dont'do anything -access=free set free access tag (use access=mpiwg for restricted access) + -derived-from=/mpiwg/archive/data/DBDDHKP + -production-comment=\"scanned with flatbed scanner\" "; logger("INFO", "changemeta $version"); @@ -43,6 +45,14 @@ logger('DEBUG', "dry-run: $dry_run"); my $access_type = (exists $$args{'access'}) ? $$args{'access'} : ""; logger('DEBUG', "access: $access_type"); +# derived-from +my $derived_from = (exists $$args{'derived-from'}) ? $$args{'derived-from'} : ""; +logger('DEBUG', "derived-from: $derived_from"); + +# production-comment +my $production_comment = (exists $$args{'production-comment'}) ? $$args{'production-comment'} : ""; +logger('DEBUG', "production-comment: $production_comment"); + # index.meta namespace (not really implemented!) my $namespace = ""; @@ -99,6 +109,51 @@ sub change_access { $xml_changed++ } +# +# sets derived-from tag to given value +# removes tag if derived_from is empty +# +sub change_derived { + my ($derived_from, $index_root) = @_; + + my $derived_tag = $index_root->findnodes('derived-from')->get_node(1); + # remove derived tag if it exists + if ($derived_tag) { + $index_root->removeChild($derived_tag); + } + + # add new derived tag (if $derived_Type is not empty) + if (length $derived_from > 0) { + create_text_path('derived-from/archive-path', $derived_from, $index_root, $namespace); + } + $xml_changed++ +} + +# +# sets production-comment tag to given value +# removes production tag if production_comment is empty +# +sub change_production { + my ($production_comment, $index_root) = @_; + + my $parent_tag = $index_root->findnodes('//meta/image-acquisition')->get_node(1); + if ($parent_tag) { + my $production_tag = $parent_tag->findnodes('production-comment')->get_node(1); + # remove production tag if it exists + if ($production_tag) { + $parent_tag->removeChild($production_tag); + } + } else { + $parent_tag = create_element_path('meta/image-acquisition', $index_root, $namespace); + } + + # add new production tag (if $production_comment is not empty) + if (length $production_comment > 0) { + create_text_path('production-comment', $production_comment, $parent_tag, $namespace); + } + $xml_changed++ +} + @@ -123,6 +178,12 @@ if (-f "$docdir/index.meta") { if ($access_type) { change_access($access_type, $index_root); } +if ($derived_from) { + change_derived($derived_from, $index_root); +} +if ($production_comment) { + change_production($production_comment, $index_root); +} logger("INFO", "$warncnt warnings");