- Timestamp:
- 2011-03-28T10:41:58+13:00 (13 years ago)
- Location:
- main/trunk/greenstone2/perllib/plugouts
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm
r23387 r23824 368 368 my ($handle,$docroot,$nondoctype) = @_; 369 369 370 print $handle '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' . "\n"; 370 371 #print $handle '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' . "\n"; 372 373 #For Dspace must be UTF in lower case 374 print $handle '<?xml version="1.0" encoding="utf-8" standalone="no"?>' . "\n"; 371 375 372 376 if (!defined $nondoctype){ … … 386 390 print $handle "</$docroot>\n" if defined $docroot; 387 391 } 392 393 394 sub output_general_xml_header 395 { 396 my $self = shift (@_); 397 my ($handle,$docroot,$opt_attributes,$opt_dtd, $opt_doctype) = @_; 398 399 print $handle '<?xml version="1.0" encoding="utf-8" standalone="no"?>' . "\n"; 400 401 if (defined $opt_dtd) { 402 my $doctype = (defined $opt_doctype) ? $opt_doctype : $docroot; 403 print $handle "<!DOCTYPE $doctype SYSTEM \"$opt_dtd\">\n"; 404 } 405 406 if (defined $docroot) { 407 my $full_docroot = $docroot; 408 if (defined $opt_attributes) { 409 $full_docroot .= " $opt_attributes"; 410 } 411 412 print $handle "<$full_docroot>\n" 413 } 414 } 415 416 sub output_general_xml_footer 417 { 418 output_xml_footer(@_); 419 } 420 388 421 389 422 sub process { -
main/trunk/greenstone2/perllib/plugouts/DSpacePlugout.pm
r22921 r23824 28 28 use strict; 29 29 no strict 'refs'; 30 30 use utf8; 31 31 eval {require bytes}; 32 32 use util; … … 37 37 } 38 38 39 my $arguments = []; 39 my $arguments = [ 40 { 'name' => "metadata_prefix", 41 'desc' => "{DSpacePlugout.metadata_prefix}", 42 'type' => "string", 43 'reqd' => "no", 44 'hiddengli' => "no"} ]; 45 40 46 41 47 my $options = { 'name' => "DSpacePlugout", 42 48 'desc' => "{DSpacePlugout.desc}", 43 49 'abstract' => "no", 44 'inherits' => "yes" }; 50 'inherits' => "yes", 51 'args' => $arguments }; 45 52 46 53 sub new { … … 53 60 54 61 my $self = new BasePlugout($plugoutlist,$inputargs,$hashArgOptLists); 55 62 63 print STDERR "***** metadata prefix = \"", $self->{'metadata_prefix'}, "\"\n"; 64 56 65 return bless $self, $class; 66 } 67 68 sub saveas_dspace_metadata 69 { 70 my $self = shift (@_); 71 my ($doc_obj,$working_dir,$metadata_file,$docroot,$metadata_prefix) = @_; 72 73 # my $docroot_attributes = ($metadata_prefix eq "dc") ? undef : "schema=\"$metadata_prefix\""; 74 my $docroot_attributes = "schema=\"$metadata_prefix\""; 75 76 my $doc_dc_file = &util::filename_cat ($working_dir, $metadata_file); 77 $self->open_xslt_pipe($doc_dc_file,$self->{'xslt_file'}); 78 79 my $outhandler; 80 if (defined $self->{'xslt_writer'}){ 81 $outhandler = $self->{'xslt_writer'}; 82 } 83 else{ 84 $outhandler = $self->get_output_handler($doc_dc_file); 85 } 86 87 $self->output_general_xml_header($outhandler, $docroot, $docroot_attributes); 88 89 my $metadata_hashmap = $doc_obj->get_metadata_hashmap($doc_obj->get_top_section(), 90 $metadata_prefix); 91 92 foreach my $metaname (keys %$metadata_hashmap) { 93 my $metavals = $metadata_hashmap->{$metaname}; 94 95 my $qualifier = undef; 96 my $element; 97 if ($metaname =~ m/^(.*?)\^(.*?)$/) { 98 $element = $1; 99 $qualifier = $2; 100 $qualifier = lc($qualifier); 101 } 102 else { 103 $element = $metaname; 104 } 105 $element =~ s/^.*?\.//; 106 $element = lc($element); 107 108 foreach my $metaval (@$metavals) { 109 110 #if element is empty then no need to export it. 111 112 if ($metaval =~ /\S/) { 113 print $outhandler " <dcvalue element=\"$element\""; 114 #If no qualifier then add qualifier="none" 115 #print $outhandler " qualifier=\"$qualifier\"" if defined $qualifier; 116 if (defined $qualifier) { 117 print $outhandler " qualifier=\"$qualifier\"" ; 118 } 119 else { 120 print $outhandler " qualifier=\"none\" language=\"\"" ; 121 } 122 print $outhandler ">$metaval"; 123 print $outhandler "</dcvalue>\n"; 124 } 125 126 127 128 } 129 } 130 131 $self->output_general_xml_footer($outhandler,$docroot); 132 133 if (defined $self->{'xslt_writer'}){ 134 $self->close_xslt_pipe(); 135 } 136 else{ 137 close($outhandler); 138 } 139 57 140 } 58 141 … … 72 155 my $outhandle = $self->{'output_handle'}; 73 156 74 # Genereate handle file 75 # (Note: this section of code would benefit from being restructured) 76 my $doc_handle_file = &util::filename_cat ($working_dir, "handle"); 77 78 my $env_hp = $ENV{'DSPACE_HANDLE_PREFIX'}; 79 my $handle_prefix = (defined $env_hp) ? $env_hp : "123456789"; 80 81 my $outhandler = $self->get_output_handler($doc_handle_file); 82 83 my ($handle) = ($doc_dir =~ m/^(.*)(:?\.dir)?$/); 84 85 print $outhandler "$handle_prefix/$handle\n"; 86 87 close ($outhandler); 88 157 my $generate_handle = 0; 158 if ($generate_handle) { 159 # Genereate handle file 160 # (Note: this section of code would benefit from being restructured) 161 my $doc_handle_file = &util::filename_cat ($working_dir, "handle"); 162 163 my $env_hp = $ENV{'DSPACE_HANDLE_PREFIX'}; 164 my $handle_prefix = (defined $env_hp) ? $env_hp : "123456789"; 165 166 my $outhandler = $self->get_output_handler($doc_handle_file); 167 168 my ($handle) = ($doc_dir =~ m/^(.*)(:?\.dir)?$/); 169 170 print $outhandler "$handle_prefix/$handle\n"; 171 172 close ($outhandler); 173 } 174 89 175 ######################### 90 176 # save the content file … … 92 178 my $doc_contents_file = &util::filename_cat ($working_dir, "contents"); 93 179 94 $outhandler = $self->get_output_handler($doc_contents_file);180 my $outhandler = $self->get_output_handler($doc_contents_file); 95 181 96 182 $self->process_assoc_files ($doc_obj, $doc_dir, $outhandler); … … 100 186 close($outhandler); 101 187 102 188 ############################# 103 189 # save the dublin_core.xml file 104 190 ############################### 105 my $doc_dc_file = &util::filename_cat ($working_dir, "dublin_core.xml"); 106 $self->open_xslt_pipe($doc_dc_file,$self->{'xslt_file'}); 107 108 if (defined $self->{'xslt_writer'}){ 109 $outhandler = $self->{'xslt_writer'}; 110 } 111 else{ 112 $outhandler = $self->get_output_handler($doc_dc_file); 113 } 114 115 $self->output_xml_header($outhandler, "dublin_core",1); 116 117 my $all_text = $self->get_dc_metadata($doc_obj, $doc_obj->get_top_section()); 118 print $outhandler $all_text; 119 120 $self->output_xml_footer($outhandler,"dublin_core"); 121 122 if (defined $self->{'xslt_writer'}){ 123 $self->close_xslt_pipe(); 124 } 125 else{ 126 close($outhandler); 127 } 128 191 # my $doc_dc_file = &util::filename_cat ($working_dir, "dublin_core.xml"); 192 # $self->open_xslt_pipe($doc_dc_file,$self->{'xslt_file'}); 193 194 # if (defined $self->{'xslt_writer'}){ 195 # $outhandler = $self->{'xslt_writer'}; 196 # } 197 # else{ 198 # $outhandler = $self->get_output_handler($doc_dc_file); 199 # } 200 201 # $self->output_general_xml_header($outhandler, "dublin_core"); 202 203 # my $all_text = $self->get_dc_metadata($doc_obj, $doc_obj->get_top_section()); 204 # print $outhandler $all_text; 205 206 # $self->output_general_xml_footer($outhandler,"dublin_core"); 207 208 # if (defined $self->{'xslt_writer'}){ 209 # $self->close_xslt_pipe(); 210 # } 211 # else{ 212 # close($outhandler); 213 # } 214 215 $self->saveas_dspace_metadata($doc_obj,$working_dir, 216 "dublin_core.xml","dublin_core","dc"); 217 218 my $metadata_prefix_list = $self->{'metadata_prefix'}; 219 print STDERR "***!! md prefix = $metadata_prefix_list\n"; 220 221 my @metadata_prefixes = split(/,\s*/,$metadata_prefix_list); 222 foreach my $ep (@metadata_prefixes) { 223 $self->saveas_dspace_metadata($doc_obj,$working_dir, 224 "metadata_$ep.xml","dublin_core",$ep); 225 } 226 129 227 $self->{'short_doc_file'} = &util::filename_cat ($doc_dir, "dublin_core.xml"); 130 228 $self->store_output_info_reference($doc_obj); … … 195 293 } 196 294 197 # Store the associated file to the "contents" file 198 print $handle "$assoc_file_rec->[1]\t$bundle\n"; 295 # Store the associated file to the "contents" file. Cover.pdf not needed. 296 if ($afile ne "cover.jpg") { 297 print $handle "$assoc_file_rec->[1]\t$bundle\n"; 199 298 } 299 } 200 300 201 202 301 $filename = &util::filename_cat($working_dir, $afile); 203 302 204 205 206 207 $doc_obj->add_utf8_metadata ($doc_obj->get_top_section(),208 "gsdlassocfile",209 "$afile:$assoc_file_rec->[2]:$dir");303 if ($afile ne "cover.jpg") { 304 &util::hard_link ($real_filename, $filename, $self->{'verbosity'}); 305 $doc_obj->add_utf8_metadata ($doc_obj->get_top_section(), 306 "gsdlassocfile", 307 "$afile:$assoc_file_rec->[2]:$dir"); 308 } 210 309 } elsif ($self->{'verbosity'} > 2) { 211 310 print $outhandler "DSpacePlugout::process couldn't copy the associated file " .
Note:
See TracChangeset
for help on using the changeset viewer.