Changeset 23167
- Timestamp:
- 2010-10-19T14:14:18+13:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/plugins/GreenstoneXMLPlugin.pm
r22841 r23167 33 33 34 34 use Encode; 35 use File::Basename; 35 36 36 37 use ReadXMLFile; … … 80 81 $self->{'metadata_value'} = ""; 81 82 $self->{'content'} = ""; 83 $self->{'metadata_read_store'} = {}; 82 84 83 85 # # Currently used to store information for previous values controls. In … … 87 89 return bless $self, $class; 88 90 } 91 92 93 94 95 sub metadata_read { 96 my $self = shift (@_); 97 my ($pluginfo, $base_dir, $file, $block_hash, 98 $extrametakeys, $extrametadata, $extrametafile, 99 $processor, $maxdocs, $gli) = @_; 100 101 my $outhandle = $self->{'outhandle'}; 102 103 # can we process this file?? 104 my ($filename_full_path, $filename_no_path) = &util::get_full_filenames($base_dir, $file); 105 return undef unless $self->can_process_this_file($filename_full_path); 106 107 $file =~ s/^[\/\\]+//; # $file often begins with / so we'll tidy it up 108 109 print $outhandle "GreenstoneXMLlugin: setting up block list for $file\n" 110 if $self->{'verbosity'} > 1; 111 112 my $line; 113 if (open(GIN,"<:utf8",$filename_full_path)) { 114 115 while (defined($line=<GIN>)) { 116 if ($line =~ m@<Metadata\s+name="gsdlassocfile">([^:]*):(?:[^:]*):(?:[^:]*)</Metadata>@) { 117 my $gsdl_assoc_file = $1; 118 119 my $dirname = dirname($filename_full_path); 120 my $full_gsdl_assoc_filename = &util::filename_cat($dirname,$gsdl_assoc_file); 121 if ($self->{'verbosity'}>2) { 122 print $outhandle " Storing block list item: $full_gsdl_assoc_filename\n"; 123 } 124 125 $block_hash->{'file_blocks'}->{$full_gsdl_assoc_filename} = 1; 126 } 127 } 128 129 close(GIN); 130 } 131 else { 132 133 print $outhandle "Error: Failed to open $file in GreenstoneXMLPlugin::metadata_read()\n"; 134 print $outhandle " $!\n"; 135 } 136 137 138 $self->{'metadata_read_store'}->{$filename_full_path} = 1; 139 140 return 1; 141 } 142 89 143 90 144 sub xml_start_document { … … 221 275 my $self = shift(@_); 222 276 277 my $filename = $self->{'filename'}; 278 223 279 # create a new document 224 $self->{'doc_obj'} = new doc (); 280 if (defined $self->{'metadata_read_store'}->{$filename}) { 281 # Being processed as part of *import* phase 282 # (i.e. was in import directory) 283 $self->SUPER::open_document(@_); 284 delete $self->{'metadata_read_store'}->{$filename}; 285 } 286 else { 287 # Otherwise being processed as part of the *buildcol* phase 288 # (i.e. named directly by ArchiveInf plugin) 289 $self->{'doc_obj'} = new doc(); 290 } 291 225 292 $self->{'section'} = ""; 226 293 }
Note:
See TracChangeset
for help on using the changeset viewer.