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 |
