annotate makemeta-vlp.pl @ 60:5bee75ca9eb3 default tip

added old makemeta-quantum.pl that was not in CVS.
author casties
date Thu, 16 Mar 2017 18:29:58 +0100
parents 2208ed7370cb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
57
2208ed7370cb updated to Ubuntu Perl paths.
casties
parents: 56
diff changeset
1 #!/usr/bin/perl -w
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
2
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
3 use strict;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
4 use XML::LibXML;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
5
22
c3defe3e2780 corrected perl lib path
casties
parents: 21
diff changeset
6 use lib '/usr/local/mpiwg/archive';
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
7 use MPIWGStor;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
8
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
9 # make output unbuffered
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
10 $|=1;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
11
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
12 # program version
56
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
13 my $version = "0.2.7 (27.8.2010 ROC)";
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
14 my $help =
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
15 "use: makemeta-vlp [options] file.xml
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
16 options:
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
17 -debug show debugging info
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
18 -dry-run simulate, dont'do anything
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
19 -replace replace existing index files
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
20 -online-mode mode for creating online/permanent files
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
21 -archive-mode mode for creating archive/data files
44
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
22 -access=free adds free access tag for online-mode
56
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
23 -texttool adds texttool tag for online-mode
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
24 ";
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
25 logger("INFO", "makemeta-vlp $version");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
26
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
27 ###########################################
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
28 # mappings
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
29
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
30 # generic mappings at top level
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
31 my %gen_map = (
44
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
32 'Custom2_Language' => 'meta/lang',
48
173e9823761e fixed typo in mapping
casties
parents: 44
diff changeset
33 'productionComment' => 'meta/image-acquisition/production-comment',
44
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
34 'derivedFrom' => 'derived-from/archive-path'
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
35 );
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
36 # sub type switch tag
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
37 my %type_map = (
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
38 'ReferenceType' => 'meta/bib@type'
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
39 );
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
40 # sub type mappings
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
41 my %subtype_map = (
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
42 'Book' => {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
43 '_name' => 'book',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
44 'Author' => 'meta/bib/author',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
45 'Title' => 'meta/bib/title',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
46 'Year' => 'meta/bib/year',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
47 'Place_Published' => 'meta/bib/city',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
48 'Publisher' => 'meta/bib/publisher',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
49 'Edition' => 'meta/bib/edition',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
50 'Volume' => 'meta/bib/volume',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
51 'NumberOfVolumes' => 'meta/bib/number-of-volumes',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
52 'Pages' => 'meta/bib/number-of-pages'
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
53 },
31
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
54 '(Book)' => {
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
55 '_name' => 'book',
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
56 'Author' => 'meta/bib/author',
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
57 'Title' => 'meta/bib/title',
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
58 'Year' => 'meta/bib/year',
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
59 'Place_Published' => 'meta/bib/city',
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
60 'Publisher' => 'meta/bib/publisher',
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
61 'Edition' => 'meta/bib/edition',
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
62 'Volume' => 'meta/bib/volume',
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
63 'NumberOfVolumes' => 'meta/bib/number-of-volumes',
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
64 'Pages' => 'meta/bib/number-of-pages',
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
65 '#Cover pages only, book sections have been extracted' => 'meta/bib/comment'
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
66 },
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
67 'Book Section' => {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
68 '_name' => 'inbook',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
69 'Author' => 'meta/bib/author',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
70 'Title' => 'meta/bib/title',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
71 'Year' => 'meta/bib/year',
31
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
72 'SecondaryTitle' => 'meta/bib/book-title',
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
73 'SecondaryAuthor' => 'meta/bib/editor',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
74 'Volume' => 'meta/bib/volume',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
75 'NumberOfVolumes' => 'meta/bib/number-of-volumes',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
76 'Pages' => 'meta/bib/pages'
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
77 },
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
78 'Edited Book' => {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
79 '_name' => 'edited-book',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
80 'Author' => 'meta/bib/editor',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
81 'Title' => 'meta/bib/title',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
82 'Year' => 'meta/bib/year',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
83 'Place_Published' => 'meta/bib/city',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
84 'Publisher' => 'meta/bib/publisher',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
85 'Edition' => 'meta/bib/edition',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
86 'Volume' => 'meta/bib/volume',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
87 'NumberOfVolumes' => 'meta/bib/number-of-volumes',
33
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
88 'Pages' => 'meta/bib/number-of-pages',
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
89 '#Cover pages only, book sections have been extracted' => 'meta/bib/comment'
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
90 },
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
91 '(Edited Book)' => {
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
92 '_name' => 'edited-book',
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
93 'Author' => 'meta/bib/editor',
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
94 'Title' => 'meta/bib/title',
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
95 'Year' => 'meta/bib/year',
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
96 'Place_Published' => 'meta/bib/city',
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
97 'Publisher' => 'meta/bib/publisher',
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
98 'Edition' => 'meta/bib/edition',
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
99 'Volume' => 'meta/bib/volume',
9868f6ed9a54 added (Edited Book) type
casties
parents: 31
diff changeset
100 'NumberOfVolumes' => 'meta/bib/number-of-volumes',
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
101 'Pages' => 'meta/bib/number-of-pages'
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
102 },
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
103 'Journal Article' => {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
104 '_name' => 'journal-article',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
105 'Author' => 'meta/bib/author',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
106 'Title' => 'meta/bib/title',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
107 'Year' => 'meta/bib/year',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
108 'SecondaryTitle' => 'meta/bib/journal',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
109 'Volume' => 'meta/bib/volume',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
110 'Number_Issue' => 'meta/bib/issue',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
111 'Pages' => 'meta/bib/pages'
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
112 },
38
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
113 '(JournalVolume)' => {
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
114 '_name' => 'journal-volume',
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
115 'SecondaryTitle' => 'meta/bib/title',
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
116 'SecondaryAuthor' => 'meta/bib/editor',
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
117 'Publisher' => 'meta/bib/publisher',
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
118 'Place_Published' => 'meta/bib/city',
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
119 'Year' => 'meta/bib/year',
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
120 'Volume' => 'meta/bib/volume',
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
121 'Pages' => 'meta/bib/number-of-pages',
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
122 '#Cover pages only, articles have been extracted' => 'meta/bib/comment'
7bf843ac256b new bib type (JournalVolume)
casties
parents: 33
diff changeset
123 },
56
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
124 'Journal' => {
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
125 '_name' => 'report',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
126 'Title' => 'meta/bib/title',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
127 'SecondaryTitle' => 'meta/bib/institution',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
128 'Author' => 'meta/bib/author',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
129 'Place_Published' => 'meta/bib/city',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
130 'Year' => 'meta/bib/year',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
131 'Date' => 'meta/bib/date',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
132 'Pages' => 'meta/bib/pages',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
133 },
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
134 'Magazine Article' => {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
135 '_name' => 'magazine-article',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
136 'Author' => 'meta/bib/author',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
137 'Title' => 'meta/bib/title',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
138 'Year' => 'meta/bib/year',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
139 'Secondary_Title' => 'meta/bib/magazine',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
140 'Number_Issue' => 'meta/bib/issue-number',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
141 'Date' => 'meta/bib/issue-date',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
142 'Pages' => 'meta/bib/pages'
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
143 },
56
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
144 'Newspaper Article' => {
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
145 '_name' => 'newspaper-article',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
146 'Author' => 'meta/bib/author',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
147 'Title' => 'meta/bib/title',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
148 'Year' => 'meta/bib/year',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
149 'Secondary_Title' => 'meta/bib/newspaper',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
150 'Date' => 'meta/bib/issue-date',
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
151 'Pages' => 'meta/bib/pages'
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
152 },
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
153 'Report' => {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
154 '_name' => 'report',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
155 'Author' => 'meta/bib/author',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
156 'Title' => 'meta/bib/title',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
157 'Year' => 'meta/bib/year',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
158 'Place_Published' => 'meta/bib/city',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
159 'Date' => 'meta/bib/date',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
160 'SecondaryTitle' => 'meta/bib/type',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
161 'Pages' => 'meta/bib/pages'
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
162 },
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
163 'Trade Catalogue' => {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
164 '_name' => 'report',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
165 'Author' => 'meta/bib/author',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
166 'Title' => 'meta/bib/title',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
167 'Year' => 'meta/bib/year',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
168 'Place_Published' => 'meta/bib/city',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
169 'Date' => 'meta/bib/date',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
170 'Volume' => 'meta/bib/volume',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
171 'NumberOfVolumes' => 'meta/bib/number-of-volumes',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
172 'ReferenceType' => 'meta/bib/type',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
173 'Pages' => 'meta/bib/pages'
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
174 },
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
175 'Thesis' => {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
176 '_name' => 'thesis',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
177 'Author' => 'meta/bib/author',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
178 'Title' => 'meta/bib/title',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
179 'Place_Published' => 'meta/bib/city',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
180 'Publisher' => 'meta/bib/university',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
181 'Date' => 'meta/bib/date',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
182 'TypeOfWork' => 'meta/bib/type',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
183 'Pages' => 'meta/bib/number-of-pages'
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
184 },
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
185 'Manuscript' => {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
186 '_name' => 'manuscript',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
187 'Author' => 'meta/bib/author',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
188 'Title' => 'meta/bib/title',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
189 'Year' => 'meta/bib/year',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
190 'Place_Published' => 'meta/bib/location',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
191 'Pages' => 'meta/bib/pages'
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
192 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
193 );
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
194 # language element
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
195 my $lang_field = 'Custom2_Language';
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
196 # languages to iso codes
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
197 my %lang_map = (
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
198 'German' => 'de',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
199 'English' => 'en',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
200 'Italian' => 'it',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
201 'French' => 'fr',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
202 'Latin' => 'la',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
203 'Japanese' => 'ja',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
204 'Dutch' => 'nl',
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
205 'Spanish' => 'es',
54
8e19bc5ca86a added some more languages
casties
parents: 48
diff changeset
206 'Swedish' => 'sv',
8e19bc5ca86a added some more languages
casties
parents: 48
diff changeset
207 'Russian' => 'ru',
8e19bc5ca86a added some more languages
casties
parents: 48
diff changeset
208 'Polish' => 'pl',
8e19bc5ca86a added some more languages
casties
parents: 48
diff changeset
209 'Greek' => 'el'
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
210 );
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
211 # storage fields
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
212 my $arch_id_field = 'ID';
56
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
213 my $access_free_field = 'online';
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
214
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
215 #######################################################
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
216 # internal parameters
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
217 #
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
218
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
219 # storage
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
220 my $lib_arch_dir = '/mpiwg/archive/data/vlp';
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
221 my $lib_online_dir = '/mpiwg/online/permanent/vlp';
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
222
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
223 # read command line parameters
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
224 my $args = MPIWGStor::parseargs;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
225 if (! scalar(%$args)) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
226 print $help, "\n";
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
227 exit 1;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
228 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
229
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
230 # debug level
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
231 $debug = (exists $$args{'debug'}) ? $$args{'debug'} : 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
232
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
233 # simulate action only
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
234 my $dry_run = (exists $$args{'dry-run'}) ? $$args{'dry-run'} : 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
235 logger('DEBUG', "dry-run: $dry_run");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
236
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
237 # replace existing index files
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
238 my $do_replace = (exists $$args{'replace'}) ? $$args{'replace'} : 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
239 logger('DEBUG', "replace: $do_replace");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
240
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
241 # use online mode
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
242 my $online_mode = (exists $$args{'online-mode'}) ? $$args{'online-mode'} : 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
243 logger('DEBUG', "online_mode: $online_mode");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
244
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
245 # use archive mode
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
246 my $archive_mode = (exists $$args{'archive-mode'}) ? $$args{'archive-mode'} : 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
247 logger('DEBUG', "archive_mode: $archive_mode");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
248
56
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
249 # create texttool tag (online mode only)
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
250 my $texttool = (exists $$args{'texttool'}) ? $$args{'texttool'} : 1;
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
251 logger('DEBUG', "texttool: $texttool");
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
252 # image dir for texttool
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
253 my $texttool_img_dir = "pages";
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
254
44
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
255 # access type
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
256 my $access_type = (exists $$args{'access'}) ? $$args{'access'} : "";
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
257
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
258 # index.meta namespace (not really implemented!)
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
259 my $namespace = "";
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
260
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
261
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
262 my $xml_changed = 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
263 my $errcnt = 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
264 my $warncnt = 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
265
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
266 #######################################################
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
267 # check parameters that were passed to the program
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
268 #
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
269 my $infile = $$args{'path'};
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
270 if (! $infile) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
271 logger("ABORT", "no input file given!");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
272 exit 1;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
273 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
274 # strip double slashes
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
275 $infile =~ s/\/\//\//;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
276 if (! -f $infile) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
277 logger("ABORT", "input file \'$infile\' doesn't exist!");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
278 exit 1;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
279 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
280
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
281
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
282 #######################################################
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
283 # subroutines
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
284 #
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
285
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
286
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
287 sub find_arch_dir {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
288 my ($input_node) = @_;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
289 my $dir = "";
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
290
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
291 my $bib_id = $input_node->findvalue("fm:$arch_id_field");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
292 #logger('DEBUG', "bibdir: $bib_dir");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
293 if ($bib_id) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
294 $dir = "$lib_arch_dir/lit$bib_id";
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
295 if (-d $dir) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
296 logger('DEBUG', "directory $dir exists");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
297 return $dir;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
298 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
299 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
300 return;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
301 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
302
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
303 sub find_permanent_dir {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
304 my ($input_node) = @_;
44
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
305 my $online_base = $lib_online_dir;
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
306 my $dest_id = sstrip($input_node->findvalue("fm:$arch_id_field"));
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
307 if (! $dest_id) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
308 logger('ERROR', "no ID field for online permanent entry");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
309 $errcnt++;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
310 return;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
311 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
312 my $dir = "$online_base/lit$dest_id";
56
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
313 if (-d $dir) {
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
314 logger('DEBUG', "directory $dir exists");
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
315 return $dir;
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
316 }
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
317 return;
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
318 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
319
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
320
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
321 sub convert_bib {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
322 my ($input_node, $index_root, $index_doc) = @_;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
323 my $cnt = 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
324 my $type = "";
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
325 my $type_path = "";
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
326
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
327 # process general stuff first
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
328 foreach my $n ($input_node->getChildNodes()) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
329 my $name = $n->nodeName();
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
330 my $val = $n->textContent();
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
331 #logger('DEBUG', " NODE: $name = '$val'");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
332 if (exists $gen_map{$name}) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
333 # is a general field
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
334 if ($name eq $lang_field) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
335 # language field
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
336 if (not $val) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
337 logger('WARNING', "no language tag");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
338 $warncnt++;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
339 next;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
340 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
341 # convert to iso code
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
342 if (exists $lang_map{$val}) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
343 $val = $lang_map{$val};
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
344 } else {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
345 logger('ERROR', "unknown language: $val! skipping...");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
346 $errcnt++;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
347 return 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
348 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
349 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
350 create_element_path($gen_map{$name}, $index_root, $namespace)
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
351 ->appendTextNode($val);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
352 $cnt++;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
353 } elsif (exists $type_map{$name}) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
354 # is a type field
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
355 $type_path = $type_map{$name};
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
356 $type = $val;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
357 # check with known types
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
358 if (exists $subtype_map{$val}) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
359 my $indextype = $subtype_map{$val}->{'_name'};
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
360 create_element_path("$type_path=$indextype", $index_root, $namespace);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
361 $cnt++;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
362 } else {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
363 logger('ERROR', "unknown bib type $val! skipping...");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
364 $errcnt++;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
365 return 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
366 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
367 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
368 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
369 # process sub type fields
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
370 if ($type) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
371 foreach my $n ($input_node->getChildNodes()) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
372 my $name = $n->nodeName();
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
373 my $val = $n->textContent();
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
374 #logger('DEBUG', " NODE: $name = '$val'");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
375 if (exists $subtype_map{$type}->{$name}) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
376 create_element_path($subtype_map{$type}->{$name}, $index_root, $namespace)
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
377 ->appendTextNode($val);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
378 $cnt++;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
379 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
380 }
31
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
381 # append additional constant fields (beginning with #)
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
382 foreach my $k (keys %{$subtype_map{$type}}) {
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
383 if ($k =~ /^\#(.*)/) {
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
384 my $val = $1;
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
385 create_text_path($subtype_map{$type}->{$k}, $val, $index_root, $namespace);
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
386 }
de63fae5f483 added document type (Book)
casties
parents: 22
diff changeset
387 }
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
388 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
389 return $cnt;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
390 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
391
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
392
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
393
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
394 sub process_all_fm_entries {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
395 my ($input_root) = @_;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
396 my $cnt = 0;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
397
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
398 foreach my $n ($input_root->findnodes('fm:ROW')) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
399 logger('INFO', "processing entry $cnt ...");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
400 process_fm_entry($n);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
401 $cnt++;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
402 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
403 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
404
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
405
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
406 sub process_fm_entry {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
407 my ($input_node) = @_;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
408 my $index_doc = XML::LibXML::Document->createDocument('1.0', 'UTF-8');
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
409 my $index_root = $index_doc->createElementNS($namespace, 'resource');
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
410 $index_root->addChild($index_doc->createAttributeNS($namespace, 'version', '1.1'));
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
411 $index_root->addChild($index_doc->createAttributeNS($namespace, 'type', 'MPIWG'));
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
412 $index_doc->setDocumentElement($index_root);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
413
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
414 # try to find the document directory
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
415 my $doc_dir = "";
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
416 if ($online_mode) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
417 $doc_dir = find_permanent_dir($input_node);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
418 } elsif ($archive_mode) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
419 $doc_dir = find_arch_dir($input_node);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
420 } else {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
421 $doc_dir = find_permanent_dir($input_node);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
422 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
423 if (! $doc_dir) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
424 logger('ERROR', "document directory not found! skipping...");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
425 $errcnt++;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
426 return;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
427 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
428
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
429 # check if index.meta exists
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
430 if ( -f "$doc_dir/index.meta") {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
431 if (not $do_replace) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
432 logger('DEBUG', "index file in $doc_dir exists");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
433 return;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
434 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
435 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
436
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
437 # add standard stuff to index.meta
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
438 my ($docname, $docpath) = split_file_path($doc_dir);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
439 # name and date
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
440 create_text_path('name', $docname, $index_root, $namespace);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
441 create_text_path('archive-path', $doc_dir, $index_root, $namespace);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
442 create_text_path('archive-creation-date', stime(time), $index_root, $namespace);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
443 create_text_path('creator', 'vlp', $index_root, $namespace);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
444 create_text_path('description', 'a scanned document', $index_root, $namespace);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
445 if ($archive_mode) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
446 # acquisition
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
447 create_text_path('meta/acquisition/date', stime(time), $index_root, $namespace);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
448 create_text_path('meta/acquisition/provider/provider-id', 'vlp', $index_root, $namespace);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
449 create_text_path('meta/acquisition/provider/address', 'Max Planck Institute for the History of Science', $index_root, $namespace);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
450 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
451 # media
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
452 create_text_path('media-type', 'image', $index_root, $namespace);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
453 create_text_path('meta/content-type', 'scanned document', $index_root, $namespace);
44
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
454 # access
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
455 if ($access_type) {
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
456 if ($access_type eq "free") {
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
457 create_element_path('meta/access-conditions/access@type=free', $index_root, $namespace);
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
458 } else {
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
459 my $acc_tag = create_element_path('meta/access-conditions/access@type=institution', $index_root, $namespace);
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
460 create_text_path('name', $access_type, $acc_tag, $namespace);
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
461 }
56
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
462 } elsif ($online_mode) {
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
463 # read access conditions from "online" field in DB dump
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
464 my $online = sstrip($input_node->findvalue("fm:$access_free_field"));
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
465 if ($online) {
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
466 create_element_path('meta/access-conditions/access@type=free', $index_root, $namespace);
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
467 } else {
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
468 my $acc_tag = create_element_path('meta/access-conditions/access@type=institution', $index_root, $namespace);
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
469 create_text_path('name', 'mpiwg', $acc_tag, $namespace);
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
470 }
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
471 }
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
472
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
473 # texttool tag with image dir
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
474 if ($online_mode && $texttool) {
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
475 if ( -d "$doc_dir/$texttool_img_dir" ) {
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
476 create_text_path('meta/texttool/image', $texttool_img_dir,$index_root, $namespace);
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
477 } else {
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
478 logger('WARNING', "page image directory missing!");
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
479 $warncnt++;
9d7df218f94c added more bib-formats
casties
parents: 54
diff changeset
480 }
44
af4323868086 added production-comment, derived-from and access handling
casties
parents: 38
diff changeset
481 }
21
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
482
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
483 # convert bib entries
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
484 my $cnt = convert_bib($input_node, $index_root, $index_doc);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
485 if ($cnt == 0) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
486 # error or nothing to convert
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
487 logger('ERROR', "no bibliographic metadata!");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
488 $errcnt++;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
489 return;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
490 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
491
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
492 # write new index.meta file
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
493 if ($dry_run) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
494 logger('DEBUG', "would write $doc_dir/index.meta");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
495 logger('DEBUG', $index_doc->toString(1));
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
496 } else {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
497 write_xml($index_doc, "$doc_dir/index.meta");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
498 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
499
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
500 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
501
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
502
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
503
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
504
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
505
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
506 #######################################################
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
507 # Main
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
508 #
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
509
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
510 # load filemaker xml dump
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
511 my ($input_doc, $input_root) = read_xml($infile);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
512 # set namespace prefix
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
513 my $fm_namespace = $input_root->namespaceURI();
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
514 $input_root->setNamespace($fm_namespace, 'fm', 1);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
515
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
516
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
517 process_all_fm_entries($input_root);
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
518
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
519
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
520 logger("INFO", "$warncnt warnings");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
521 logger("INFO", "$errcnt errors");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
522 if ($errcnt > 0) {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
523 logger("ABORT", "there were errors!");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
524 exit 1;
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
525 } else {
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
526 logger("DONE", "done something successfully!");
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
527 }
c8e4e8cb31dd new tool for createing index files for vlp documents
casties
parents:
diff changeset
528