source: main/trunk/greenstone2/perllib/extrametautil.pm@ 36372

Last change on this file since 36372 was 36372, checked in by kjdon, 21 months ago

tidy up of extrametautil, renaming some methods to make them easier to understand, removing anything unused. then modifying plugins to use new methods. Also, moved some common code to MetadataRead function, can call this from several plugins instead of duplicating code. This is an interim commit, where I have left in the old code to make it easier to track changes. Next commit will have everything tidied up.

File size: 6.3 KB
Line 
1###########################################################################
2#
3# extrametautil.pm -- various useful utilities
4# A component of the Greenstone digital library software
5# from the New Zealand Digital Library Project at the
6# University of Waikato, New Zealand.
7#
8# Copyright (C) 1999 New Zealand Digital Library Project
9#
10# This program is free software; you can redistribute it and/or modify
11# it under the terms of the GNU General Public License as published by
12# the Free Software Foundation; either version 2 of the License, or
13# (at your option) any later version.
14#
15# This program is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18# GNU General Public License for more details.
19#
20# You should have received a copy of the GNU General Public License
21# along with this program; if not, write to the Free Software
22# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23#
24###########################################################################
25
26package extrametautil;
27
28use strict;
29
30use util;
31#use Encode;
32#use File::Copy;
33use File::Basename;
34
35
36# extrametakeys - an array that contains all the filenames for which we have
37# some added metadata
38#---------------------------------
39sub addmetakey {
40 my ($extrametakeys, $filename_re_for_metadata) = @_;
41 push(@$extrametakeys, $filename_re_for_metadata);
42}
43
44# extrametafiles - a hash on filenames (the files to which metadata will be
45# associated), containing a hash of file->fullfilename for all the metadata
46# files that metadata was obtained from
47#-------------------------------------------
48
49sub addmetafile {
50 my ($extrametafile, $filename_re_for_metadata, $file, $filename_full_path) = @_;
51 if (!defined $extrametafile->{$filename_re_for_metadata}) {
52 $extrametafile->{$filename_re_for_metadata} = {};
53 }
54 $extrametafile->{$filename_re_for_metadata}->{$file} = $filename_full_path;
55}
56
57# was called setmetafile
58sub setmetafilehash {
59 my ($extrametafile, $filename_re_for_metadata, $file_hash) = @_;
60 $extrametafile->{$filename_re_for_metadata} = $file_hash;
61}
62
63# was called getmetafile
64sub getmetafilehash {
65 my ($extrametafile, $filename_re_for_metadata) = @_;
66 return $extrametafile->{$filename_re_for_metadata};
67}
68
69# extrametadata - a hash on filenames (the files to which metadata will be
70# associated), containing a hash of name->[value array] pairs of metadata
71#----------------------------------------
72
73# set the metadata hash for a particular file
74sub setmetadata {
75 my ($extrametadata, $filename_re_for_metadata, $meta_hash) = @_;
76 $extrametadata->{$filename_re_for_metadata} = $meta_hash;
77}
78
79# gets the metadata hash for a particular file
80sub getmetadata {
81 my ($extrametadata, $filename_re_for_metadata) = @_;
82 return $extrametadata->{$filename_re_for_metadata};
83}
84
85# add a single value to a specific metadata field
86sub addmetadatum {
87 my ($extrametadata, $filename_re_for_metadata, $field_name, $value) = @_;
88 if (!defined $extrametadata->{$filename_re_for_metadata}->{$field_name}) {
89 $extrametadata->{$filename_re_for_metadata}->{$field_name} = [];
90 }
91 my $metaname_vals = $extrametadata->{$filename_re_for_metadata}->{$field_name};
92 push(@$metaname_vals, $value);
93}
94
95# get a specific value for a particular metadata field
96# e.g. $extrametadata->{$filename_re_for_metadata}->{"dc.Identifier"}->[0]
97sub getmetadatum_by_index {
98 my ($extrametadata, $filename_re_for_metadata, $metaname, $index) = @_;
99 return $extrametadata->{$filename_re_for_metadata}->{$metaname}->[$index];
100}
101
102#----------------------------------------------
103#### unused below here
104
105# Unused. Added for symmetry
106sub addmetadata_UNUSED {
107 my ($extrametadata, $filename_re_for_metadata, $value) = @_;
108 my $metanames = $extrametadata->{$filename_re_for_metadata};
109 push(@$metanames, $value);
110}
111
112# Unused. Added for symmetry
113sub addmetafile_UNUSED {
114 my ($extrametafile, $filename_re_for_metadata, $file) = @_;
115 my $metafiles = $extrametafile->{$filename_re_for_metadata};
116 push(@$metafiles, $file);
117}
118
119sub addmetadata_for_named_metaname_OLD { # e.g. push(@{$extrametadata->{$filename_re_for_metadata}->{$field_name}}, $value);
120 my ($extrametadata, $filename_re_for_metadata, $field_name, $value) = @_;
121 my $metaname_vals = $extrametadata->{$filename_re_for_metadata}->{$field_name};
122 push(@$metaname_vals, $value);
123}
124
125# Unused. Added for symmetry
126sub addmetafile_for_named_file_UNUSED {
127 my ($extrametafile, $filename_re_for_metadata, $file, $filename_full_path) = @_;
128 my $metafile_vals = $extrametafile->{$filename_re_for_metadata}->{$file};
129 push(@$metafile_vals, $filename_full_path);
130}
131
132
133#**************** In future, may be useful to expand this utility file
134#**************** by having remove methods to mirror the add methods
135
136
137#******************* GET methods
138
139
140sub getmetadata_for_named_metaname_OLD {
141 my ($extrametadata, $filename_re_for_metadata, $field_name) = @_;
142 return $extrametadata->{$filename_re_for_metadata}->{$field_name}; # e.g. $extrametadata->{$filename_re_for_metadata}->{$field_name}
143}
144
145# Unused. Added for symmetry
146sub getmetafile_for_named_file_UNUSED {
147 my ($extrametafile, $filename_re_for_metadata, $file) = @_;
148 return $extrametafile->{$filename_re_for_metadata}->{$file};
149}
150
151
152
153#******************* SET methods
154
155# set an individual name-value pair in the metadata hash for a particular file
156sub setmetadata_for_named_metaname_OLD {
157 my ($extrametadata, $filename_re_for_metadata, $field_name, $value) = @_;
158 $extrametadata->{$filename_re_for_metadata}->{$field_name} = $value;
159}
160sub setmetafile_UNUSED { # e.g. $extrametafile{$filename_re_for_metadata} = $file;
161 my ($extrametafile, $filename_re_for_metadata, $file, $filename_full_path) = @_;
162 $extrametafile->{$filename_re_for_metadata} = $file;
163}
164
165sub setmetafile_for_named_file_OLD {
166 my ($extrametafile, $filename_re_for_metadata, $file, $filename_full_path) = @_;
167 $extrametafile->{$filename_re_for_metadata}->{$file} = $filename_full_path;
168}
169
170# Unused. Added for symmetry
171sub setmetadata_for_named_pos_UNUSED {
172 my ($extrametadata, $filename_re_for_metadata, $metaname, $index, $value) = @_;
173 $extrametadata->{$filename_re_for_metadata}->{$metaname}->[$index] = $value;
174}
175
176
1771;
Note: See TracBrowser for help on using the repository browser.