Mercurial > hg > foxridge-archiver
annotate makemeta-lib.pl @ 28:3ff9da4b7c87
added derived-from
author | casties |
---|---|
date | Tue, 16 May 2006 20:58:21 +0200 |
parents | c3defe3e2780 |
children | f77f6cb40c4f |
rev | line source |
---|---|
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
1 #!/usr/local/bin/perl -w |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
2 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
3 use strict; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
4 use XML::LibXML; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
5 |
22 | 6 use lib '/usr/local/mpiwg/archive'; |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
7 use MPIWGStor; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
8 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
9 # make output unbuffered |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
10 $|=1; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
11 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
12 # program version |
28 | 13 my $version = "0.2.3 (16.5.2006 ROC)"; |
16 | 14 my $help = |
15 "use: makemeta-lib [options] file.xml | |
16 options: | |
17 -debug show debugging info | |
18 -dry-run simulate, dont'do anything | |
17
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
19 -online-mode mode for creating online/permanent files |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
20 -cw-mode mode for copying einstein_cw archive documents |
16 | 21 -digifiles-mode mode for copying files from digifiles |
22 -map-file=mapfile.xml digilib mapping file (for digifiles mode) | |
23 "; | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
24 logger("INFO", "makemeta-lib $version"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
25 |
13 | 26 ########################################### |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
27 # mappings |
13 | 28 |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
29 # generic mappings at top level |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
30 my %gen_map = ( |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
31 'Device' => 'meta/image-acquisition/device', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
32 'Image_Type' => 'meta/image-acquisition/image-type', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
33 'Production_Comment' => 'meta/image-acquisition/production-comment', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
34 'Postproduction' => 'meta/image-acquisition/production-comment', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
35 'Language' => 'meta/lang' |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
36 ); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
37 # sub type switch tag |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
38 my %type_map = ( |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
39 'Reference_Type' => 'meta/bib@type' |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
40 ); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
41 # sub type mappings |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
42 my %subtype_map = ( |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
43 'Book' => { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
44 '_name' => 'book', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
45 'Author' => 'meta/bib/author', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
46 'Title' => 'meta/bib/title', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
47 'Year' => 'meta/bib/year', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
48 'Place_Published' => 'meta/bib/city', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
49 'Publisher' => 'meta/bib/publisher', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
50 'Edition' => 'meta/bib/edition' |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
51 }, |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
52 'Journal Article' => { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
53 '_name' => 'journal-article', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
54 'Author' => 'meta/bib/author', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
55 'Title' => 'meta/bib/title', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
56 'Year' => 'meta/bib/year', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
57 'Secondary_Title' => 'meta/bib/journal', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
58 'Volume' => 'meta/bib/volume', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
59 'Number' => 'meta/bib/issue', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
60 'Pages' => 'meta/bib/pages' |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
61 }, |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
62 'In Book' => { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
63 '_name' => 'inbook', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
64 'Author' => 'meta/bib/author', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
65 'Title' => 'meta/bib/title', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
66 'Year' => 'meta/bib/year', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
67 'Secondary_Title' => 'meta/bib/book-title', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
68 'Pages' => 'meta/bib/pages' |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
69 }, |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
70 'Newspaper Article' => { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
71 '_name' => 'newspaper-article', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
72 'Author' => 'meta/bib/author', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
73 'Title' => 'meta/bib/title', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
74 'Year' => 'meta/bib/year', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
75 'Secondary_Title' => 'meta/bib/newspaper', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
76 'Place_Published' => 'meta/bib/city', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
77 'Number' => 'meta/bib/issue-date', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
78 'Pages' => 'meta/bib/pages' |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
79 }, |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
80 'Edited Book' => { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
81 '_name' => 'edited-book', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
82 'Author' => 'meta/bib/editor', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
83 'Title' => 'meta/bib/title', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
84 'Year' => 'meta/bib/year', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
85 'Place_Published' => 'meta/bib/city', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
86 'Publisher' => 'meta/bib/publisher', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
87 'Edition' => 'meta/bib/edition' |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
88 }, |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
89 'Manuscript' => { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
90 '_name' => 'manuscript', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
91 'Author' => 'meta/bib/author', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
92 'Title' => 'meta/bib/title', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
93 'Year' => 'meta/bib/year', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
94 'Place_Published' => 'meta/bib/location', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
95 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
96 ); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
97 # language element |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
98 my $lang_field = 'Language'; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
99 # languages to iso codes |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
100 my %lang_map = ( |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
101 'German' => 'de', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
102 'English' => 'en', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
103 'Italian' => 'it', |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
104 'French' => 'fr', |
13 | 105 'Latin' => 'la', |
14 | 106 'Japanese' => 'ja', |
15
8d2f0586eca6
new helper script for calling archiver on many directories
casties
parents:
14
diff
changeset
|
107 'Dutch' => 'nl', |
13 | 108 'Spanish' => 'es' |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
109 ); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
110 # storage fields |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
111 my $arch_id_field = 'ID_Archive'; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
112 my $online_url_field = 'URL'; |
16 | 113 my $online_id_field = 'ID_OnlinePermanent'; |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
114 |
13 | 115 ####################################################### |
116 # internal parameters | |
117 # | |
118 | |
119 # storage | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
120 my $lib_arch_dir = '/mpiwg/archive/data/library'; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
121 my $lib_online_dir = '/mpiwg/online/permanent'; |
16 | 122 my $lib_digilib_path = 'permanent'; |
123 my $digifiles_dir = "/net/digifiles.mpiwg-berlin.mpg.de/Volumes/raid"; | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
124 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
125 # read command line parameters |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
126 my $args = MPIWGStor::parseargs; |
16 | 127 if (! scalar(%$args)) { |
128 print $help, "\n"; | |
129 exit 1; | |
130 } | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
131 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
132 # debug level |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
133 $debug = (exists $$args{'debug'}) ? $$args{'debug'} : 0; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
134 |
16 | 135 # simulate action only |
136 my $dry_run = (exists $$args{'dry-run'}) ? $$args{'dry-run'} : 0; | |
137 logger('DEBUG', "dry-run: $dry_run"); | |
138 | |
17
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
139 # use online mode |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
140 my $online_mode = (exists $$args{'online-mode'}) ? $$args{'online-mode'} : 0; |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
141 logger('DEBUG', "online_mode: $online_mode"); |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
142 |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
143 # use einstein-cw mode |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
144 my $cw_mode = (exists $$args{'cw-mode'}) ? $$args{'cw-mode'} : 0; |
16 | 145 logger('DEBUG', "cw_mode: $cw_mode"); |
146 | |
147 # use digifiles mode | |
148 my $digifiles_mode = (exists $$args{'digifiles-mode'}) ? $$args{'digifiles-mode'} : 0; | |
149 logger('DEBUG', "digifiles_mode: $digifiles_mode"); | |
150 # digilib mapping file | |
151 my $map_file_name = (exists $$args{'map-file'}) ? $$args{'map-file'} : ""; | |
152 logger('DEBUG', "map_file_name: $map_file_name"); | |
153 my $mapping_doc; | |
154 my $mapping_root; | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
155 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
156 # index.meta namespace (not really implemented!) |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
157 my $namespace = ""; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
158 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
159 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
160 my $xml_changed = 0; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
161 my $errcnt = 0; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
162 my $warncnt = 0; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
163 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
164 ####################################################### |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
165 # check parameters that were passed to the program |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
166 # |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
167 my $infile = $$args{'path'}; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
168 if (! $infile) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
169 logger("ABORT", "no input file given!"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
170 exit 1; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
171 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
172 # strip double slashes |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
173 $infile =~ s/\/\//\//; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
174 if (! -f $infile) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
175 logger("ABORT", "input file \'$infile\' doesn't exist!"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
176 exit 1; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
177 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
178 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
179 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
180 ####################################################### |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
181 # subroutines |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
182 # |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
183 |
16 | 184 |
185 sub add_digilib_mapping { | |
186 my ($src_dir, $dest_dir) = @_; | |
187 my $elem = $mapping_root->addNewChild($namespace, 'mapping'); | |
188 $elem->addChild($mapping_doc->createAttributeNS($namespace, 'link', $src_dir)); | |
189 $elem->addChild($mapping_doc->createAttributeNS($namespace, 'dir', $dest_dir)); | |
190 if ($map_file_name) { | |
191 write_xml($mapping_doc, $map_file_name); | |
192 } else { | |
193 logger('ABORT', "unable to write mapping file!"); | |
194 exit 1; | |
195 } | |
196 } | |
197 | |
198 sub find_digifiles_dir { | |
199 my ($input_node) = @_; | |
200 my $digifiles_base = '/net/digifiles.mpiwg-berlin.mpg.de/Volumes/raid'; | |
201 my $src_dir = find_online_dir($input_node, $digifiles_base, ''); | |
202 if (! $src_dir) { | |
203 logger('ERROR', "no online directory for digifiles entry"); | |
204 $errcnt++; | |
205 return; | |
206 } | |
207 my $dest_id = sstrip($input_node->findvalue("fm:$online_id_field")); | |
208 if (! $dest_id) { | |
209 logger('ERROR', "no ID field for digifiles entry"); | |
210 $errcnt++; | |
211 return; | |
212 } | |
213 my $dir = "$lib_online_dir/library/$dest_id"; | |
214 my $map_dir = "$lib_digilib_path/library/$dest_id"; | |
215 if ($dry_run) { | |
216 logger('DEBUG', "would move $digifiles_base/$src_dir to $dir"); | |
217 add_digilib_mapping($src_dir, "$map_dir/pageimg"); | |
218 return $dir; | |
219 } else { | |
220 logger('INFO', "moving $digifiles_base/$src_dir to $dir"); | |
221 logger('DEBUG', "mkdir $dir/pageimg"); | |
222 if (system("mkdir -p $dir/pageimg && chmod -R 0775 $dir") == 0) { | |
223 logger('DEBUG', "cp $digifiles_base/$src_dir $dir/pageimg"); | |
224 if (system("cp -rp $digifiles_base/$src_dir/* $dir/pageimg/") == 0) { | |
225 if (-d "$dir/pageimg") { | |
226 logger('DEBUG', "directory $dir OK"); | |
227 add_digilib_mapping($src_dir, "$map_dir/pageimg"); | |
228 if (system("rm -rf $digifiles_base/$src_dir/* && rm -rf $digifiles_base/$src_dir") == 0) { | |
229 logger('DEBUG', "directory $digifiles_base/$src_dir removed"); | |
230 return $dir; | |
231 } else { | |
232 logger('ERROR', "unable to remove source directory $digifiles_base/$src_dir!"); | |
233 $errcnt++; | |
234 return $dir; | |
235 } | |
236 } | |
237 } | |
238 } | |
239 logger('ABORT', "unable to copy directory $src_dir to $dir!"); | |
240 exit 1; | |
241 } | |
242 return; | |
243 } | |
244 | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
245 sub find_cw_dir { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
246 my ($input_node) = @_; |
16 | 247 my $cw_base = '/mpiwg/archive/data/library/inbox/zwischen_backup'; |
248 my $src_dir = find_online_dir($input_node, $cw_base, 'pageimg'); | |
249 my $dest_id = sstrip($input_node->findvalue("fm:$arch_id_field")); | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
250 if (! $dest_id) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
251 logger('ERROR', "no ID field for einstein-cw entry"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
252 $errcnt++; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
253 return; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
254 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
255 my $dir = "$lib_arch_dir/$dest_id"; |
16 | 256 if ($dry_run) { |
257 logger('DEBUG', "would move $cw_base/$src_dir to $dir"); | |
258 return $dir; | |
259 } else { | |
260 logger('DEBUG', "moving $cw_base/$src_dir to $dir"); | |
261 if (rename "$cw_base/$src_dir", $dir) { | |
262 if (-d $dir) { | |
263 logger('DEBUG', "directory $dir OK"); | |
264 return $dir; | |
265 } | |
266 } else { | |
267 logger('ABORT', "unable to rename directory $cw_base/$src_dir to $dir!"); | |
268 exit 1; | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
269 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
270 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
271 return; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
272 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
273 |
17
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
274 sub find_permanent_dir { |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
275 my ($input_node) = @_; |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
276 my $online_base = '/mpiwg/online/permanent'; |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
277 my $src_dir = find_online_dir($input_node, $online_base, 'pageimg'); |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
278 my $dest_id = sstrip($input_node->findvalue("fm:$online_id_field")); |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
279 if (! $dest_id) { |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
280 logger('ERROR', "no ID field for online permanent entry"); |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
281 $errcnt++; |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
282 return; |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
283 } |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
284 my $dir = "$online_base/$src_dir"; |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
285 return $dir; |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
286 } |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
287 |
16 | 288 # |
289 # $dir = find_online_dir($input_node, $base_dir, $page_dir) | |
290 # | |
291 # Takes the path from the $online_url_field of the $input_node document | |
292 # and looks in the directory $base_dir for it. Strips $page_dir from the end. | |
293 # Returns the directory path sans $base_dir if it exists | |
294 # | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
295 sub find_online_dir { |
16 | 296 my ($input_node, $base_dir, $page_dir) = @_; |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
297 $base_dir = $lib_online_dir unless ($base_dir); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
298 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
299 my $online_url = $input_node->findvalue("fm:$online_url_field"); |
16 | 300 logger('DEBUG', "checking URL: $online_url"); |
301 my $online_dir; | |
302 if ($online_url =~ /fn=permanent\/(.+)/) { | |
303 # new style digilib URL | |
304 $online_dir = $1; | |
305 } elsif ($online_url =~ /\?([^\+]+)\+/) { | |
306 # old style digilib URL | |
307 $online_dir = $1; | |
308 } | |
309 #logger('DEBUG', "online_dir1: $online_dir"); | |
310 if ($online_dir) { | |
17
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
311 $online_dir =~ s/\/$//; # strip ending slashes |
16 | 312 if ($page_dir) { |
313 $online_dir =~ s/\/${page_dir}$//; | |
314 } | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
315 #logger("DEBUG", "dir: $base_dir/$online_dir"); |
16 | 316 if (-d "$base_dir/$online_dir") { |
17
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
317 logger('DEBUG', "directory $base_dir/$online_dir exists"); |
16 | 318 return $online_dir; |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
319 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
320 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
321 return; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
322 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
323 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
324 sub find_arch_dir { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
325 my ($input_node) = @_; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
326 my $dir = ""; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
327 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
328 my $bib_dir = $input_node->findvalue("fm:$arch_id_field"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
329 #logger('DEBUG', "bibdir: $bib_dir"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
330 if ($bib_dir) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
331 $dir = "$lib_arch_dir/$bib_dir"; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
332 if (-d $dir) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
333 logger('DEBUG', "directory $dir exists"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
334 return $dir; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
335 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
336 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
337 return; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
338 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
339 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
340 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
341 sub convert_bib { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
342 my ($input_node, $index_root, $index_doc) = @_; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
343 my $cnt = 0; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
344 my $type = ""; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
345 my $type_path = ""; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
346 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
347 # process general stuff first |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
348 foreach my $n ($input_node->getChildNodes()) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
349 my $name = $n->nodeName(); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
350 my $val = $n->textContent(); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
351 #logger('DEBUG', " NODE: $name = '$val'"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
352 if (exists $gen_map{$name}) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
353 # is a general field |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
354 if ($name eq $lang_field) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
355 # language field -> convert to iso code |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
356 if (exists $lang_map{$val}) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
357 $val = $lang_map{$val}; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
358 } else { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
359 logger('ERROR', "unknown language: $val! skipping..."); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
360 $errcnt++; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
361 return 0; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
362 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
363 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
364 create_element_path($gen_map{$name}, $index_root, $namespace) |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
365 ->appendTextNode($val); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
366 $cnt++; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
367 } elsif (exists $type_map{$name}) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
368 # is a type field |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
369 $type_path = $type_map{$name}; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
370 $type = $val; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
371 # check with known types |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
372 if (exists $subtype_map{$val}) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
373 my $indextype = $subtype_map{$val}->{'_name'}; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
374 create_element_path("$type_path=$indextype", $index_root, $namespace); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
375 $cnt++; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
376 } else { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
377 logger('ERROR', 'unknown bib type $val! skipping...'); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
378 $errcnt++; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
379 return 0; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
380 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
381 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
382 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
383 # process sub type fields |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
384 if ($type) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
385 foreach my $n ($input_node->getChildNodes()) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
386 my $name = $n->nodeName(); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
387 my $val = $n->textContent(); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
388 #logger('DEBUG', " NODE: $name = '$val'"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
389 if (exists $subtype_map{$type}->{$name}) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
390 create_element_path($subtype_map{$type}->{$name}, $index_root, $namespace) |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
391 ->appendTextNode($val); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
392 $cnt++; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
393 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
394 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
395 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
396 return $cnt; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
397 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
398 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
399 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
400 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
401 sub process_all_fm_entries { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
402 my ($input_root) = @_; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
403 my $cnt = 0; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
404 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
405 foreach my $n ($input_root->findnodes('fm:ROW')) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
406 logger('INFO', "processing entry $cnt ..."); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
407 process_fm_entry($n); |
16 | 408 $cnt++; |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
409 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
410 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
411 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
412 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
413 sub process_fm_entry { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
414 my ($input_node) = @_; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
415 my $index_doc = XML::LibXML::Document->createDocument('1.0', 'UTF-8'); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
416 my $index_root = $index_doc->createElementNS($namespace, 'resource'); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
417 $index_root->addChild($index_doc->createAttributeNS($namespace, 'version', '1.1')); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
418 $index_root->addChild($index_doc->createAttributeNS($namespace, 'type', 'MPIWG')); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
419 $index_doc->setDocumentElement($index_root); |
28 | 420 my $derived_from = ""; |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
421 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
422 # try to find the document directory |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
423 my $doc_dir = ""; |
17
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
424 if ($online_mode) { |
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
425 $doc_dir = find_permanent_dir($input_node); |
28 | 426 $derived_from = find_arch_dir($input_node); |
17
6c5c7743acb1
new version with new -onlinne-mode for online/permanent.
casties
parents:
16
diff
changeset
|
427 } elsif ($cw_mode) { |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
428 $doc_dir = find_cw_dir($input_node); |
16 | 429 } elsif ($digifiles_mode) { |
430 $doc_dir = find_digifiles_dir($input_node); | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
431 } else { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
432 $doc_dir = find_arch_dir($input_node); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
433 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
434 if (! $doc_dir) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
435 logger('ERROR', "document directory not found! skipping..."); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
436 $errcnt++; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
437 return; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
438 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
439 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
440 # add standard stuff to index.meta |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
441 my ($docname, $docpath) = split_file_path($doc_dir); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
442 # name and date |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
443 create_text_path('name', $docname, $index_root, $namespace); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
444 create_text_path('archive-path', $doc_dir, $index_root, $namespace); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
445 create_text_path('archive-creation-date', stime(time), $index_root, $namespace); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
446 create_text_path('creator', 'digigroup', $index_root, $namespace); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
447 create_text_path('description', 'a scanned document', $index_root, $namespace); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
448 # acquisition |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
449 create_text_path('meta/acquisition/date', stime(time), $index_root, $namespace); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
450 create_text_path('meta/acquisition/provider/provider-id', 'digigroup', $index_root, $namespace); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
451 create_text_path('meta/acquisition/provider/address', 'Max Planck Institute for the History of Science', $index_root, $namespace); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
452 # media |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
453 create_text_path('media-type', 'image', $index_root, $namespace); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
454 create_text_path('meta/content-type', 'scanned document', $index_root, $namespace); |
28 | 455 # derived-from |
456 if ($derived_from) { | |
457 create_text_path('derived-from/archive-path', $derived_from, $index_root, $namespace); | |
458 } | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
459 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
460 # convert bib entries |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
461 my $cnt = convert_bib($input_node, $index_root, $index_doc); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
462 if ($cnt == 0) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
463 # error or nothing to convert |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
464 logger('ERROR', "no bibliographic metadata!"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
465 $errcnt++; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
466 return; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
467 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
468 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
469 # write new index.meta file |
16 | 470 if ($dry_run) { |
471 logger('DEBUG', "would write $doc_dir/index.meta"); | |
472 logger('DEBUG', $index_doc->toString(1)); | |
473 } else { | |
474 write_xml($index_doc, "$doc_dir/index.meta"); | |
475 } | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
476 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
477 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
478 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
479 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
480 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
481 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
482 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
483 ####################################################### |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
484 # Main |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
485 # |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
486 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
487 # load filemaker xml dump |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
488 my ($input_doc, $input_root) = read_xml($infile); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
489 # set namespace prefix |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
490 my $fm_namespace = $input_root->namespaceURI(); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
491 $input_root->setNamespace($fm_namespace, 'fm', 1); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
492 |
16 | 493 # create digilib mapping file for digifiles mode |
494 if ($digifiles_mode) { | |
495 $mapping_doc = XML::LibXML::Document->createDocument('1.0', 'UTF-8'); | |
496 $mapping_root = $mapping_doc->createElementNS($namespace, 'digilib-aliases'); | |
497 $mapping_doc->setDocumentElement($mapping_root); | |
498 #<mapping link="exp1/archimedes_image_repository/archimedes_large/achil_propo_087_la_1545" dir="permanent/archimedes_repository/large/achil_propo_087_la_1545"/> | |
499 | |
500 } | |
501 | |
12
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
502 process_all_fm_entries($input_root); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
503 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
504 |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
505 logger("INFO", "$warncnt warnings"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
506 logger("INFO", "$errcnt errors"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
507 if ($errcnt > 0) { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
508 logger("ABORT", "there were errors!"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
509 exit 1; |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
510 } else { |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
511 logger("DONE", "done something successfully!"); |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
512 } |
620aad237f57
new tool makemeta-lib.pl to create index meta entries from the libraries online sources database
casties
parents:
diff
changeset
|
513 |