Changeset 21916
- Timestamp:
- 2010-04-20T13:10:05+12:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/plugins/MetadataXMLPlugin.pm
r21905 r21916 163 163 } 164 164 165 sub get_doctype { 166 my $self = shift(@_); 167 168 return "(Greenstone)?DirectoryMetadata" 169 } 170 171 sub can_process_this_file { 172 my $self = shift(@_); 173 my ($filename) = @_; 174 175 if (-f $filename && $self->SUPER::can_process_this_file($filename) && $self->check_doctype($filename)) { 176 return 1; # its a file for us 177 } 178 return 0; 179 } 180 181 sub check_doctype { 182 my $self = shift (@_); 183 184 my ($filename) = @_; 185 186 if (open(XMLIN,"<$filename")) { 187 my $doctype = $self->get_doctype(); 188 ## check whether the doctype has the same name as the root element tag 189 while (defined (my $line = <XMLIN>)) { 190 ## find the root element 191 if ($line =~ /<([\w\d:]+)[\s>]/){ 192 my $root = $1; 193 if ($root !~ $doctype){ 194 close(XMLIN); 195 return 0; 196 } 197 else { 198 close(XMLIN); 199 return 1; 200 } 201 } 202 } 203 close(XMLIN); 204 } 205 206 return undef; # haven't found a valid line 207 208 } 165 209 166 210 sub file_block_read { … … 168 212 my ($pluginfo, $base_dir, $file, $block_hash, $metadata, $gli) = @_; 169 213 170 my $filename = &util::filename_cat($base_dir, $file); 171 if ($filename !~ /metadata\.xml$/ || !-f $filename) { 172 return undef; 173 } 174 175 $block_hash->{'metadata_files'}->{$filename} = 1; 214 my $filename_full_path = &util::filename_cat($base_dir, $file); 215 return undef unless $self->can_process_this_file($filename_full_path); 216 217 $block_hash->{'metadata_files'}->{$filename_full_path} = 1; 176 218 177 219 return 1; … … 186 228 187 229 my $filename = &util::filename_cat($base_dir, $file); 188 if ($filename !~ /metadata\.xml$/ || !-f $filename) { 189 return undef; 190 } 230 return undef unless $self->can_process_this_file($filename); 191 231 192 232 $self->{'metadata-file'} = $file; 193 233 $self->{'metadata-filename'} = $filename; 194 195 234 196 235 my $outhandle = $self->{'outhandle'}; … … 328 367 } 329 368 330 #sub combine_metadata_structures331 #{332 # my $self = shift(@_);333 #334 # my ($mdref1, $mdref2) = @_;335 # &metadatautil::combine_metadata_structures($mdref1, $mdref2);336 #}337 369 338 370
Note:
See TracChangeset
for help on using the changeset viewer.