changeset 45:b1f1d1fbf6e5

added derived-from and production-comment handling
author casties
date Mon, 11 Dec 2006 19:09:00 +0100
parents af4323868086
children 377ba1dd9ec6
files changemeta.pl
diffstat 1 files changed, 63 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/changemeta.pl	Mon Dec 11 19:08:24 2006 +0100
+++ b/changemeta.pl	Mon Dec 11 19:09:00 2006 +0100
@@ -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 @@
 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 @@
     $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 ($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");