From 7b7533aa048216017b4deccee5184c94c048a296 Mon Sep 17 00:00:00 2001 From: Timothy Miles-Board Date: Fri, 19 Dec 2014 15:58:10 +0000 Subject: [PATCH 01/42] Fix 2 files appear missing from epmi, checksum for z_datacitedoi.pl out of date --- DataCiteDoi.epmi | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/DataCiteDoi.epmi b/DataCiteDoi.epmi index 9d33088..f156a55 100644 --- a/DataCiteDoi.epmi +++ b/DataCiteDoi.epmi @@ -1,33 +1,47 @@ - + DataCiteDoi http://eprints/id/epm/DataCiteDoi + + epm/DataCiteDoi/cfg/cfg.d/z_datacite_core.pl + text/plain + 24850ea6a0a61e932aff48de559a9b28 + MD5 + 696 + epm/DataCiteDoi/cfg/cfg.d/z_datacitedoi.pl text/plain - fcb3176e88cf0bccb6c8e000bd1ac0da + 37dcb325580147f795b86d8c18c0556e + MD5 + 2303 + + + plugins/EPrints/Plugin/Event/DataCiteEvent.pm + inode/symlink + a4626d18add344225c4a8063b8da39cf MD5 - 1070 + 2101 plugins/EPrints/Plugin/Export/DataCiteXML.pm - application/x-symlink - 84f4180876ff95bdde9f78a6a4c300e6 + inode/symlink + fbf23f01140ea16fd5e6a322c89f199a MD5 - 3898 + 3906 static/images/epm/datacitedoi.png - application/x-symlink + inode/symlink 14e9e2be0a73f452533488634aaea66e MD5 101504 - application/x-symlink + inode/symlink other
static/images/epm/datacitedoi.png
install @@ -36,7 +50,7 @@ static/images/epm/datacitedoi.png - application/x-symlink + inode/symlink 14e9e2be0a73f452533488634aaea66e MD5 101504 @@ -47,7 +61,7 @@ coverimage
- 0.9.0 + 0.9.1 From af8e62b70bca21b45b74ef773da8bcb448c6f098 Mon Sep 17 00:00:00 2001 From: Timothy Miles-Board Date: Fri, 19 Dec 2014 16:07:16 +0000 Subject: [PATCH 02/42] Fix })}) mashup in z_datacite_core.pl, new epmi --- DataCiteDoi.epmi | 8 ++++---- cfg/cfg.d/z_datacite_core.pl | 37 ++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/DataCiteDoi.epmi b/DataCiteDoi.epmi index f156a55..8942271 100644 --- a/DataCiteDoi.epmi +++ b/DataCiteDoi.epmi @@ -1,16 +1,16 @@ DataCiteDoi - http://eprints/id/epm/DataCiteDoi + http://template.ulcc.ac.uk/id/epm/DataCiteDoi epm/DataCiteDoi/cfg/cfg.d/z_datacite_core.pl text/plain - 24850ea6a0a61e932aff48de559a9b28 + f2dea4bf477b51ec95bd073b0f7b5524 MD5 - 696 + 517 epm/DataCiteDoi/cfg/cfg.d/z_datacitedoi.pl @@ -61,7 +61,7 @@ coverimage - 0.9.1 + 0.9.2 diff --git a/cfg/cfg.d/z_datacite_core.pl b/cfg/cfg.d/z_datacite_core.pl index 576d8e0..b83ab73 100644 --- a/cfg/cfg.d/z_datacite_core.pl +++ b/cfg/cfg.d/z_datacite_core.pl @@ -1,22 +1,21 @@ -# Addes the miniting plugin to the EP_TRIGGER_STATUS_CHANGE +# Adds the minting plugin to the EP_TRIGGER_STATUS_CHANGE $c->add_dataset_trigger( "eprint", EP_TRIGGER_STATUS_CHANGE , sub { - my ( %params ) = @_; - - my $repository = %params->{repository}; - - return undef if (!defined $repository); - - if (defined %params->{dataobj}) { - my $dataobj = %params->{dataobj}; - my $eprint_id = $dataobj->id; + my ( %params ) = @_; - $repository->dataset( "event_queue" )->create_dataobj({ - pluginid => "Event::DataCiteEvent", - action => "datacite_doi", - params => [$dataobj->internal_uri], - }); - }); - } - + my $repository = %params->{repository}; + + return undef if (!defined $repository); + + if (defined %params->{dataobj}) + { + my $dataobj = %params->{dataobj}; + my $eprint_id = $dataobj->id; + + $repository->dataset( "event_queue" )->create_dataobj({ + pluginid => "Event::DataCiteEvent", + action => "datacite_doi", + params => [$dataobj->internal_uri], + }); + } }); - \ No newline at end of file + From e37c779d5ff34150d87403ecb3c51ac979c9233f Mon Sep 17 00:00:00 2001 From: David McElroy Date: Fri, 19 Dec 2014 16:41:09 +0000 Subject: [PATCH 03/42] Finally fixed the typo in How it works --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 96b6d88..67c4af9 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,7 @@ $c->add_dataset_trigger( "eprint", EP_TRIGGER_STATUS_CHANGE , sub { }); ``` -Who it works +How it works ------------- /lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm From adbcb2846f177b9e7851d88ba1a69ac6b2fd48d3 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Thu, 15 Jan 2015 13:00:06 +0000 Subject: [PATCH 04/42] code moved to datacitedoi.pl thus taking advantage of config options --- cfg/cfg.d/z_datacite_core.pl | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 cfg/cfg.d/z_datacite_core.pl diff --git a/cfg/cfg.d/z_datacite_core.pl b/cfg/cfg.d/z_datacite_core.pl deleted file mode 100644 index b83ab73..0000000 --- a/cfg/cfg.d/z_datacite_core.pl +++ /dev/null @@ -1,21 +0,0 @@ -# Adds the minting plugin to the EP_TRIGGER_STATUS_CHANGE -$c->add_dataset_trigger( "eprint", EP_TRIGGER_STATUS_CHANGE , sub { - my ( %params ) = @_; - - my $repository = %params->{repository}; - - return undef if (!defined $repository); - - if (defined %params->{dataobj}) - { - my $dataobj = %params->{dataobj}; - my $eprint_id = $dataobj->id; - - $repository->dataset( "event_queue" )->create_dataobj({ - pluginid => "Event::DataCiteEvent", - action => "datacite_doi", - params => [$dataobj->internal_uri], - }); - } -}); - From af246e68f037e73564e5e1706b437e986e602187 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Thu, 15 Jan 2015 13:00:27 +0000 Subject: [PATCH 05/42] new config options and datacite_core.pl code too --- cfg/cfg.d/z_datacitedoi.pl | 74 +++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/cfg/cfg.d/z_datacitedoi.pl b/cfg/cfg.d/z_datacitedoi.pl index 4e719d9..65bd99c 100644 --- a/cfg/cfg.d/z_datacitedoi.pl +++ b/cfg/cfg.d/z_datacitedoi.pl @@ -24,6 +24,11 @@ # eg World Data Center for Climate (WDCC); $c->{datacitedoi}{publisher} = "Eprints Repo"; +# Namespace and location for datacite XML schema +# feel free to update, though no guarantees it'll be accepted if you do +$c->{datacitedoi}{xmlns} = "http://datacite.org/schema/kernel-2.2"; +$c->{datacitedoi}{schemaLocation} = $c->{datacitedoi}{xmlns}." ".$c->{datacitedoi}{xmlns}."/metadata.xsd"; + # need to map eprint type (article, dataset etc) to ResourceType # Controled list http://schema.datacite.org/meta/kernel-2.2/doc/DataCite-MetadataKernel_v2.2.pdf # where v is the ResourceType and a is the resourceTypeGeneral @@ -42,4 +47,71 @@ $c->{datacitedoi}{typemap}{other} = {v=>'Misc',a=>'Collection'}; $c->{datacitedoi}{typemap}{dataset} = {v=>'Dataset',a=>'Dataset'}; $c->{datacitedoi}{typemap}{audio} = {v=>'Audio',a=>'Sound'}; -$c->{datacitedoi}{typemap}{video} = {v=>'Video',a=>'Film'}; \ No newline at end of file +$c->{datacitedoi}{typemap}{video} = {v=>'Video',a=>'Film'}; + +########################### +#### DOI syntax config #### +########################### + +# Set config of DOI delimiters +# Feel free to change, but they must conform to DOI syntax +# If not set will default to prefix/repoid/id the example below gives prefix/repoid.id +$c->{datacitedoi}{delimiters} = ["/","."]; + +# If set, plugin will attempt to register what is found in the EP DOI field ($c->{datacitedoi}{eprintdoifield}) +# Will only work if what is found adheres to DOI syntax rules (obvioulsy) +$c->{datacitedoi}{allow_custom_doi} = 0; + +#Datacite recommend digits of length 8-10 set this param to pad the id to required length +$c->{datacitedoi}{zero_padding} = 8; + +########################################## +### Override which URL gets registered ### +########################################## + +#Only useful for testing from "wrong" domain (eg an unregistered test server) should be undef for normal operation +$c->{datacitedoi}{override_url} = undef; + +########################## +##### When to coin ? ##### +########################## + +#If auto_coin is set DOIs will be minted on Status change (provided all else is well) +$c->{datacitedoi}{auto_coin} = 0; +#If action_coin is set then a button will be displayed under action tab (for staff) to mint DOIs on an adhoc basis +$c->{datacitedoi}{action_coin} = 1; + +# NB setting auto_coin renders action coin redundant as only published items can be registered + +####### Formerly in cfg.d/datacite_core.pl ######### + +# Including datacite_core.pl below as we can make some useful decisions based on the above config. + +## Adds the minting plugin to the EP_TRIGGER_STATUS_CHANGE +if($c->{datacitedoi}{auto_coin}){ + $c->add_dataset_trigger( "eprint", EP_TRIGGER_STATUS_CHANGE , sub { + my ( %params ) = @_; + + my $repository = %params->{repository}; + + return undef if (!defined $repository); + + if (defined %params->{dataobj}) { + my $dataobj = %params->{dataobj}; + my $eprint_id = $dataobj->id; + $repository->dataset( "event_queue" )->create_dataobj({ + pluginid => "Event::DataCiteEvent", + action => "datacite_doi", + params => [$dataobj->internal_uri], + }); + } + + }); +} + +# Activate an action button, the plugin for whcih is at +# /plugins/EPrints/Plugin/Screen/EPrint/Staff/CoinDOI.pm +if($c->{datacitedoi}{action_coin}){ + $c->{plugins}{"Screen::EPrint::Staff::CoinDOI"}{params}{disable} = 0; +} + From dae3b09eee314b6e44a7a7d78516e5afb6e36065 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Thu, 15 Jan 2015 13:00:56 +0000 Subject: [PATCH 06/42] improved event handling plus use of new config options --- .../EPrints/Plugin/Event/DataCiteEvent.pm | 114 +++++++++++++----- 1 file changed, 84 insertions(+), 30 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm b/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm index 270151c..7008437 100644 --- a/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm +++ b/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm @@ -9,50 +9,66 @@ package EPrints::Plugin::Event::DataCiteEvent; use EPrints::Plugin::Event; use LWP; use Crypt::SSLeay; +use HTTP::Headers::Util; @ISA = qw( EPrints::Plugin::Event ); sub datacite_doi { - my( $self, $eprint) = @_; + my( $self, $dataobj) = @_; my $repository = $self->repository(); - - my $thisdoi = $repository->get_conf( "datacitedoi", "prefix")."/". $repository->get_conf( "datacitedoi", "repoid")."/".$eprint->id; - my $eprintdoifield = $repository->get_conf( "datacitedoi", "eprintdoifield"); - - my $task; - - my $shoulddoi = $repository->get_conf( "datacitedoi", "eprintstatus", $eprint->value( "eprint_status" )); - + #Check object status first.... TODO Make work for dataobj == doument (just in case) + my $shoulddoi = $repository->get_conf( "datacitedoi", "eprintstatus", $dataobj->value( "eprint_status" )); #Check Doi Status - if(!$shoulddoi){ return; } - - #check if doi has been set; - if( $eprint->exists_and_set( $eprintdoifield )) { - if( $eprint->value( $eprintdoifield ) ne $thisdoi ){ - #Skipping because its has a diff doi; - return; - } - }else{ - $eprint->set_value($eprintdoifield, $thisdoi); - $eprint->commit(); - } - - - my $xml = $eprint->export( "DataCiteXML" ); + if(!$shoulddoi){ + $repository->log("Attempt to coin DOI for item that is not in the required area (see \$c->{datacitedoi}->{eprintstatus})"); + return EPrints::Const::HTTP_INTERNAL_SERVER_ERROR; + } + + my $thisdoi = $self->coin_doi($repository,$dataobj); + #coin_doi may return an event error code if no prefix present assume this is the case + my $prefix = $repository->get_conf( "datacitedoi", "prefix"); + return $thisdoi if($thisdoi !~ /^$prefix/); + + #Pass doi into Export::DataCiteXML... + my $xml = $dataobj->export( "DataCiteXML", doi=>$thisdoi ); + return $xml if($xml =~ /^\d+$/); #just a number? coin_doi has passed back an error code pass it on... + + #print STDERR "XML: $xml\n"; my $url = $repository->get_conf( "datacitedoi", "apiurl"); + $url.="/" if($url !~ /\/$/); #attach slash if config has forgotten my $user_name = $repository->get_conf( "datacitedoi", "user"); my $user_pw = $repository->get_conf( "datacitedoi", "pass"); #register metadata; - $response_code = datacite_request("POST", $url."metadata", $user_name, $user_pw, $xml, "application/xml;charset=UTF-8"); - + my($response_content, $response_code) = datacite_request("POST", $url."metadata", $user_name, $user_pw, $xml, "application/xml;charset=UTF-8"); + if($response_code !~ /20(1|0)/){ + $repository->log("Metadata response from datacite api: $response_code: $response_content"); + $repository->log("BTW the \$doi was:\n$thisdoi"); + return EPrints::Const::HTTP_INTERNAL_SERVER_ERROR; + } #register doi - my $doi_reg = "doi=$thisdoi\nurl=".$eprint->uri(); - $response_code = datacite_request("POST", $url."doi", $user_name, $user_pw, $doi_reg, "text/plain;charset=UTF-8"); + my $repo_url =$dataobj->uri(); + #RM special override to allow testing from "wrong" domain + if(defined $repository->get_conf( "datacitedoi", "override_url")){ + $repo_url = $repository->get_conf( "datacitedoi", "override_url"); + $repo_url.= $dataobj->internal_uri; + } + my $doi_reg = "doi=$thisdoi\nurl=".$repo_url; + ($response_content, $response_code)= datacite_request("POST", $url."doi", $user_name, $user_pw, $doi_reg, "text/plain;charset=UTF-8"); + if($response_code !~ /20(1|0)/){ + $repository->log("Registration response from datacite api: $response_code: $response_content"); + $repository->log("BTW the \$doi_reg was:\n$doi_reg"); + return EPrints::Const::HTTP_INTERNAL_SERVER_ERROR; + } + #now it is safe to set DOI value. + my $eprintdoifield = $repository->get_conf( "datacitedoi", "eprintdoifield"); + $dataobj->set_value($eprintdoifield, $thisdoi); + $dataobj->commit(); + #success return undef; } @@ -75,10 +91,48 @@ sub datacite_request { my $ua = LWP::UserAgent->new; my $res = $ua->request($req); - return $res->content(); + return ($res->content(),$res->code()); } +#RM lets do the DOI coining somewhere (reasonably) accessible +sub coin_doi { + my( $self, $repository, $dataobj) = @_; + #RM zero padds eprintid as per config + my $z_pad = $repository->get_conf( "datacitedoi", "zero_padding") || 0; + my $id = sprintf("%0".$z_pad."d", $dataobj->id); + #Check for custom delimiters + my ($delim1, $delim2) = @{$repository->get_conf( "datacitedoi", "delimiters")}; + #default to slash + $delim1 = "/" if(!defined $delim1); + #second defaults to first + $delim2 = $delim1 if(!defined $delim2); + #construct the DOI string + my $prefix = $repository->get_conf( "datacitedoi", "prefix"); + my $thisdoi = $prefix.$delim1.$repository->get_conf( "datacitedoi", "repoid").$delim2.$id; -1; \ No newline at end of file + my $eprintdoifield = $repository->get_conf( "datacitedoi", "eprintdoifield"); + + #Custom DOIS + #if DOI field is set attempt to use that if config allows + if($dataobj->exists_and_set( $eprintdoifield) ){ + + #if config does not allow ... bail + if( !$repository->get_conf( "datacitedoi", "allow_custom_doi" ) ){ + $repository->log("DOI is already set and custom overrides are disaallowed by config"); + return EPrints::Const::HTTP_INTERNAL_SERVER_ERROR; + } + #we are allowed (check prefix just in case) + $thisdoi = $dataobj->get_value( $eprintdoifield ); + if($thisdoi !~ /^$prefix/){ + $repository->log("Prefix does not match ($prefix) for custom DOI: $thisdoi"); + $dataobj->set_value($eprintdoifield, ""); #unset the bad DOI!! + $dataobj->commit(); + return EPrints::Const::HTTP_INTERNAL_SERVER_ERROR; + }#We'll leave Datacite to do any further syntax checking etc... + } + + return $thisdoi; +} +1; From 10c2a39c4522ae1fb2247a524abd0147870b1724 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Thu, 15 Jan 2015 13:03:44 +0000 Subject: [PATCH 07/42] Event::Datacite::coin_doi for consisstency better name handling, use of new config etc --- .../EPrints/Plugin/Export/DataCiteXML.pm | 75 +++++++++++-------- 1 file changed, 45 insertions(+), 30 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 5d0ca0c..67f7e6e 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -5,7 +5,6 @@ EPrints::Plugin::Export::DataCiteXML =cut package EPrints::Plugin::Export::DataCiteXML; - use EPrints::Plugin::Export::Feed; @ISA = ('EPrints::Plugin::Export::Feed'); @@ -23,7 +22,8 @@ sub new $self->{visible} = 'all'; $self->{suffix} = '.xml'; $self->{mimetype} = 'application/xml; charset=utf-8'; - + $self->{arguments}->{doi} = undef; + return $self; } @@ -33,36 +33,49 @@ sub output_dataobj my $repo = $self->{repository}; my $xml = $repo->xml; - - - my $thisdoi = $repo->get_conf( "datacitedoi", "prefix")."/". $repo->get_conf( "datacitedoi", "repoid")."/".$dataobj->id; - - my $entry = $xml->create_element( "resource", xmlns=>"http://datacite.org/schema/kernel-2.2", "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation"=>"http://datacite.org/schema/kernel-2.2 http://schema.datacite.org/meta/kernel-2.2/metadata.xsd" ); - $entry->appendChild( $xml->create_data_element( "identifier", $dataobj->get_value( $repo->get_conf( "datacitedoi", "eprintdoifield") ) , identifierType=>"DOI" ) ); + #reference the datacite schema from config + my $entry = $xml->create_element( "resource", + xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", + "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); + + #RM We pass in the DOI from Event::DataCite... or from --args on the cmd line + my $thisdoi = $opts{doi}; + #RM coin a DOI if either + # - not come via event or + # - no doi arg passed in via cmd_line + # ie when someone exports DataCiteXML from the Action tab + if(!defined $thisdoi){ + #nick the coining sub from event plugin + my $event = $repo->plugin("Event::DataCiteEvent"); + $thisdoi = $event->coin_doi($repo, $dataobj); + #coin_doi may return an event error code if no prefix present assume this is the case + my $prefix = $repo->get_conf( "datacitedoi", "prefix"); + return $thisdoi if($thisdoi !~ /^$prefix/); + } + + $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); + #RM otherwise we'll leave this alone for now my $creators = $xml->create_element( "creators" ); if( $dataobj->exists_and_set( "creators" ) ) - { + { - my $names = $dataobj->get_value( "creators" ); - foreach my $name ( @$names ) - { - my $author = $xml->create_element( "creator" ); - - my $name_str = EPrints::Utils::make_name_string( $name->{name}); - $author->appendChild( $xml->create_data_element( - "creatorName", - $name_str ) ); - - #$author->appendChild( $xml->create_data_element( - # "email", - # $name->{id} ) ); - - $creators->appendChild( $author ); - } - } + my $names = $dataobj->get_value( "creators" ); + foreach my $name ( @$names ) + { + my $author = $xml->create_element( "creator" ); + + my $name_str = EPrints::Utils::make_name_string( $name->{name}); + $author->appendChild( $xml->create_data_element( + "creatorName", + $name_str ) ); + + $creators->appendChild( $author ); + } + } $entry->appendChild( $creators ); if ($dataobj->exists_and_set( "title" )) { @@ -71,7 +84,7 @@ sub output_dataobj $entry->appendChild( $titles ); } - $entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "repoid") ) ); + $entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); if ($dataobj->exists_and_set( "datestamp" )) { $dataobj->get_value( "datestamp" ) =~ /^([0-9]{4})/; @@ -96,7 +109,7 @@ sub output_dataobj my $thisresourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("type") ); - if($thisresourceType!= undef ){ + if(defined $thisresourceType ){ $entry->appendChild( $xml->create_data_element( "resourceType", $thisresourceType->{'v'}, resourceTypeGeneral=>$thisresourceType->{'a'}) ); } @@ -105,7 +118,9 @@ sub output_dataobj $alternateIdentifiers->appendChild( $xml->create_data_element( "alternateIdentifier", $dataobj->get_url() , alternateIdentifierType=>"URL" ) ); $entry->appendChild( $alternateIdentifiers ); - return ''."\n".$xml->to_string($entry); + + #TODO Seek, identify and include for registration the optional datacite fields + return ''."\n".$xml->to_string($entry); } -1; \ No newline at end of file +1; From 43dfb299b6da2b1f37b022fb295ea98f0aa19376 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Thu, 15 Jan 2015 13:04:00 +0000 Subject: [PATCH 08/42] pharses for action button and related msgs --- lib/lang/en/phrases/coinDOI.xml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 lib/lang/en/phrases/coinDOI.xml diff --git a/lib/lang/en/phrases/coinDOI.xml b/lib/lang/en/phrases/coinDOI.xml new file mode 100644 index 0000000..f4c1175 --- /dev/null +++ b/lib/lang/en/phrases/coinDOI.xml @@ -0,0 +1,9 @@ + + + + + This will add a coin-DOI event to the event queue (i.e. Will not happen immediately) + Coin DOI + This item will have a DOI coined when the indexer gets around to it. + + From 7723caf97f0032767f23aac04140254d35f36615 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Thu, 15 Jan 2015 13:04:12 +0000 Subject: [PATCH 09/42] Action button plugin --- .../Plugin/Sreen/EPrint/Staff/CoinDOI.pm | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 lib/plugins/EPrints/Plugin/Sreen/EPrint/Staff/CoinDOI.pm diff --git a/lib/plugins/EPrints/Plugin/Sreen/EPrint/Staff/CoinDOI.pm b/lib/plugins/EPrints/Plugin/Sreen/EPrint/Staff/CoinDOI.pm new file mode 100644 index 0000000..9e13fbd --- /dev/null +++ b/lib/plugins/EPrints/Plugin/Sreen/EPrint/Staff/CoinDOI.pm @@ -0,0 +1,97 @@ +package EPrints::Plugin::Screen::EPrint::Staff::CoinDOI; + +#use EPrints::Plugin::Screen::EPrint; + +@ISA = ( 'EPrints::Plugin::Screen::EPrint' ); + +use strict; + +sub new +{ + my( $class, %params ) = @_; + + my $self = $class->SUPER::new(%params); + + # $self->{priv} = # no specific priv - one per action + + $self->{actions} = [qw/ coindoi /]; + + $self->{appears} = [ { + place => "eprint_editor_actions", + action => "coindoi", + position => 1977, + }, ]; + + return $self; +} + +sub obtain_lock +{ + my( $self ) = @_; + + return $self->could_obtain_eprint_lock; +} + +sub about_to_render +{ + my( $self ) = @_; + + $self->EPrints::Plugin::Screen::EPrint::View::about_to_render; +} + +sub allow_coindoi +{ + my( $self ) = @_; + + return 0 unless $self->could_obtain_eprint_lock; + + my $repository = $self->{repository}; + #TODO a version that works for documents too + my $dataobj = $self->{processor}->{eprint}; + return 0 unless $repository->get_conf( "datacitedoi", "eprintstatus", $dataobj->value( "eprint_status" )); + #TODO don't allow the coinDOI button if a DOI is already registered (may require a db flag for successful reg) + return $self->allow( "eprint/edit:editor" ); +} + +sub action_coindoi +{ + my( $self ) = @_; + + my $repository = $self->{repository}; + + return undef if (!defined $repository); + + my $eprint = $self->{processor}->{eprint}; + + if (defined $eprint) { + my $eprint_id = $eprint->id; + + $repository->dataset( "event_queue" )->create_dataobj({ + pluginid => "Event::DataCiteEvent", + action => "datacite_doi", + params => [$eprint->internal_uri], + }); + + $self->add_result_message( 1 ); + } +} + +sub add_result_message +{ + my( $self, $ok ) = @_; + + if( $ok ) + { + $self->{processor}->add_message( "message", + $self->html_phrase( "coiningdoi" ) ); + } + else + { + # Error? + $self->{processor}->add_message( "error" ); + } + + $self->{processor}->{screenid} = "EPrint::View"; +} + +1; From 53af6d8b113cbb93f8f0898951c012f3d1a63d34 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Thu, 15 Jan 2015 13:04:27 +0000 Subject: [PATCH 10/42] updated readme to reflect new features --- README.md | 90 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 68 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 67c4af9..8e0658a 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,6 @@ Installation Install the plugin from the bazaar and edit the following config files. ``` -z_datacite_core.pl z_datacitedoi.pl ``` @@ -52,9 +51,14 @@ $c->{datacitedoi}{pass} = "PASS"; # prints, distributes, releases, issues, or produces the # resource. This property will be used to formulate the # citation, so consider the prominence of the role. -# eg World Data Center for Climate (WDCC); +# eg World Data Center for Climate (WDCC); $c->{datacitedoi}{publisher} = "Eprints Repo"; +# Namespace and location for datacite XML schema +# feel free to update, though no guarantees it'll be accepted if you do +$c->{datacitedoi}{xmlns} = "http://datacite.org/schema/kernel-2.2"; +$c->{datacitedoi}{schemaLocation} = $c->{datacitedoi}{xmlns}." ".$c->{datacitedoi}{xmlns}."/metadata.xsd"; + # need to map eprint type (article, dataset etc) to ResourceType # Controled list http://schema.datacite.org/meta/kernel-2.2/doc/DataCite-MetadataKernel_v2.2.pdf # where v is the ResourceType and a is the resourceTypeGeneral @@ -74,42 +78,84 @@ $c->{datacitedoi}{typemap}{other} = {v=>'Misc',a=>'Collection'}; $c->{datacitedoi}{typemap}{dataset} = {v=>'Dataset',a=>'Dataset'}; $c->{datacitedoi}{typemap}{audio} = {v=>'Audio',a=>'Sound'}; $c->{datacitedoi}{typemap}{video} = {v=>'Video',a=>'Film'}; -``` -z_datacite_core.pl +########################### +#### DOI syntax config #### +########################### -Adds the minting plugin, by default it the plugin will run when ever the status (draft,review,deposit,delete) changes. -The plugin will then run asynchronously after the change using the eprints queue so the datacite registration wont affect the users view. +# Set config of DOI delimiters +# Feel free to change, but they must conform to DOI syntax +# If not set will default to prefix/repoid/id the example below gives prefix/repoid.id +$c->{datacitedoi}{delimiters} = ["/","."]; -```perl -# Adds the minting plugin to the EP_TRIGGER_STATUS_CHANGE -$c->add_dataset_trigger( "eprint", EP_TRIGGER_STATUS_CHANGE , sub { +# If set, plugin will attempt to register what is found in the EP DOI field ($c->{datacitedoi}{eprintdoifield}) +# Will only work if what is found adheres to DOI syntax rules (obvioulsy) +$c->{datacitedoi}{allow_custom_doi} = 0; + +#Datacite recommend digits of length 8-10 set this param to pad the id to required length +$c->{datacitedoi}{zero_padding} = 8; + +########################################## +### Override which URL gets registered ### +########################################## + +#Only useful for testing from "wrong" domain (eg an unregistered test server) should be undef for normal operation +$c->{datacitedoi}{override_url} = undef; + +########################## +##### When to coin ? ##### +########################## + +#If auto_coin is set DOIs will be minted on Status change (provided all else is well) +$c->{datacitedoi}{auto_coin} = 0; +#If action_coin is set then a button will be displayed under action tab (for staff) to mint DOIs on an adhoc basis +$c->{datacitedoi}{action_coin} = 1; + +# NB setting auto_coin renders action coin redundant as only published items can be registered + +####### Formerly in cfg.d/datacite_core.pl ######### + +# Including datacite_core.pl below as we can make some useful decisions based on the above config. + +## Adds the minting plugin to the EP_TRIGGER_STATUS_CHANGE +if($c->{datacitedoi}{auto_coin}){ + $c->add_dataset_trigger( "eprint", EP_TRIGGER_STATUS_CHANGE , sub { my ( %params ) = @_; - + my $repository = %params->{repository}; return undef if (!defined $repository); - - if (defined %params->{dataobj}) { - my $dataobj = %params->{dataobj}; - my $eprint_id = $dataobj->id; - + + if (defined %params->{dataobj}) { + my $dataobj = %params->{dataobj}; + my $eprint_id = $dataobj->id; $repository->dataset( "event_queue" )->create_dataobj({ - pluginid => "Event::DataCiteEvent", - action => "datacite_doi", - params => [$dataobj->internal_uri], - }); - }); - } + pluginid => "Event::DataCiteEvent", + action => "datacite_doi", + params => [$dataobj->internal_uri], + }); + } -}); + }); +} + +# Activate an action button, the plugin for whcih is at +# /plugins/EPrints/Plugin/Screen/EPrint/Staff/CoinDOI.pm +if($c->{datacitedoi}{action_coin}){ + $c->{plugins}{"Screen::EPrint::Staff::CoinDOI"}{params}{disable} = 0; +} + ``` + How it works ------------- /lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm This is added to the queue and actually mints the doi. +lib/plugins/EPrints/Plugin/Sreen/EPrint/Staff/CoinDOI.pm +This adds a button to enable staff to choose when to coin the DOI and request registration + /lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm This exports the metadata xml required for minting, this can be used independently and through the user interface. From 67d93266da3a42fe8f55eab7f9e1249c77b75c78 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Fri, 16 Jan 2015 10:26:05 +0000 Subject: [PATCH 11/42] Screen not Sreen!! --- .../EPrints/Plugin/{Sreen => Screen}/EPrint/Staff/CoinDOI.pm | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/plugins/EPrints/Plugin/{Sreen => Screen}/EPrint/Staff/CoinDOI.pm (100%) diff --git a/lib/plugins/EPrints/Plugin/Sreen/EPrint/Staff/CoinDOI.pm b/lib/plugins/EPrints/Plugin/Screen/EPrint/Staff/CoinDOI.pm similarity index 100% rename from lib/plugins/EPrints/Plugin/Sreen/EPrint/Staff/CoinDOI.pm rename to lib/plugins/EPrints/Plugin/Screen/EPrint/Staff/CoinDOI.pm From 8c6c49aadb440c9102786549cc810984fec55453 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Fri, 16 Jan 2015 11:48:30 +0000 Subject: [PATCH 12/42] Fixed schemqLocation in config --- cfg/cfg.d/z_datacitedoi.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cfg/cfg.d/z_datacitedoi.pl b/cfg/cfg.d/z_datacitedoi.pl index 65bd99c..509d6cd 100644 --- a/cfg/cfg.d/z_datacitedoi.pl +++ b/cfg/cfg.d/z_datacitedoi.pl @@ -27,7 +27,7 @@ # Namespace and location for datacite XML schema # feel free to update, though no guarantees it'll be accepted if you do $c->{datacitedoi}{xmlns} = "http://datacite.org/schema/kernel-2.2"; -$c->{datacitedoi}{schemaLocation} = $c->{datacitedoi}{xmlns}." ".$c->{datacitedoi}{xmlns}."/metadata.xsd"; +$c->{datacitedoi}{schemaLocation} = $c->{datacitedoi}{xmlns}." http://schema.datacite.org/meta/kernel-2.2/metadata.xsd"; # need to map eprint type (article, dataset etc) to ResourceType # Controled list http://schema.datacite.org/meta/kernel-2.2/doc/DataCite-MetadataKernel_v2.2.pdf From 4db3b82189af977500c7fc4c4e403b400dd1775f Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Fri, 16 Jan 2015 11:48:43 +0000 Subject: [PATCH 13/42] epmi relates to latest code --- DataCiteDoi.epmi | 2244 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 2212 insertions(+), 32 deletions(-) diff --git a/DataCiteDoi.epmi b/DataCiteDoi.epmi index 8942271..b428993 100644 --- a/DataCiteDoi.epmi +++ b/DataCiteDoi.epmi @@ -1,75 +1,2255 @@ - + DataCiteDoi - http://template.ulcc.ac.uk/id/epm/DataCiteDoi + http://clean.ep.devorkin:8082/id/epm/DataCiteDoi - epm/DataCiteDoi/cfg/cfg.d/z_datacite_core.pl + epm/DataCiteDoi/cfg/cfg.d/z_datacitedoi.pl text/plain - f2dea4bf477b51ec95bd073b0f7b5524 + 0c377ff85542d00cb774d1ec0844a21d MD5 - 517 + 4983 + I0VuYWJsZSB0aGUgcGx1Z2luCiRjLT57cGx1Z2luc317IkV4cG9ydDo6RGF0YUNpdGVYTUwifXtw +YXJhbXN9e2Rpc2FibGV9ID0gMDsKJGMtPntwbHVnaW5zfXsiRXZlbnQ6OkRhdGFDaXRlRXZlbnQi +fXtwYXJhbXN9e2Rpc2FibGV9ID0gMDsKCiN3aGljaCBmaWVsZCBkbyB1c2UgZm9yIHRoZSBkb2kK +JGMtPntkYXRhY2l0ZWRvaX17ZXByaW50ZG9pZmllbGR9ID0gImlkX251bWJlciI7CgojV2hlbiBz +aG91bGQgeW91IHJlZ2lzdGVyL3VwZGF0ZSBkb2kgaW5mby4KJGMtPntkYXRhY2l0ZWRvaX17ZXBy +aW50c3RhdHVzfSA9IHtpbmJveD0+MCxidWZmZXI9PjEsYXJjaGl2ZT0+MSxkZWxldGlvbj0+MH07 +Cgojc2V0IHRoZXNlICh5b3Ugd2lsbCBnZXQgdGhlIGZyb20gZGF0YSBzaXRlKQojIGRvaSA9IHtw +cmVmaXh9L3tyZXBvaWR9L3tlcHJpbnRpZH0KJGMtPntkYXRhY2l0ZWRvaX17cHJlZml4fSA9ICIx +MC41MDcyIjsKJGMtPntkYXRhY2l0ZWRvaX17cmVwb2lkfSA9ICRjLT57aG9zdH07CiRjLT57ZGF0 +YWNpdGVkb2l9e2FwaXVybH0gPSAiaHR0cHM6Ly90ZXN0LmRhdGFjaXRlLm9yZy9tZHMvIjsKJGMt +PntkYXRhY2l0ZWRvaX17dXNlcn0gPSAiVVNFUiI7CiRjLT57ZGF0YWNpdGVkb2l9e3Bhc3N9ID0g +IlBBU1MiOwoKIyBkYXRhY2l0ZSByZXF1aXJlcyBhIFB1Ymxpc2hlciAKIyBUaGUgbmFtZSBvZiB0 +aGUgZW50aXR5IHRoYXQgaG9sZHMsIGFyY2hpdmVzLCBwdWJsaXNoZXMsIAojIHByaW50cywgZGlz +dHJpYnV0ZXMsIHJlbGVhc2VzLCBpc3N1ZXMsIG9yIHByb2R1Y2VzIHRoZSAKIyByZXNvdXJjZS4g +VGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHVzZWQgdG8gZm9ybXVsYXRlIHRoZSAKIyBjaXRhdGlvbiwg +c28gY29uc2lkZXIgdGhlIHByb21pbmVuY2Ugb2YgdGhlIHJvbGUuCiMgZWcgV29ybGQgRGF0YSBD +ZW50ZXIgZm9yIENsaW1hdGUgKFdEQ0MpOyAJCiRjLT57ZGF0YWNpdGVkb2l9e3B1Ymxpc2hlcn0g +PSAiRXByaW50cyBSZXBvIjsKCiMgTmFtZXNwYWNlIGFuZCBsb2NhdGlvbiBmb3IgZGF0YWNpdGUg +WE1MIHNjaGVtYQojIGZlZWwgZnJlZSB0byB1cGRhdGUsIHRob3VnaCBubyBndWFyYW50ZWVzIGl0 +J2xsIGJlIGFjY2VwdGVkIGlmIHlvdSBkbwokYy0+e2RhdGFjaXRlZG9pfXt4bWxuc30gPSAiaHR0 +cDovL2RhdGFjaXRlLm9yZy9zY2hlbWEva2VybmVsLTIuMiI7CiRjLT57ZGF0YWNpdGVkb2l9e3Nj +aGVtYUxvY2F0aW9ufSA9ICRjLT57ZGF0YWNpdGVkb2l9e3htbG5zfS4iIGh0dHA6Ly9zY2hlbWEu +ZGF0YWNpdGUub3JnL21ldGEva2VybmVsLTIuMi9tZXRhZGF0YS54c2QiOwoKIyBuZWVkIHRvIG1h +cCBlcHJpbnQgdHlwZSAoYXJ0aWNsZSwgZGF0YXNldCBldGMpIHRvIFJlc291cmNlVHlwZQojIENv +bnRyb2xlZCBsaXN0IGh0dHA6Ly9zY2hlbWEuZGF0YWNpdGUub3JnL21ldGEva2VybmVsLTIuMi9k +b2MvRGF0YUNpdGUtTWV0YWRhdGFLZXJuZWxfdjIuMi5wZGYKIyB3aGVyZSB2IGlzIHRoZSBSZXNv +dXJjZVR5cGUgYW5kIGEgaXMgdGhlIHJlc291cmNlVHlwZUdlbmVyYWwKJGMtPntkYXRhY2l0ZWRv +aX17dHlwZW1hcH17YXJ0aWNsZX0gPSB7dj0+J0FydGljbGUnLGE9PidUZXh0J307CiRjLT57ZGF0 +YWNpdGVkb2l9e3R5cGVtYXB9e2Jvb2tfc2VjdGlvbn0gPSB7dj0+J0Jvb2tTZWN0aW9uJyxhPT4n +VGV4dCd9OwokYy0+e2RhdGFjaXRlZG9pfXt0eXBlbWFwfXttb25vZ3JhcGh9ID0ge3Y9PidNb25v +Z3JhcGgnLGE9PidUZXh0J307CiRjLT57ZGF0YWNpdGVkb2l9e3R5cGVtYXB9e3RoZXNpc30gPSB7 +dj0+J1RoZXNpcycsYT0+J1RleHQnfTsKJGMtPntkYXRhY2l0ZWRvaX17dHlwZW1hcH17Ym9va30g +PSB7dj0+J0Jvb2snLGE9PidUZXh0J307CiRjLT57ZGF0YWNpdGVkb2l9e3R5cGVtYXB9e3BhdGVu +dH0gPSB7dj0+J1BhdGVudCcsYT0+J1RleHQnfTsKJGMtPntkYXRhY2l0ZWRvaX17dHlwZW1hcH17 +YXJ0ZWZhY3R9ID0ge3Y9PidBcnRlZmFjdCcsYT0+J1BoeXNpY2FsT2JqZWN0J307CiRjLT57ZGF0 +YWNpdGVkb2l9e3R5cGVtYXB9e3BlcmZvcm1hbmNlfSA9IHt2PT4nUGVyZm9ybWFuY2UnLGE9PidF +dmVudCd9OwokYy0+e2RhdGFjaXRlZG9pfXt0eXBlbWFwfXtjb21wb3NpdGlvbn0gPSB7dj0+J0Nv +bXBvc2l0aW9uJyxhPT4nU291bmQnfTsKJGMtPntkYXRhY2l0ZWRvaX17dHlwZW1hcH17aW1hZ2V9 +ID0ge3Y9PidJbWFnZScsYT0+J0ltYWdlJ307CiRjLT57ZGF0YWNpdGVkb2l9e3R5cGVtYXB9e2V4 +cGVyaW1lbnR9ID0ge3Y9PidFeHBlcmltZW50JyxhPT4nVGV4dCd9OwokYy0+e2RhdGFjaXRlZG9p +fXt0eXBlbWFwfXt0ZWFjaGluZ19yZXNvdXJjZX0gPSB7dj0+J1RlYWNoaW5nUmVzb3Vyc2UnLGE9 +PidJbnRlcmFjdGl2ZVJlc291cmNlJ307CiRjLT57ZGF0YWNpdGVkb2l9e3R5cGVtYXB9e290aGVy +fSA9IHt2PT4nTWlzYycsYT0+J0NvbGxlY3Rpb24nfTsKJGMtPntkYXRhY2l0ZWRvaX17dHlwZW1h +cH17ZGF0YXNldH0gPSB7dj0+J0RhdGFzZXQnLGE9PidEYXRhc2V0J307CiRjLT57ZGF0YWNpdGVk +b2l9e3R5cGVtYXB9e2F1ZGlvfSA9IHt2PT4nQXVkaW8nLGE9PidTb3VuZCd9OwokYy0+e2RhdGFj +aXRlZG9pfXt0eXBlbWFwfXt2aWRlb30gPSB7dj0+J1ZpZGVvJyxhPT4nRmlsbSd9OwoKIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMgRE9JIHN5bnRheCBjb25maWcgIyMjIwojIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgU2V0IGNvbmZpZyBvZiBET0kgZGVsaW1pdGVycyAKIyBG +ZWVsIGZyZWUgdG8gY2hhbmdlLCBidXQgdGhleSBtdXN0IGNvbmZvcm0gdG8gRE9JIHN5bnRheAoj +IElmIG5vdCBzZXQgd2lsbCBkZWZhdWx0IHRvIHByZWZpeC9yZXBvaWQvaWQgdGhlIGV4YW1wbGUg +YmVsb3cgZ2l2ZXMgcHJlZml4L3JlcG9pZC5pZAokYy0+e2RhdGFjaXRlZG9pfXtkZWxpbWl0ZXJz +fSA9IFsiLyIsIi4iXTsKCiMgSWYgc2V0LCBwbHVnaW4gd2lsbCBhdHRlbXB0IHRvIHJlZ2lzdGVy +IHdoYXQgaXMgZm91bmQgaW4gdGhlIEVQIERPSSBmaWVsZCAoJGMtPntkYXRhY2l0ZWRvaX17ZXBy +aW50ZG9pZmllbGR9KQojIFdpbGwgb25seSB3b3JrIGlmIHdoYXQgaXMgZm91bmQgYWRoZXJlcyB0 +byBET0kgc3ludGF4IHJ1bGVzIChvYnZpb3Vsc3kpCiRjLT57ZGF0YWNpdGVkb2l9e2FsbG93X2N1 +c3RvbV9kb2l9ID0gMDsKCiNEYXRhY2l0ZSByZWNvbW1lbmQgZGlnaXRzIG9mIGxlbmd0aCA4LTEw +IHNldCB0aGlzIHBhcmFtIHRvIHBhZCB0aGUgaWQgdG8gcmVxdWlyZWQgbGVuZ3RoCiRjLT57ZGF0 +YWNpdGVkb2l9e3plcm9fcGFkZGluZ30gPSA4OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjCiMjIyBPdmVycmlkZSB3aGljaCBVUkwgZ2V0cyByZWdpc3RlcmVkICMj +IwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiNPbmx5IHVzZWZ1 +bCBmb3IgdGVzdGluZyBmcm9tICJ3cm9uZyIgZG9tYWluIChlZyBhbiB1bnJlZ2lzdGVyZWQgdGVz +dCBzZXJ2ZXIpIHNob3VsZCBiZSB1bmRlZiBmb3Igbm9ybWFsIG9wZXJhdGlvbgokYy0+e2RhdGFj +aXRlZG9pfXtvdmVycmlkZV91cmx9ID0gdW5kZWY7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IwojIyMjIyBXaGVuIHRvIGNvaW4gPyAjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoK +I0lmIGF1dG9fY29pbiBpcyBzZXQgRE9JcyB3aWxsIGJlIG1pbnRlZCBvbiBTdGF0dXMgY2hhbmdl +IChwcm92aWRlZCBhbGwgZWxzZSBpcyB3ZWxsKQokYy0+e2RhdGFjaXRlZG9pfXthdXRvX2NvaW59 +ID0gMDsKI0lmIGFjdGlvbl9jb2luIGlzIHNldCB0aGVuIGEgYnV0dG9uIHdpbGwgYmUgZGlzcGxh +eWVkIHVuZGVyIGFjdGlvbiB0YWIgKGZvciBzdGFmZikgdG8gbWludCBET0lzIG9uIGFuIGFkaG9j +IGJhc2lzCiRjLT57ZGF0YWNpdGVkb2l9e2FjdGlvbl9jb2lufSA9IDE7CgojIE5CIHNldHRpbmcg +YXV0b19jb2luIHJlbmRlcnMgYWN0aW9uIGNvaW4gcmVkdW5kYW50IGFzIG9ubHkgcHVibGlzaGVk +IGl0ZW1zIGNhbiBiZSByZWdpc3RlcmVkCgojIyMjIyMjIEZvcm1lcmx5IGluIGNmZy5kL2RhdGFj +aXRlX2NvcmUucGwgIyMjIyMjIyMjCgojIEluY2x1ZGluZyBkYXRhY2l0ZV9jb3JlLnBsIGJlbG93 +IGFzIHdlIGNhbiBtYWtlIHNvbWUgdXNlZnVsIGRlY2lzaW9ucyBiYXNlZCBvbiB0aGUgYWJvdmUg +Y29uZmlnLgoKIyMgQWRkcyB0aGUgbWludGluZyBwbHVnaW4gdG8gdGhlIEVQX1RSSUdHRVJfU1RB +VFVTX0NIQU5HRQppZigkYy0+e2RhdGFjaXRlZG9pfXthdXRvX2NvaW59KXsKCSRjLT5hZGRfZGF0 +YXNldF90cmlnZ2VyKCAiZXByaW50IiwgRVBfVFJJR0dFUl9TVEFUVVNfQ0hBTkdFICwgc3ViIHsK +ICAgICAgIG15ICggJXBhcmFtcyApID0gQF87CgogICAgICAgbXkgJHJlcG9zaXRvcnkgPSAlcGFy +YW1zLT57cmVwb3NpdG9yeX07CiAKICAgICAgIHJldHVybiB1bmRlZiBpZiAoIWRlZmluZWQgJHJl +cG9zaXRvcnkpOwoJCgkJaWYgKGRlZmluZWQgJXBhcmFtcy0+e2RhdGFvYmp9KSB7CgkJCW15ICRk +YXRhb2JqID0gJXBhcmFtcy0+e2RhdGFvYmp9OwoJCQlteSAkZXByaW50X2lkID0gJGRhdGFvYmot +PmlkOwoJCQkkcmVwb3NpdG9yeS0+ZGF0YXNldCggImV2ZW50X3F1ZXVlIiApLT5jcmVhdGVfZGF0 +YW9iaih7CgkJCQlwbHVnaW5pZCA9PiAiRXZlbnQ6OkRhdGFDaXRlRXZlbnQiLAoJCQkJYWN0aW9u +ID0+ICJkYXRhY2l0ZV9kb2kiLAoJCQkJcGFyYW1zID0+IFskZGF0YW9iai0+aW50ZXJuYWxfdXJp +XSwKCQkJfSk7CiAgICAgCX0KIAoJfSk7Cn0KCiMgQWN0aXZhdGUgYW4gYWN0aW9uIGJ1dHRvbiwg +dGhlIHBsdWdpbiBmb3Igd2hjaWggaXMgYXQKIyAvcGx1Z2lucy9FUHJpbnRzL1BsdWdpbi9TY3Jl +ZW4vRVByaW50L1N0YWZmL0NvaW5ET0kucG0KaWYoJGMtPntkYXRhY2l0ZWRvaX17YWN0aW9uX2Nv +aW59KXsKIAkkYy0+e3BsdWdpbnN9eyJTY3JlZW46OkVQcmludDo6U3RhZmY6OkNvaW5ET0kifXtw +YXJhbXN9e2Rpc2FibGV9ID0gMDsKfQoK + - epm/DataCiteDoi/cfg/cfg.d/z_datacitedoi.pl - text/plain - 37dcb325580147f795b86d8c18c0556e + lang/en/phrases/coinDOI.xml + application/xml + ea8da6c0e471cea13c5b573d115cbbe8 MD5 - 2303 + 641 + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgc3RhbmRhbG9uZT0ibm8i +ID8+CjwhRE9DVFlQRSBwaHJhc2VzIFNZU1RFTSAiZW50aXRpZXMuZHRkIj4KCjxlcHA6cGhyYXNl +cyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6ZXBwPSJodHRwOi8v +ZXByaW50cy5vcmcvZXAzL3BocmFzZSI+CiAgICA8ZXBwOnBocmFzZSBpZD0iUGx1Z2luL1NjcmVl +bi9FUHJpbnQvU3RhZmYvQ29pbkRPSTphY3Rpb246Y29pbmRvaTpkZXNjcmlwdGlvbiI+VGhpcyB3 +aWxsIGFkZCBhIGNvaW4tRE9JIGV2ZW50IHRvIHRoZSBldmVudCBxdWV1ZSAoaS5lLiBXaWxsIG5v +dCBoYXBwZW4gaW1tZWRpYXRlbHkpPC9lcHA6cGhyYXNlPgogICAgPGVwcDpwaHJhc2UgaWQ9IlBs +dWdpbi9TY3JlZW4vRVByaW50L1N0YWZmL0NvaW5ET0k6YWN0aW9uOmNvaW5kb2k6dGl0bGUiPkNv +aW4gRE9JPC9lcHA6cGhyYXNlPgogICAgPGVwcDpwaHJhc2UgaWQ9IlBsdWdpbi9TY3JlZW4vRVBy +aW50L1N0YWZmL0NvaW5ET0k6Y29pbmluZ2RvaSI+VGhpcyBpdGVtIHdpbGwgaGF2ZSBhIERPSSBj +b2luZWQgd2hlbiB0aGUgaW5kZXhlciBnZXRzIGFyb3VuZCB0byBpdC48L2VwcDpwaHJhc2U+Cgo8 +L2VwcDpwaHJhc2VzPgo= + plugins/EPrints/Plugin/Event/DataCiteEvent.pm - inode/symlink - a4626d18add344225c4a8063b8da39cf + text/plain + 0dad25fd1105d06d4da2560feea39545 MD5 - 2101 + 5220 + PWhlYWQxIE5BTUUKCkVQcmludHM6OlBsdWdpbjo6RXZlbnQ6OkRhdGFDaXRlRXZlbnQKCj1jdXQK +CnBhY2thZ2UgRVByaW50czo6UGx1Z2luOjpFdmVudDo6RGF0YUNpdGVFdmVudDsKIAp1c2UgRVBy +aW50czo6UGx1Z2luOjpFdmVudDsKdXNlIExXUDsKdXNlIENyeXB0OjpTU0xlYXk7CnVzZSBIVFRQ +OjpIZWFkZXJzOjpVdGlsOwoKQElTQSA9IHF3KCBFUHJpbnRzOjpQbHVnaW46OkV2ZW50ICk7CiAK +c3ViIGRhdGFjaXRlX2RvaQogewogICAgICAgbXkoICRzZWxmLCAkZGF0YW9iaikgPSBAXzsKCgkJ +bXkgJHJlcG9zaXRvcnkgPSAkc2VsZi0+cmVwb3NpdG9yeSgpOwoJCgkJI0NoZWNrIG9iamVjdCBz +dGF0dXMgZmlyc3QuLi4uIFRPRE8gTWFrZSB3b3JrIGZvciBkYXRhb2JqID09IGRvdW1lbnQgKGp1 +c3QgaW4gY2FzZSkKCQlteSAkc2hvdWxkZG9pID0gJHJlcG9zaXRvcnktPmdldF9jb25mKCAiZGF0 +YWNpdGVkb2kiLCAiZXByaW50c3RhdHVzIiwgICRkYXRhb2JqLT52YWx1ZSggImVwcmludF9zdGF0 +dXMiICkpOwkKCQkjQ2hlY2sgRG9pIFN0YXR1cwoJCWlmKCEkc2hvdWxkZG9pKXsgCgkJCSRyZXBv +c2l0b3J5LT5sb2coIkF0dGVtcHQgdG8gY29pbiBET0kgZm9yIGl0ZW0gdGhhdCBpcyBub3QgaW4g +dGhlIHJlcXVpcmVkIGFyZWEgKHNlZSBcJGMtPntkYXRhY2l0ZWRvaX0tPntlcHJpbnRzdGF0dXN9 +KSIpOwoJCQlyZXR1cm4gRVByaW50czo6Q29uc3Q6OkhUVFBfSU5URVJOQUxfU0VSVkVSX0VSUk9S +OwoJCX0JCgoJCW15ICR0aGlzZG9pID0gJHNlbGYtPmNvaW5fZG9pKCRyZXBvc2l0b3J5LCRkYXRh +b2JqKTsKCQkjY29pbl9kb2kgbWF5IHJldHVybiBhbiBldmVudCBlcnJvciBjb2RlIGlmIG5vIHBy +ZWZpeCBwcmVzZW50IGFzc3VtZSB0aGlzIGlzIHRoZSBjYXNlCgkJbXkgJHByZWZpeCA9ICRyZXBv +c2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgInByZWZpeCIpOwoJCWlmKCR0aGlzZG9p +ICF+IC9eJHByZWZpeC8pewoJCQkkcmVwb3NpdG9yeS0+bG9nKCJObyBwcmVmaXggZm9yIERPSSBj +b25maWd1cmVkPyIpOwoJCQlyZXR1cm4gRVByaW50czo6Q29uc3Q6OkhUVFBfSU5URVJOQUxfU0VS +VkVSX0VSUk9SOwoKCQl9CgoJCSNQYXNzIGRvaSBpbnRvIEV4cG9ydDo6RGF0YUNpdGVYTUwuLi4K +CQlteSAkeG1sID0gJGRhdGFvYmotPmV4cG9ydCggIkRhdGFDaXRlWE1MIiwgZG9pPT4kdGhpc2Rv +aSApOwoJCWlmKCR4bWwgPX4gL15cZCskLyl7ICNqdXN0IGEgbnVtYmVyPyBjb2luX2RvaSBoYXMg +cGFzc2VkIGJhY2sgYW4gZXJyb3IgY29kZSBwYXNzIGl0IG9uLi4uCgkJCSRyZXBvc2l0b3J5LT5s +b2coIkVycm9yIGNvZGUgcmV0dXJuZWQgYnkgRXhwb3J0OjpEYXRhQ2l0ZVhNTDogIi4keG1sKTsK +CQkJcmV0dXJuIEVQcmludHM6OkNvbnN0OjpIVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUjsKCQl9 +CgoJCSNwcmludCBTVERFUlIgIlhNTDogJHhtbFxuIjsKCQlteSAkdXJsID0gJHJlcG9zaXRvcnkt +PmdldF9jb25mKCAiZGF0YWNpdGVkb2kiLCAiYXBpdXJsIik7CgkJJHVybC49Ii8iIGlmKCR1cmwg +IX4gL1wvJC8pOyAjYXR0YWNoIHNsYXNoIGlmIGNvbmZpZyBoYXMgZm9yZ290dGVuCgkJbXkgJHVz +ZXJfbmFtZSA9ICRyZXBvc2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgInVzZXIiKTsK +CQlteSAkdXNlcl9wdyA9ICRyZXBvc2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgInBh +c3MiKTsKCQkKCQkjcmVnaXN0ZXIgbWV0YWRhdGE7CgkJbXkoJHJlc3BvbnNlX2NvbnRlbnQsICRy +ZXNwb25zZV9jb2RlKSA9ICBkYXRhY2l0ZV9yZXF1ZXN0KCJQT1NUIiwgJHVybC4ibWV0YWRhdGEi +LCAkdXNlcl9uYW1lLCAkdXNlcl9wdywgJHhtbCwgImFwcGxpY2F0aW9uL3htbDtjaGFyc2V0PVVU +Ri04Iik7CgkJaWYoJHJlc3BvbnNlX2NvZGUgIX4gLzIwKDF8MCkvKXsKCQkJJHJlcG9zaXRvcnkt +PmxvZygiTWV0YWRhdGEgcmVzcG9uc2UgZnJvbSBkYXRhY2l0ZSBhcGk6ICRyZXNwb25zZV9jb2Rl +OiAkcmVzcG9uc2VfY29udGVudCIpOwoJCQkkcmVwb3NpdG9yeS0+bG9nKCJCVFcgdGhlIFwkZG9p +IHdhczpcbiR0aGlzZG9pIik7CQoJCQlyZXR1cm4gRVByaW50czo6Q29uc3Q6OkhUVFBfSU5URVJO +QUxfU0VSVkVSX0VSUk9SOwoJCX0KCQkjcmVnaXN0ZXIgZG9pCgkJbXkgJHJlcG9fdXJsID0kZGF0 +YW9iai0+dXJpKCk7CgkJI1JNIHNwZWNpYWwgb3ZlcnJpZGUgdG8gYWxsb3cgdGVzdGluZyBmcm9t +ICJ3cm9uZyIgZG9tYWluCgkJaWYoZGVmaW5lZCAkcmVwb3NpdG9yeS0+Z2V0X2NvbmYoICJkYXRh +Y2l0ZWRvaSIsICJvdmVycmlkZV91cmwiKSl7CgkJCSRyZXBvX3VybCA9ICRyZXBvc2l0b3J5LT5n +ZXRfY29uZiggImRhdGFjaXRlZG9pIiwgIm92ZXJyaWRlX3VybCIpOwoJCQkkcmVwb191cmwuPSAk +ZGF0YW9iai0+aW50ZXJuYWxfdXJpOwoJCX0KIAkJbXkgJGRvaV9yZWcgPSAiZG9pPSR0aGlzZG9p +XG51cmw9Ii4kcmVwb191cmw7CgkJKCRyZXNwb25zZV9jb250ZW50LCAkcmVzcG9uc2VfY29kZSk9 +IGRhdGFjaXRlX3JlcXVlc3QoIlBPU1QiLCAkdXJsLiJkb2kiLCAkdXNlcl9uYW1lLCAkdXNlcl9w +dywgJGRvaV9yZWcsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgiKTsKCQlpZigkcmVzcG9uc2Vf +Y29kZSAgIX4gLzIwKDF8MCkvKXsKCQkJJHJlcG9zaXRvcnktPmxvZygiUmVnaXN0cmF0aW9uIHJl +c3BvbnNlIGZyb20gZGF0YWNpdGUgYXBpOiAkcmVzcG9uc2VfY29kZTogJHJlc3BvbnNlX2NvbnRl +bnQiKTsKCQkJJHJlcG9zaXRvcnktPmxvZygiQlRXIHRoZSBcJGRvaV9yZWcgd2FzOlxuJGRvaV9y +ZWciKTsKCQkJcmV0dXJuIEVQcmludHM6OkNvbnN0OjpIVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJP +UjsKCQl9CgoJCSNub3cgaXQgaXMgc2FmZSB0byBzZXQgRE9JIHZhbHVlLgoJCW15ICRlcHJpbnRk +b2lmaWVsZCA9ICRyZXBvc2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgImVwcmludGRv +aWZpZWxkIik7CgkJJGRhdGFvYmotPnNldF92YWx1ZSgkZXByaW50ZG9pZmllbGQsICR0aGlzZG9p +KTsKCQkkZGF0YW9iai0+Y29tbWl0KCk7CgkJI3N1Y2Nlc3MKCQlyZXR1cm4gdW5kZWY7Cn0KCgpz +dWIgZGF0YWNpdGVfcmVxdWVzdCB7CiAgbXkgKCRtZXRob2QsICR1cmwsICR1c2VyX25hbWUsICR1 +c2VyX3B3LCAkY29udGVudCwgJGNvbnRlbnRfdHlwZSkgPSBAXzsKCiAgIyBidWlsZCByZXF1ZXN0 +CiAgbXkgJGhlYWRlcnMgPSBIVFRQOjpIZWFkZXJzLT5uZXcoCiAgICAnQWNjZXB0JyAgPT4gJ2Fw +cGxpY2F0aW9uL3htbCcsCiAgICAnQ29udGVudC1UeXBlJyA9PiAkY29udGVudF90eXBlCiAgKTsK +ICBteSAkcmVxID0gSFRUUDo6UmVxdWVzdC0+bmV3KAogICAgJG1ldGhvZCA9PiAkdXJsLAogICAg +JGhlYWRlcnMsICRjb250ZW50CiAgKTsKICAkcmVxLT5hdXRob3JpemF0aW9uX2Jhc2ljKCR1c2Vy +X25hbWUsICR1c2VyX3B3KTsKCiAgIyBwYXNzIHJlcXVlc3QgdG8gdGhlIHVzZXIgYWdlbnQgYW5k +IGdldCBhIHJlc3BvbnNlIGJhY2sKICBteSAkdWEgPSBMV1A6OlVzZXJBZ2VudC0+bmV3OwogIG15 +ICRyZXMgPSAkdWEtPnJlcXVlc3QoJHJlcSk7CgogIHJldHVybiAoJHJlcy0+Y29udGVudCgpLCRy +ZXMtPmNvZGUoKSk7Cn0KCiNSTSBsZXRzIGRvIHRoZSBET0kgY29pbmluZyBzb21ld2hlcmUgKHJl +YXNvbmFibHkpIGFjY2Vzc2libGUgCnN1YiBjb2luX2RvaSB7CgogICAgICAgbXkoICRzZWxmLCAk +cmVwb3NpdG9yeSwgJGRhdGFvYmopID0gQF87CgoJI1JNIHplcm8gcGFkZHMgZXByaW50aWQgYXMg +cGVyIGNvbmZpZwoJbXkgJHpfcGFkID0gJHJlcG9zaXRvcnktPmdldF9jb25mKCAiZGF0YWNpdGVk +b2kiLCAiemVyb19wYWRkaW5nIikgfHwgMDsKCW15ICRpZCAgPSBzcHJpbnRmKCIlMCIuJHpfcGFk +LiJkIiwgJGRhdGFvYmotPmlkKTsKCSNDaGVjayBmb3IgY3VzdG9tIGRlbGltaXRlcnMKCW15ICgk +ZGVsaW0xLCAkZGVsaW0yKSA9IEB7JHJlcG9zaXRvcnktPmdldF9jb25mKCAiZGF0YWNpdGVkb2ki +LCAiZGVsaW1pdGVycyIpfTsKCSNkZWZhdWx0IHRvIHNsYXNoCgkkZGVsaW0xID0gIi8iIGlmKCFk +ZWZpbmVkICRkZWxpbTEpOwoJI3NlY29uZCBkZWZhdWx0cyB0byBmaXJzdAoJJGRlbGltMiA9ICRk +ZWxpbTEgaWYoIWRlZmluZWQgJGRlbGltMik7CgkjY29uc3RydWN0IHRoZSBET0kgc3RyaW5nCglt +eSAkcHJlZml4ID0gJHJlcG9zaXRvcnktPmdldF9jb25mKCAiZGF0YWNpdGVkb2kiLCAicHJlZml4 +Iik7CglteSAkdGhpc2RvaSA9ICRwcmVmaXguJGRlbGltMS4kcmVwb3NpdG9yeS0+Z2V0X2NvbmYo +ICJkYXRhY2l0ZWRvaSIsICJyZXBvaWQiKS4kZGVsaW0yLiRpZDsKCglteSAkZXByaW50ZG9pZmll +bGQgPSAkcmVwb3NpdG9yeS0+Z2V0X2NvbmYoICJkYXRhY2l0ZWRvaSIsICJlcHJpbnRkb2lmaWVs +ZCIpOwoJCgkjQ3VzdG9tIERPSVMKCSNpZiBET0kgZmllbGQgaXMgc2V0IGF0dGVtcHQgdG8gdXNl +IHRoYXQgaWYgY29uZmlnIGFsbG93cwoJaWYoJGRhdGFvYmotPmV4aXN0c19hbmRfc2V0KCAkZXBy +aW50ZG9pZmllbGQpICl7CgoJCSNpZiBjb25maWcgZG9lcyBub3QgYWxsb3cgLi4uIGJhaWwKCQlp +ZiggISRyZXBvc2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgImFsbG93X2N1c3RvbV9k +b2kiICkgKXsKCQkJJHJlcG9zaXRvcnktPmxvZygiRE9JIGlzIGFscmVhZHkgc2V0IGFuZCBjdXN0 +b20gb3ZlcnJpZGVzIGFyZSBkaXNhYWxsb3dlZCBieSBjb25maWciKTsKCQkJcmV0dXJuIEVQcmlu +dHM6OkNvbnN0OjpIVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUjsKCQl9CgkJI3dlIGFyZSBhbGxv +d2VkIChjaGVjayBwcmVmaXgganVzdCBpbiBjYXNlKQoJCSR0aGlzZG9pID0gJGRhdGFvYmotPmdl +dF92YWx1ZSggJGVwcmludGRvaWZpZWxkICk7CgkJaWYoJHRoaXNkb2kgIX4gL14kcHJlZml4Lyl7 +CgkJCSRyZXBvc2l0b3J5LT5sb2coIlByZWZpeCBkb2VzIG5vdCBtYXRjaCAoJHByZWZpeCkgZm9y +IGN1c3RvbSBET0k6ICR0aGlzZG9pIik7CgkJCSRkYXRhb2JqLT5zZXRfdmFsdWUoJGVwcmludGRv +aWZpZWxkLCAiIik7ICN1bnNldCB0aGUgYmFkIERPSSEhCgkJCSRkYXRhb2JqLT5jb21taXQoKTsK +CQkJcmV0dXJuIEVQcmludHM6OkNvbnN0OjpIVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUjsKCQl9 +I1dlJ2xsIGxlYXZlIERhdGFjaXRlIHRvIGRvIGFueSBmdXJ0aGVyIHN5bnRheCBjaGVja2luZyBl +dGMuLi4KCX0KCglyZXR1cm4gJHRoaXNkb2k7Cn0KMTsK + plugins/EPrints/Plugin/Export/DataCiteXML.pm - inode/symlink - fbf23f01140ea16fd5e6a322c89f199a + text/plain + d8736ebaba330e5aca52654ce4ab5f28 MD5 - 3906 + 4129 + PWhlYWQxIE5BTUUKCkVQcmludHM6OlBsdWdpbjo6RXhwb3J0OjpEYXRhQ2l0ZVhNTAoKPWN1dAoK +cGFja2FnZSBFUHJpbnRzOjpQbHVnaW46OkV4cG9ydDo6RGF0YUNpdGVYTUw7CnVzZSBFUHJpbnRz +OjpQbHVnaW46OkV4cG9ydDo6RmVlZDsKCkBJU0EgPSAoJ0VQcmludHM6OlBsdWdpbjo6RXhwb3J0 +OjpGZWVkJyk7Cgp1c2Ugc3RyaWN0OwoKc3ViIG5ldwp7CiAgICAgICAgbXkgKCRjbGFzcywgJW9w +dHMpID0gQF87CgogICAgICAgIG15ICRzZWxmID0gJGNsYXNzLT5TVVBFUjo6bmV3KCVvcHRzKTsK +CiAgICAgICAgJHNlbGYtPntuYW1lfSA9ICdEYXRhIENpdGUgWE1MJzsKICAgICAgICAkc2VsZi0+ +e2FjY2VwdH0gPSBbICdkYXRhb2JqL2VwcmludCddOwogICAgICAgICRzZWxmLT57dmlzaWJsZX0g +PSAnYWxsJzsKICAgICAgICAkc2VsZi0+e3N1ZmZpeH0gPSAnLnhtbCc7CiAgICAgICAgJHNlbGYt +PnttaW1ldHlwZX0gPSAnYXBwbGljYXRpb24veG1sOyBjaGFyc2V0PXV0Zi04JzsKIAkkc2VsZi0+ +e2FyZ3VtZW50c30tPntkb2l9ID0gdW5kZWY7CiAKICAgICAgcmV0dXJuICRzZWxmOwp9CgpzdWIg +b3V0cHV0X2RhdGFvYmoKewogICAgICAgIG15ICgkc2VsZiwgJGRhdGFvYmosICVvcHRzKSA9IEBf +OwoKIAkJbXkgJHJlcG8gPSAkc2VsZi0+e3JlcG9zaXRvcnl9OwogCQlteSAkeG1sID0gJHJlcG8t +PnhtbDsKCQkKCQkjcmVmZXJlbmNlIHRoZSBkYXRhY2l0ZSBzY2hlbWEgZnJvbSBjb25maWcKCQlt +eSAkZW50cnkgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggInJlc291cmNlIiwgCgkJCXhtbG5zPT4g +JHJlcG8tPmdldF9jb25mKCAiZGF0YWNpdGVkb2kiLCAieG1sbnMiKSwgCgkJCSJ4bWxuczp4c2ki +PT4iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLCAKCQkJInhzaTpz +Y2hlbWFMb2NhdGlvbiIgPT4gJHJlcG8tPmdldF9jb25mKCAiZGF0YWNpdGVkb2kiLCAic2NoZW1h +TG9jYXRpb24iKSk7IAoKCQkjUk0gV2UgcGFzcyBpbiB0aGUgRE9JIGZyb20gRXZlbnQ6OkRhdGFD +aXRlLi4uIG9yIGZyb20gLS1hcmdzIG9uIHRoZSBjbWQgbGluZSAKCQlteSAkdGhpc2RvaSA9ICRv +cHRze2RvaX07CgkJI1JNIGNvaW4gYSBET0kgaWYgZWl0aGVyIAoJCQkjIC0gbm90IGNvbWUgdmlh +IGV2ZW50IG9yIAoJCQkjIC0gbm8gZG9pIGFyZyBwYXNzZWQgaW4gdmlhIGNtZF9saW5lCgkJIyBp +ZSB3aGVuIHNvbWVvbmUgZXhwb3J0cyBEYXRhQ2l0ZVhNTCBmcm9tIHRoZSBBY3Rpb24gdGFiCgkJ +aWYoIWRlZmluZWQgJHRoaXNkb2kpewoJCQkjbmljayB0aGUgY29pbmluZyBzdWIgZnJvbSBldmVu +dCBwbHVnaW4KCQkJbXkgJGV2ZW50ID0gJHJlcG8tPnBsdWdpbigiRXZlbnQ6OkRhdGFDaXRlRXZl +bnQiKTsKCQkJJHRoaXNkb2kgPSAkZXZlbnQtPmNvaW5fZG9pKCRyZXBvLCAkZGF0YW9iaik7CgkJ +CSNjb2luX2RvaSBtYXkgcmV0dXJuIGFuIGV2ZW50IGVycm9yIGNvZGUgaWYgbm8gcHJlZml4IHBy +ZXNlbnQgYXNzdW1lIHRoaXMgaXMgdGhlIGNhc2UKCQkJbXkgJHByZWZpeCA9ICRyZXBvLT5nZXRf +Y29uZiggImRhdGFjaXRlZG9pIiwgInByZWZpeCIpOwoJCQlyZXR1cm4gJHRoaXNkb2kgaWYoJHRo +aXNkb2kgIX4gL14kcHJlZml4Lyk7CgkJfQoKCSAgIAkkZW50cnktPmFwcGVuZENoaWxkKCAkeG1s +LT5jcmVhdGVfZGF0YV9lbGVtZW50KCAiaWRlbnRpZmllciIsICR0aGlzZG9pICwgaWRlbnRpZmll +clR5cGU9PiJET0kiICkgKTsKCQkKCQkjUk0gb3RoZXJ3aXNlIHdlJ2xsIGxlYXZlIHRoaXMgYWxv +bmUgZm9yIG5vdwoKCQlteSAkY3JlYXRvcnMgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImNyZWF0 +b3JzIiApOwoJCWlmKCAkZGF0YW9iai0+ZXhpc3RzX2FuZF9zZXQoICJjcmVhdG9ycyIgKSApCiAg +ICAgICAgCXsKCQoJCQlteSAkbmFtZXMgPSAkZGF0YW9iai0+Z2V0X3ZhbHVlKCAiY3JlYXRvcnMi +ICk7CgkJCWZvcmVhY2ggbXkgJG5hbWUgKCBAJG5hbWVzICkKCQkJewoJCQkJbXkgJGF1dGhvciA9 +ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiY3JlYXRvciIgKTsKCgkJCQlteSAkbmFtZV9zdHIgPSBF +UHJpbnRzOjpVdGlsczo6bWFrZV9uYW1lX3N0cmluZyggJG5hbWUtPntuYW1lfSk7CgkJCQkkYXV0 +aG9yLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2RhdGFfZWxlbWVudCgKCQkJCQkJCSJjcmVh +dG9yTmFtZSIsCgkJCQkJCQkkbmFtZV9zdHIgKSApOwoKCQkJCSRjcmVhdG9ycy0+YXBwZW5kQ2hp +bGQoICRhdXRob3IgKTsKCQkJfQogICAgICAgIAl9CgkJJGVudHJ5LT5hcHBlbmRDaGlsZCggJGNy +ZWF0b3JzICk7CgoJCWlmICgkZGF0YW9iai0+ZXhpc3RzX2FuZF9zZXQoICJ0aXRsZSIgKSkgewoJ +CQlteSAkdGl0bGVzID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJ0aXRsZXMiICk7CgkJIAkkdGl0 +bGVzLT5hcHBlbmRDaGlsZCggICR4bWwtPmNyZWF0ZV9kYXRhX2VsZW1lbnQoICJ0aXRsZSIsICAk +ZGF0YW9iai0+cmVuZGVyX3ZhbHVlKCAidGl0bGUiICkgICkgKTsKCQkJJGVudHJ5LT5hcHBlbmRD +aGlsZCggJHRpdGxlcyApOwoJCX0KCQkKCQkkZW50cnktPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVh +dGVfZGF0YV9lbGVtZW50KCAicHVibGlzaGVyIiwgJHJlcG8tPmdldF9jb25mKCAiZGF0YWNpdGVk +b2kiLCAicHVibGlzaGVyIikgKSApOwoJCgkJaWYgKCRkYXRhb2JqLT5leGlzdHNfYW5kX3NldCgg +ImRhdGVzdGFtcCIgKSkgewoJCSAgICAkZGF0YW9iai0+Z2V0X3ZhbHVlKCAiZGF0ZXN0YW1wIiAp +ID1+IC9eKFswLTldezR9KS87CgkJCSRlbnRyeS0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV9k +YXRhX2VsZW1lbnQoICJwdWJsaWNhdGlvblllYXIiLCAkMSApICkgaWYgJDE7CgkJCgkJfQoKCgkJ +aWYgKCRkYXRhb2JqLT5leGlzdHNfYW5kX3NldCggInN1YmplY3RzIiApKSB7CgkJCW15ICRzdWJq +ZWN0cyA9ICRkYXRhb2JqLT5nZXRfdmFsdWUoInN1YmplY3RzIik7CgkJCWlmKCBFUHJpbnRzOjpV +dGlsczo6aXNfc2V0KCAkc3ViamVjdHMgKSApewoJCQkJbXkgJHN1YmplY3RzX3RhZyA9ICR4bWwt +PmNyZWF0ZV9lbGVtZW50KCAic3ViamVjdHMiICk7CgkJCQlmb3JlYWNoIG15ICR2YWwgKEAkc3Vi +amVjdHMpewoJCSAgICAgICAgICAgICAgICBteSAkc3ViamVjdCA9IEVQcmludHM6OkRhdGFPYmo6 +OlN1YmplY3QtPm5ldyggJHJlcG8sICR2YWwgKTsKCQkJCSAgICAgICAgICAgbmV4dCB1bmxlc3Mg +ZGVmaW5lZCAkc3ViamVjdDsKCQkJCSAgICAgICAJJHN1YmplY3RzX3RhZy0+YXBwZW5kQ2hpbGQo +ICAkeG1sLT5jcmVhdGVfZGF0YV9lbGVtZW50KCAic3ViamVjdCIsICAkc3ViamVjdC0+cmVuZGVy +X2Rlc2NyaXB0aW9uICApICk7CgkJCQkKCQkJCX0KCQkJCSRlbnRyeS0+YXBwZW5kQ2hpbGQoICRz +dWJqZWN0c190YWcgKTsKCQkJfQoJCX0KCSAgCgkKCQlteSAkdGhpc3Jlc291cmNlVHlwZSA9ICRy +ZXBvLT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgInR5cGVtYXAiLCAkZGF0YW9iai0+Z2V0X3Zh +bHVlKCJ0eXBlIikgKTsgCgkJaWYoZGVmaW5lZCAkdGhpc3Jlc291cmNlVHlwZSApewoJCQkkZW50 +cnktPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZGF0YV9lbGVtZW50KCAicmVzb3VyY2VUeXBl +IiwgJHRoaXNyZXNvdXJjZVR5cGUtPnsndid9LCAgcmVzb3VyY2VUeXBlR2VuZXJhbD0+JHRoaXNy +ZXNvdXJjZVR5cGUtPnsnYSd9KSApOwoJCX0KCQkKCQoJCW15ICRhbHRlcm5hdGVJZGVudGlmaWVy +cyA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiYWx0ZXJuYXRlSWRlbnRpZmllcnMiICk7CgkJJGFs +dGVybmF0ZUlkZW50aWZpZXJzLT5hcHBlbmRDaGlsZCggICR4bWwtPmNyZWF0ZV9kYXRhX2VsZW1l +bnQoICJhbHRlcm5hdGVJZGVudGlmaWVyIiwgICRkYXRhb2JqLT5nZXRfdXJsKCkgLCBhbHRlcm5h +dGVJZGVudGlmaWVyVHlwZT0+IlVSTCIgKSApOwoJCSRlbnRyeS0+YXBwZW5kQ2hpbGQoICRhbHRl +cm5hdGVJZGVudGlmaWVycyApOwoJCgoJCSNUT0RPIFNlZWssIGlkZW50aWZ5IGFuZCBpbmNsdWRl +IGZvciByZWdpc3RyYXRpb24gdGhlIG9wdGlvbmFsIGRhdGFjaXRlIGZpZWxkcwoJICAgICAgIHJl +dHVybiAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4nLiJcbiIuJHhtbC0+ +dG9fc3RyaW5nKCRlbnRyeSk7Cn0KCjE7Cg== + - static/images/epm/datacitedoi.png - inode/symlink - 14e9e2be0a73f452533488634aaea66e + plugins/EPrints/Plugin/Screen/EPrint/Staff/CoinDOI.pm + text/plain + 0ceae1dd50779c660b2e2a6bb4e4ff27 MD5 - 101504 + 2237 + cGFja2FnZSBFUHJpbnRzOjpQbHVnaW46OlNjcmVlbjo6RVByaW50OjpTdGFmZjo6Q29pbkRPSTsK +CiN1c2UgRVByaW50czo6UGx1Z2luOjpTY3JlZW46OkVQcmludDsKCkBJU0EgPSAoICdFUHJpbnRz +OjpQbHVnaW46OlNjcmVlbjo6RVByaW50JyApOwoKdXNlIHN0cmljdDsKCnN1YiBuZXcKewogICAg +ICAgIG15KCAkY2xhc3MsICVwYXJhbXMgKSA9IEBfOwoKICAgICAgICBteSAkc2VsZiA9ICRjbGFz +cy0+U1VQRVI6Om5ldyglcGFyYW1zKTsKCiAgICAgICAgIyAgICAgICAkc2VsZi0+e3ByaXZ9ID0g +IyBubyBzcGVjaWZpYyBwcml2IC0gb25lIHBlciBhY3Rpb24KCiAgICAgICAgJHNlbGYtPnthY3Rp +b25zfSA9IFtxdy8gY29pbmRvaSAvXTsKCiAgICAgICAgJHNlbGYtPnthcHBlYXJzfSA9IFsgewog +ICAgICAgICAgICAgICAgcGxhY2UgPT4gImVwcmludF9lZGl0b3JfYWN0aW9ucyIsCiAgICAgICAg +ICAgICAgICBhY3Rpb24gPT4gImNvaW5kb2kiLAogICAgICAgICAgICAgICAgcG9zaXRpb24gPT4g +MTk3NywKICAgICAgICB9LCBdOwoKICAgICAgICByZXR1cm4gJHNlbGY7Cn0KCnN1YiBvYnRhaW5f +bG9jawp7CiAgICAgICAgbXkoICRzZWxmICkgPSBAXzsKCiAgICAgICAgcmV0dXJuICRzZWxmLT5j +b3VsZF9vYnRhaW5fZXByaW50X2xvY2s7Cn0KCnN1YiBhYm91dF90b19yZW5kZXIKewogICAgICAg +IG15KCAkc2VsZiApID0gQF87CgogICAgICAgICRzZWxmLT5FUHJpbnRzOjpQbHVnaW46OlNjcmVl +bjo6RVByaW50OjpWaWV3OjphYm91dF90b19yZW5kZXI7Cn0KCnN1YiBhbGxvd19jb2luZG9pCnsK +ICAgICAgICBteSggJHNlbGYgKSA9IEBfOwoKICAgICAgICByZXR1cm4gMCB1bmxlc3MgJHNlbGYt +PmNvdWxkX29idGFpbl9lcHJpbnRfbG9jazsKIAoJbXkgJHJlcG9zaXRvcnkgPSAkc2VsZi0+e3Jl +cG9zaXRvcnl9OwoJI1RPRE8gYSB2ZXJzaW9uIHRoYXQgd29ya3MgZm9yIGRvY3VtZW50cyB0b28K +CW15ICRkYXRhb2JqID0gJHNlbGYtPntwcm9jZXNzb3J9LT57ZXByaW50fTsgCiAgICAgICAgcmV0 +dXJuIDAgdW5sZXNzICRyZXBvc2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgImVwcmlu +dHN0YXR1cyIsICAkZGF0YW9iai0+dmFsdWUoICJlcHJpbnRfc3RhdHVzIiApKTsKCSNUT0RPIGRv +bid0IGFsbG93IHRoZSBjb2luRE9JIGJ1dHRvbiBpZiBhIERPSSBpcyBhbHJlYWR5IHJlZ2lzdGVy +ZWQgKG1heSByZXF1aXJlIGEgZGIgZmxhZyBmb3Igc3VjY2Vzc2Z1bCByZWcpCiAgICAgICAgcmV0 +dXJuICRzZWxmLT5hbGxvdyggImVwcmludC9lZGl0OmVkaXRvciIgKTsKfQoKc3ViIGFjdGlvbl9j +b2luZG9pCnsKCW15KCAkc2VsZiApID0gQF87CiAKICAgICAgIG15ICRyZXBvc2l0b3J5ID0gJHNl +bGYtPntyZXBvc2l0b3J5fTsKIAogICAgICAgcmV0dXJuIHVuZGVmIGlmICghZGVmaW5lZCAkcmVw +b3NpdG9yeSk7CgoJbXkgJGVwcmludCA9ICRzZWxmLT57cHJvY2Vzc29yfS0+e2VwcmludH07CgoJ +aWYgKGRlZmluZWQgJGVwcmludCkgewoJCQlteSAkZXByaW50X2lkID0gJGVwcmludC0+aWQ7CiAg +ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAJICAgICAgICRyZXBvc2l0b3J5LT5k +YXRhc2V0KCAiZXZlbnRfcXVldWUiICktPmNyZWF0ZV9kYXRhb2JqKHsKCQkJCQlwbHVnaW5pZCA9 +PiAiRXZlbnQ6OkRhdGFDaXRlRXZlbnQiLAoJCQkJCWFjdGlvbiA9PiAiZGF0YWNpdGVfZG9pIiwK +CQkJCQlwYXJhbXMgPT4gWyRlcHJpbnQtPmludGVybmFsX3VyaV0sCgkJICAgICAgICB9KTsgCgog +ICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+YWRkX3Jlc3VsdF9tZXNzYWdlKCAxICk7CiAg +ICAgICB9Cn0gICAgCgpzdWIgYWRkX3Jlc3VsdF9tZXNzYWdlCnsKICAgICAgICBteSggJHNlbGYs +ICRvayApID0gQF87CgogICAgICAgIGlmKCAkb2sgKQogICAgICAgIHsKICAgICAgICAgICAgICAg +ICRzZWxmLT57cHJvY2Vzc29yfS0+YWRkX21lc3NhZ2UoICJtZXNzYWdlIiwKICAgICAgICAgICAg +ICAgICAgICAgICAgJHNlbGYtPmh0bWxfcGhyYXNlKCAiY29pbmluZ2RvaSIgKSApOwogICAgICAg +IH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAgICAgIyBFcnJvcj8KICAgICAg +ICAgICAgICAgICRzZWxmLT57cHJvY2Vzc29yfS0+YWRkX21lc3NhZ2UoICJlcnJvciIgKTsKICAg +ICAgICB9CgogICAgICAgICRzZWxmLT57cHJvY2Vzc29yfS0+e3NjcmVlbmlkfSA9ICJFUHJpbnQ6 +OlZpZXciOwp9CgoxOwo= + + + + static/images/epm/unknown.png + image/png + 09c09aa0a7bb351d51a06a07db5d4139 + MD5 + 52913 + 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 +MFAtTzkAAAAASUVORK5CYII= + - inode/symlink - other -
static/images/epm/datacitedoi.png
+ image/png + image +
static/images/epm/unknown.png
install
- static/images/epm/datacitedoi.png - inode/symlink - 14e9e2be0a73f452533488634aaea66e + static/images/epm/unknown.png + image/png + 09c09aa0a7bb351d51a06a07db5d4139 MD5 - 101504 + 52913 + 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 +MFAtTzkAAAAASUVORK5CYII= + image -
static/images/epm/datacitedoi.png
+
static/images/epm/unknown.png
coverimage
- 0.9.2 + 1.0.0 - Milsted - Andrew + McNicholl + Rory + repositories@ulcc.ac.uk - Data Cite DOI Registration - images/epm/datacitedoi.png + DataCiteDoi - DataCite DOIs for EPrints + A plugin integrate into the workflow the process of to minting and registering DataCite DOIs + https://github.com/eprintsug/DataCiteDoi + images/epm/unknown.png
From 1683cd6d1441e060dd0cc7d26b5dda6c8fe2151c Mon Sep 17 00:00:00 2001 From: Andrew Hercules Date: Fri, 12 Aug 2016 15:51:04 +0100 Subject: [PATCH 14/42] Updating plugin code to resolve server error issue --- .../EPrints/Plugin/Event/DataCiteEvent.pm | 36 +++++++------- .../EPrints/Plugin/Export/DataCiteXML.pm | 49 ++++++++++--------- 2 files changed, 45 insertions(+), 40 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm b/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm index 7008437..3e0d210 100644 --- a/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm +++ b/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm @@ -5,27 +5,27 @@ EPrints::Plugin::Event::DataCiteEvent =cut package EPrints::Plugin::Event::DataCiteEvent; - + use EPrints::Plugin::Event; use LWP; -use Crypt::SSLeay; +# use Crypt::SSLeay; use HTTP::Headers::Util; @ISA = qw( EPrints::Plugin::Event ); - + sub datacite_doi { my( $self, $dataobj) = @_; my $repository = $self->repository(); - + #Check object status first.... TODO Make work for dataobj == doument (just in case) - my $shoulddoi = $repository->get_conf( "datacitedoi", "eprintstatus", $dataobj->value( "eprint_status" )); + my $shoulddoi = $repository->get_conf( "datacitedoi", "eprintstatus", $dataobj->value( "eprint_status" )); #Check Doi Status - if(!$shoulddoi){ + if(!$shoulddoi){ $repository->log("Attempt to coin DOI for item that is not in the required area (see \$c->{datacitedoi}->{eprintstatus})"); return EPrints::Const::HTTP_INTERNAL_SERVER_ERROR; - } + } my $thisdoi = $self->coin_doi($repository,$dataobj); #coin_doi may return an event error code if no prefix present assume this is the case @@ -41,12 +41,12 @@ sub datacite_doi $url.="/" if($url !~ /\/$/); #attach slash if config has forgotten my $user_name = $repository->get_conf( "datacitedoi", "user"); my $user_pw = $repository->get_conf( "datacitedoi", "pass"); - + #register metadata; my($response_content, $response_code) = datacite_request("POST", $url."metadata", $user_name, $user_pw, $xml, "application/xml;charset=UTF-8"); if($response_code !~ /20(1|0)/){ $repository->log("Metadata response from datacite api: $response_code: $response_content"); - $repository->log("BTW the \$doi was:\n$thisdoi"); + $repository->log("BTW the \$doi was:\n$thisdoi"); return EPrints::Const::HTTP_INTERNAL_SERVER_ERROR; } #register doi @@ -94,7 +94,7 @@ sub datacite_request { return ($res->content(),$res->code()); } -#RM lets do the DOI coining somewhere (reasonably) accessible +#RM lets do the DOI coining somewhere (reasonably) accessible sub coin_doi { my( $self, $repository, $dataobj) = @_; @@ -113,7 +113,7 @@ sub coin_doi { my $thisdoi = $prefix.$delim1.$repository->get_conf( "datacitedoi", "repoid").$delim2.$id; my $eprintdoifield = $repository->get_conf( "datacitedoi", "eprintdoifield"); - + #Custom DOIS #if DOI field is set attempt to use that if config allows if($dataobj->exists_and_set( $eprintdoifield) ){ @@ -125,12 +125,14 @@ sub coin_doi { } #we are allowed (check prefix just in case) $thisdoi = $dataobj->get_value( $eprintdoifield ); - if($thisdoi !~ /^$prefix/){ - $repository->log("Prefix does not match ($prefix) for custom DOI: $thisdoi"); - $dataobj->set_value($eprintdoifield, ""); #unset the bad DOI!! - $dataobj->commit(); - return EPrints::Const::HTTP_INTERNAL_SERVER_ERROR; - }#We'll leave Datacite to do any further syntax checking etc... + # AH commented out because when there is an existing DOI (e.g. one issued by the publisher) + # the condition is always true and therefore, existing DOI becomes an empty string + # if($thisdoi !~ /^$prefix/){ + # $repository->log("Prefix does not match ($prefix) for custom DOI: $thisdoi"); + # $dataobj->set_value($eprintdoifield, ""); #unset the bad DOI!! + # $dataobj->commit(); + # return EPrints::Const::HTTP_INTERNAL_SERVER_ERROR; + # }#We'll leave Datacite to do any further syntax checking etc... } return $thisdoi; diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 67f7e6e..24aea5b 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -23,7 +23,7 @@ sub new $self->{suffix} = '.xml'; $self->{mimetype} = 'application/xml; charset=utf-8'; $self->{arguments}->{doi} = undef; - + return $self; } @@ -33,17 +33,20 @@ sub output_dataobj my $repo = $self->{repository}; my $xml = $repo->xml; - + #reference the datacite schema from config - my $entry = $xml->create_element( "resource", - xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), - "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", - "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); - - #RM We pass in the DOI from Event::DataCite... or from --args on the cmd line - my $thisdoi = $opts{doi}; - #RM coin a DOI if either - # - not come via event or + my $entry = $xml->create_element( "resource", + xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", + "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); + + #RM We pass in the DOI from Event::DataCite... or from --args on the cmd line + # AH my $thisdoi = $opts{doi}; always returns undefined, even when DOI exists + # Ideally coining should NOT happen in this script but opts{doi} should have it + # but is always blank + my $thisdoi = $dataobj->get_value("id_number"); + #RM coin a DOI if either + # - not come via event or # - no doi arg passed in via cmd_line # ie when someone exports DataCiteXML from the Action tab if(!defined $thisdoi){ @@ -56,13 +59,13 @@ sub output_dataobj } $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); - + #RM otherwise we'll leave this alone for now my $creators = $xml->create_element( "creators" ); if( $dataobj->exists_and_set( "creators" ) ) { - + my $names = $dataobj->get_value( "creators" ); foreach my $name ( @$names ) { @@ -83,13 +86,13 @@ sub output_dataobj $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ) ) ); $entry->appendChild( $titles ); } - + $entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); - + if ($dataobj->exists_and_set( "datestamp" )) { $dataobj->get_value( "datestamp" ) =~ /^([0-9]{4})/; $entry->appendChild( $xml->create_data_element( "publicationYear", $1 ) ) if $1; - + } @@ -101,23 +104,23 @@ sub output_dataobj my $subject = EPrints::DataObj::Subject->new( $repo, $val ); next unless defined $subject; $subjects_tag->appendChild( $xml->create_data_element( "subject", $subject->render_description ) ); - + } $entry->appendChild( $subjects_tag ); } } - - - my $thisresourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("type") ); + + + my $thisresourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("type") ); if(defined $thisresourceType ){ $entry->appendChild( $xml->create_data_element( "resourceType", $thisresourceType->{'v'}, resourceTypeGeneral=>$thisresourceType->{'a'}) ); } - - + + my $alternateIdentifiers = $xml->create_element( "alternateIdentifiers" ); $alternateIdentifiers->appendChild( $xml->create_data_element( "alternateIdentifier", $dataobj->get_url() , alternateIdentifierType=>"URL" ) ); $entry->appendChild( $alternateIdentifiers ); - + #TODO Seek, identify and include for registration the optional datacite fields return ''."\n".$xml->to_string($entry); From 2daef87e01a2a2de0afe49821011c954f2d30ad1 Mon Sep 17 00:00:00 2001 From: Borys Feldman Date: Wed, 31 Aug 2016 16:26:22 +0100 Subject: [PATCH 15/42] updating plugin, to use 4.0 metadata schema --- cfg/cfg.d/z_datacitedoi.pl | 92 ++++- .../EPrints/Plugin/Export/DataCiteXML.pm | 331 +++++++++++++++--- 2 files changed, 370 insertions(+), 53 deletions(-) diff --git a/cfg/cfg.d/z_datacitedoi.pl b/cfg/cfg.d/z_datacitedoi.pl index 509d6cd..0c10d34 100644 --- a/cfg/cfg.d/z_datacitedoi.pl +++ b/cfg/cfg.d/z_datacitedoi.pl @@ -16,12 +16,12 @@ $c->{datacitedoi}{user} = "USER"; $c->{datacitedoi}{pass} = "PASS"; -# datacite requires a Publisher -# The name of the entity that holds, archives, publishes, -# prints, distributes, releases, issues, or produces the -# resource. This property will be used to formulate the +# datacite requires a Publisher +# The name of the entity that holds, archives, publishes, +# prints, distributes, releases, issues, or produces the +# resource. This property will be used to formulate the # citation, so consider the prominence of the role. -# eg World Data Center for Climate (WDCC); +# eg World Data Center for Climate (WDCC); $c->{datacitedoi}{publisher} = "Eprints Repo"; # Namespace and location for datacite XML schema @@ -53,7 +53,7 @@ #### DOI syntax config #### ########################### -# Set config of DOI delimiters +# Set config of DOI delimiters # Feel free to change, but they must conform to DOI syntax # If not set will default to prefix/repoid/id the example below gives prefix/repoid.id $c->{datacitedoi}{delimiters} = ["/","."]; @@ -93,9 +93,9 @@ my ( %params ) = @_; my $repository = %params->{repository}; - + return undef if (!defined $repository); - + if (defined %params->{dataobj}) { my $dataobj = %params->{dataobj}; my $eprint_id = $dataobj->id; @@ -105,7 +105,7 @@ params => [$dataobj->internal_uri], }); } - + }); } @@ -115,3 +115,77 @@ $c->{plugins}{"Screen::EPrint::Staff::CoinDOI"}{params}{disable} = 0; } + + + + + +$c->{funderrr} = sub + { + +my ( $xml, $entry, $dataobj ) = @_; + +my $funders = $dataobj->get_value( "funders" ); +# my $grant = $dataobj->get_value( "grant" ); +my $projects = $dataobj->get_value( "projects" ); + if ($dataobj->exists_and_set( "funders" )) { + my $thefunders = $xml->create_element( "funders" ); + foreach my $funder ( @$funders ) + { + my $fund = $funder->{funders}; + my $grant = $funder->{grant}; + + + my $other = $funder->{other}->{funder}; + + foreach my $project ( @$projects ) + { + + my $proj = $project->{name}; + + + # $thefunders->appendChild( $xml->create_data_element( "funderName", $other) ); + $thefunders->appendChild( $xml->create_data_element( "funderName", $fund) ); + $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); + # $thefunders->appendChild( $xml->create_data_element( "awardTitle", $proj) ); +} + # print STDERR Dumper $funder; + +} + + $entry->appendChild( $thefunders ); + +} +}; + + + +$c->{laaanguages} = sub + { + my ( $xml, $entry, $dataobj ) = @_; + # + my $lan = $dataobj->get_value( "language" ); + if ($dataobj->exists_and_set( "language" )) { + foreach my $la ( @$lan ) + { + my $thelanguage = $la->{l}; + $entry->appendChild( $xml->create_data_element( "language", $thelanguage) ); + } + } + } + +# $c->{laaanguages} = sub +# { +# +# my ( $xml, $entry, $dataobj ) = @_; +# +# my $lan = $dataobj->get_value( "language" ); +# if ($dataobj->exists_and_set( "language" )) { +# foreach my $la ( @$lan ) +# { +# my $thelanguage = $la->{l}; +# $entry->appendChild( $xml->create_data_element( "language", $thelanguage) ); +# } +# } +# +# } diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 24aea5b..a71e5d0 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -11,6 +11,7 @@ use EPrints::Plugin::Export::Feed; use strict; +use Data::Dumper; sub new { my ($class, %opts) = @_; @@ -35,7 +36,7 @@ sub output_dataobj my $xml = $repo->xml; #reference the datacite schema from config - my $entry = $xml->create_element( "resource", + our $entry = $xml->create_element( "resource", xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); @@ -62,68 +63,310 @@ sub output_dataobj #RM otherwise we'll leave this alone for now - my $creators = $xml->create_element( "creators" ); - if( $dataobj->exists_and_set( "creators" ) ) - { - - my $names = $dataobj->get_value( "creators" ); - foreach my $name ( @$names ) - { - my $author = $xml->create_element( "creator" ); + # my $creators = $xml->create_element( "creators" ); + if( $dataobj->exists_and_set( "creators" ) ) + { + my $creators = $xml->create_element( "creators" ); + my $names = $dataobj->get_value( "creators" ); + ; + + foreach my $name ( @$names ) + { + my $author = $xml->create_element( "creator" ); + + my $name_str = EPrints::Utils::make_name_string( $name->{name}); + # my $family = EPrints::Utils::make_family_name_string( $name->{family}->{name}); + # my $orcid = $name->get_value("orcid"); + + # my $orc= $dataobj->get_value( "creator_orcid" ); + my $family = $name->{name}->{family}; + my $given = $name->{name}->{given}; + my $orcid = $name->{orcid}; + $author->appendChild( $xml->create_data_element( + "creatorName", + $name_str ) ); + $author->appendChild( $xml->create_data_element("givenName",$given ) ); + $author->appendChild( $xml->create_data_element("familyName", $family ) ); + + if ($dataobj->exists_and_set( "creators_orcid" )) { + print STDERR Dumper $orcid; + $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); + # $author->appendChild( $xml->create_data_element("affillation", $name_str) ); +} +# print STDERR Dumper $orcid; + $creators->appendChild( $author ); + } - my $name_str = EPrints::Utils::make_name_string( $name->{name}); - $author->appendChild( $xml->create_data_element( - "creatorName", - $name_str ) ); + $entry->appendChild( $creators ); + } - $creators->appendChild( $author ); - } - } - $entry->appendChild( $creators ); - if ($dataobj->exists_and_set( "title" )) { + if ($dataobj->exists_and_set( "title" )) { my $titles = $xml->create_element( "titles" ); - $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ) ) ); - $entry->appendChild( $titles ); + $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us" ) ); + # $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us", titleType=>"Subtitle" ) ); + $entry->appendChild( $titles ); } - $entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); +$entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); - if ($dataobj->exists_and_set( "datestamp" )) { - $dataobj->get_value( "datestamp" ) =~ /^([0-9]{4})/; - $entry->appendChild( $xml->create_data_element( "publicationYear", $1 ) ) if $1; +if ($dataobj->exists_and_set( "date" )) { + $dataobj->get_value( "date" ) =~ /^([0-9]{4})/; + $entry->appendChild( $xml->create_data_element( "publicationYear", $1 ) ) if $1; - } +} - if ($dataobj->exists_and_set( "subjects" )) { - my $subjects = $dataobj->get_value("subjects"); - if( EPrints::Utils::is_set( $subjects ) ){ - my $subjects_tag = $xml->create_element( "subjects" ); - foreach my $val (@$subjects){ - my $subject = EPrints::DataObj::Subject->new( $repo, $val ); - next unless defined $subject; - $subjects_tag->appendChild( $xml->create_data_element( "subject", $subject->render_description ) ); +# my $sub = $dataobj->get_value( "keywords" ); + if ($dataobj->exists_and_set( "keywords" )) { + my $sub = $dataobj->get_value( "keywords" ); + my $subjects = $xml->create_element( "subjects" ); - } - $entry->appendChild( $subjects_tag ); - } - } + $subjects->appendChild( $xml->create_data_element( "subject", $sub, "xml:lang"=>"en-us") ); + $entry->appendChild( $subjects ); + } - my $thisresourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("type") ); - if(defined $thisresourceType ){ - $entry->appendChild( $xml->create_data_element( "resourceType", $thisresourceType->{'v'}, resourceTypeGeneral=>$thisresourceType->{'a'}) ); - } + # my $author = $xml->create_element( "contributors" ); + # my $contributors = $xml->create_element( "contributors" ); + if( $dataobj->exists_and_set( "contributors" ) ) + { + my $contributors = $xml->create_element( "contributors" ); + + my $names = $dataobj->get_value( "contributors" ); + ; + + foreach my $name ( @$names ) + { + my $author = $xml->create_element( "contributor" ); + + my $name_str = EPrints::Utils::make_name_string( $name->{name}); + # my $family = EPrints::Utils::make_family_name_string( $name->{family}->{name}); + # my $orcid = $name->get_value("orcid"); + my $orcid = $name->{orcid}; + #print out the phrase too + # my $type = $name->{type}; + # print STDERR Dumper $name; + my $typee = $name->{type}; + my $family = $name->{name}->{family}; + my $given = $name->{name}->{given}; + # $author->appendChild( $xml->create_data_element("contributor") ); + $author->appendChild( $xml->create_data_element("contributorName", $name_str ) ); + $author->appendChild( $xml->create_data_element("givenName",$given ) ); + $author->appendChild( $xml->create_data_element("familyName", $family ) ); + + + # print STDERR Dumper $typee; + + if ($dataobj->exists_and_set( "contributors_orcid" )) { + my $orcid = $name->{orcid}; + $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); + # $author->appendChild( $xml->create_data_element("affillation", $name_str) ); + } + if ($dataobj->exists_and_set( "creator_affiliation" )) { + my $affiliation = $dataobj->get_value("creator_affiliation"); + $author->appendChild( $xml->create_data_element("affillation", $affiliation) ); + } + + + # my $rights = $dataobj->get_value( "copyright_holders" ); + # if ($dataobj->exists_and_set( "copyright_holders" )) { + # my $rights = $dataobj->get_value( "copyright_holders" ); + # foreach my $right ( @$rights ) + # { + # $author->appendChild( $xml->create_data_element("contributor", $right, contributorType=>"RightsHolder" ) ); + # # $author->appendChild( $xml->create_data_element("affillation", $name_str) ); + # } + # } + $contributors->appendChild( $author ); + } + + $entry->appendChild( $contributors ); + } + + # my $thisresourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("type") ); + # if(defined $thisresourceType ){ + # $entry->appendChild( $xml->create_data_element( "resourceType", $thisresourceType->{'v'}, resourceTypeGeneral=>$thisresourceType->{'a'}) ); + # } + + # my $type = $dataobj->get_value( "data_type" ); + # if ($dataobj->exists_and_set( "data_type" )) { + # my $type = $dataobj->get_value( "data_type" ); + # $entry->appendChild( $xml->create_data_element( "resourceType", $type, resourceTypeGeneral=>"Software") ); + # + # } + + + + + + + + + + + + if( $repo->can_call( "funderrr" ) ) + { + if( defined( $repo->call( "funderrr", $xml, $entry, $dataobj ) ) ) + {} + else { + + my $funders = $dataobj->get_value( "funders" ); + my $grant = $dataobj->get_value( "grant" ); + my $projects = $dataobj->get_value( "projects" ); + if ($dataobj->exists_and_set( "funders" )) { + my $thefunders = $xml->create_element( "funders" ); + foreach my $funder ( @$funders ) + { + # my $fun = $funder->{funders}; + + foreach my $project ( @$projects ) + { + $thefunders->appendChild( $xml->create_data_element( "funderName", $funder) ); + $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); + # $thefunders->appendChild( $xml->create_data_element( "awardTitle", $project) ); + # print STDERR Dumper $funder; + } + } + $entry->appendChild( $thefunders ); + } + } + } + + + # my $alternateIdentifiers = $xml->create_element( "alternateIdentifiers" ); + # $alternateIdentifiers->appendChild( $xml->create_data_element( "alternateIdentifier", $dataobj->get_url() , alternateIdentifierType=>"URL" ) ); + # $entry->appendChild( $alternateIdentifiers ); + # + # + + if ($dataobj->exists_and_set( "repo_link" )) { + # my $relatedResources = $dataobj->get_value( "related_resources_url" ); + # foreach my $relatedResource ( @$relatedResources ) + # { + + my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); + $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $dataobj->get_url() , relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); + # $relatedIdentifiers->appendChild( $xml->create_data_element("relatedIdentifier", )); + # $relatedIdentifiers->appendChild( $xml->create_data_element("relatedIdentifier", $relatedResource, relatedIdentifierType=>"DOI", relationType=>"IsReferencedBy")); + $entry->appendChild( $relatedIdentifiers ); + } + # } + + # my $abstract = $dataobj->get_value( "abstract" ); + if ($dataobj->exists_and_set( "abstract" )) { + my $abstract = $dataobj->get_value( "abstract" ); + my $discription = $xml->create_element( "descriptions" ); + + + + $discription->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); - my $alternateIdentifiers = $xml->create_element( "alternateIdentifiers" ); - $alternateIdentifiers->appendChild( $xml->create_data_element( "alternateIdentifier", $dataobj->get_url() , alternateIdentifierType=>"URL" ) ); - $entry->appendChild( $alternateIdentifiers ); + # if ($dataobj->exists_and_set( "legal_ethical" )) { + # my $legal = $dataobj->get_value( "legal_ethical" ); + # + # $discription->appendChild( $xml->create_data_element( "description", $legal, descriptionType=>"other" ) ); + # } + if ($dataobj->exists_and_set( "collection_method" )) { + my $collection = $dataobj->get_value("collection_method"); + $discription->appendChild( $xml->create_data_element("discrpition", $collection, descriptionType=>"Methods")); + } + + if ($dataobj->exists_and_set( "provenance" )) { + my $processing = $dataobj->get_value("provenance"); + $discription->appendChild( $xml->create_data_element("discrpition", $processing, descriptionType=>"Methods")); + } + $entry->appendChild( $discription ); + } + + + if( $repo->can_call( "laaanguages" ) ) + { + if( defined( $repo->call( "laaanguages", $xml, $entry, $dataobj ) ) ) + {} + else { + # my $lan = $dataobj->get_value( "language" ); + if ($dataobj->exists_and_set( "language" )) { + my $lan = $dataobj->get_value( "language" ); + $entry->appendChild( $xml->create_data_element( "language", $lan) ); + } + } + } + + + # # my ( $xml, $entry, $dataobj ) = @_; + # # + # my $lan = $dataobj->get_value( "language" ); + # if ($dataobj->exists_and_set( "language" )) { + # foreach my $la ( @$lan ) + # { + # my $thelanguage = $la->{l}; + # $entry->appendChild( $xml->create_data_element( "language", $thelanguage) ); + # } + # } + + + if( $dataobj->exists_and_set( "geographic_cover" ) ) + { + my $geo = $xml->create_element( "geoLocations" ); + # my $geo = $xml->create_element( "geoLocations" ); + my $names = $dataobj->get_value( "geographic_cover" ); + + + + my $author = $xml->create_element( "geoLocation" ); + my $bbox = $dataobj->get_value( "bounding_box" ); + print STDERR Dumper $bbox; + # my $name_str = EPrints::Utils::make_name_string( $name->{name}); + # my $family = EPrints::Utils::make_family_name_string( $name->{family}->{name}); + # my $orcid = $name->get_value("orcid"); + # my $orcid = $name->{orcid}; + # + # my $north = $bbox->{north}->{edge}; + my $west = $dataobj->get_value( "bounding_box_west_edge" ); + my $east = $dataobj->get_value( "bounding_box_east_edge" ); + my $south = $dataobj->get_value( "bounding_box_south_edge" ); + my $north = $dataobj->get_value( "bounding_box_north_edge" ); + # my $given = $name->{name}->{given}; + $author->appendChild( $xml->create_data_element("geoLocationPlace", $names ) ); + # $author->appendChild( $xml->create_data_element("geoLocationPoint" ) ); + my $bobox = $xml->create_element( "geoLocationBox" ); + #line below is not finished make sure to take a look back at it + + + + + $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $west) ); + $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $east) ); + $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $south) ); + $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $north) ); + print STDERR Dumper $north; + + + # $author->appendChild( $xml->create_data_element("givenName",$given ) ); + # $author->appendChild( $xml->create_data_element("familyName", $family ) ); + # $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); + # $author->appendChild( $xml->create_data_element("affillation", $name_str) ); + $author->appendChild( $bobox); + + + $geo->appendChild( $author ); + + + $entry->appendChild( $geo ); +} + + + # my $relatedIdentifiers = $xml->create_element( "alternateIdentifiers" ); + # $alternateIdentifiers->appendChild( $xml->create_data_element( "alternateIdentifier", $dataobj->get_url() , alternateIdentifierType=>"URL" ) ); + # $entry->appendChild( $alternateIdentifiers ); #TODO Seek, identify and include for registration the optional datacite fields return ''."\n".$xml->to_string($entry); } + 1; From 3d1bef30074adb11bbd5fcc75e59d9b08c5773d2 Mon Sep 17 00:00:00 2001 From: Borys Feldman Date: Thu, 1 Sep 2016 15:33:33 +0100 Subject: [PATCH 16/42] changes to the plugin for the repo link --- cfg/cfg.d/z_datacitedoi.pl | 51 +++---- .../EPrints/Plugin/Export/DataCiteXML.pm | 128 +++++------------- 2 files changed, 55 insertions(+), 124 deletions(-) diff --git a/cfg/cfg.d/z_datacitedoi.pl b/cfg/cfg.d/z_datacitedoi.pl index 0c10d34..0776816 100644 --- a/cfg/cfg.d/z_datacitedoi.pl +++ b/cfg/cfg.d/z_datacitedoi.pl @@ -119,51 +119,52 @@ - +#BF sub method for can call for funder $c->{funderrr} = sub { my ( $xml, $entry, $dataobj ) = @_; - my $funders = $dataobj->get_value( "funders" ); -# my $grant = $dataobj->get_value( "grant" ); + my $projects = $dataobj->get_value( "projects" ); if ($dataobj->exists_and_set( "funders" )) { my $thefunders = $xml->create_element( "funders" ); - foreach my $funder ( @$funders ) - { + + foreach my $funder ( @$funders ) + { my $fund = $funder->{funders}; my $grant = $funder->{grant}; + my $others = $dataobj->get_value( "funders_other_funder" ); - - my $other = $funder->{other}->{funder}; + foreach my $other ( @$others ) + { foreach my $project ( @$projects ) { my $proj = $project->{name}; + if ($fund eq "other" ) { + + $thefunders->appendChild( $xml->create_data_element( "funderName", $other) ); + } else { - # $thefunders->appendChild( $xml->create_data_element( "funderName", $other) ); $thefunders->appendChild( $xml->create_data_element( "funderName", $fund) ); - $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); - # $thefunders->appendChild( $xml->create_data_element( "awardTitle", $proj) ); } - # print STDERR Dumper $funder; - + $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); + } + } } - - $entry->appendChild( $thefunders ); - + $entry->appendChild( $thefunders ); } }; - +#BF sub method for can call for language $c->{laaanguages} = sub { my ( $xml, $entry, $dataobj ) = @_; - # + my $lan = $dataobj->get_value( "language" ); if ($dataobj->exists_and_set( "language" )) { foreach my $la ( @$lan ) @@ -173,19 +174,3 @@ } } } - -# $c->{laaanguages} = sub -# { -# -# my ( $xml, $entry, $dataobj ) = @_; -# -# my $lan = $dataobj->get_value( "language" ); -# if ($dataobj->exists_and_set( "language" )) { -# foreach my $la ( @$lan ) -# { -# my $thelanguage = $la->{l}; -# $entry->appendChild( $xml->create_data_element( "language", $thelanguage) ); -# } -# } -# -# } diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index a71e5d0..ac392cc 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -63,7 +63,7 @@ sub output_dataobj #RM otherwise we'll leave this alone for now - # my $creators = $xml->create_element( "creators" ); + if( $dataobj->exists_and_set( "creators" ) ) { my $creators = $xml->create_element( "creators" ); @@ -75,10 +75,9 @@ sub output_dataobj my $author = $xml->create_element( "creator" ); my $name_str = EPrints::Utils::make_name_string( $name->{name}); - # my $family = EPrints::Utils::make_family_name_string( $name->{family}->{name}); - # my $orcid = $name->get_value("orcid"); - # my $orc= $dataobj->get_value( "creator_orcid" ); + + my $family = $name->{name}->{family}; my $given = $name->{name}->{given}; my $orcid = $name->{orcid}; @@ -91,9 +90,9 @@ sub output_dataobj if ($dataobj->exists_and_set( "creators_orcid" )) { print STDERR Dumper $orcid; $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - # $author->appendChild( $xml->create_data_element("affillation", $name_str) ); + } -# print STDERR Dumper $orcid; + $creators->appendChild( $author ); } @@ -104,7 +103,7 @@ sub output_dataobj if ($dataobj->exists_and_set( "title" )) { my $titles = $xml->create_element( "titles" ); $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us" ) ); - # $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us", titleType=>"Subtitle" ) ); + $entry->appendChild( $titles ); } @@ -117,7 +116,7 @@ if ($dataobj->exists_and_set( "date" )) { } -# my $sub = $dataobj->get_value( "keywords" ); + if ($dataobj->exists_and_set( "keywords" )) { my $sub = $dataobj->get_value( "keywords" ); my $subjects = $xml->create_element( "subjects" ); @@ -127,8 +126,7 @@ if ($dataobj->exists_and_set( "date" )) { } - # my $author = $xml->create_element( "contributors" ); - # my $contributors = $xml->create_element( "contributors" ); + if( $dataobj->exists_and_set( "contributors" ) ) { my $contributors = $xml->create_element( "contributors" ); @@ -141,27 +139,24 @@ if ($dataobj->exists_and_set( "date" )) { my $author = $xml->create_element( "contributor" ); my $name_str = EPrints::Utils::make_name_string( $name->{name}); - # my $family = EPrints::Utils::make_family_name_string( $name->{family}->{name}); - # my $orcid = $name->get_value("orcid"); + my $orcid = $name->{orcid}; - #print out the phrase too - # my $type = $name->{type}; - # print STDERR Dumper $name; + my $typee = $name->{type}; my $family = $name->{name}->{family}; my $given = $name->{name}->{given}; - # $author->appendChild( $xml->create_data_element("contributor") ); + $author->appendChild( $xml->create_data_element("contributorName", $name_str ) ); $author->appendChild( $xml->create_data_element("givenName",$given ) ); $author->appendChild( $xml->create_data_element("familyName", $family ) ); - # print STDERR Dumper $typee; + if ($dataobj->exists_and_set( "contributors_orcid" )) { my $orcid = $name->{orcid}; $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - # $author->appendChild( $xml->create_data_element("affillation", $name_str) ); + } if ($dataobj->exists_and_set( "creator_affiliation" )) { my $affiliation = $dataobj->get_value("creator_affiliation"); @@ -169,32 +164,13 @@ if ($dataobj->exists_and_set( "date" )) { } - # my $rights = $dataobj->get_value( "copyright_holders" ); - # if ($dataobj->exists_and_set( "copyright_holders" )) { - # my $rights = $dataobj->get_value( "copyright_holders" ); - # foreach my $right ( @$rights ) - # { - # $author->appendChild( $xml->create_data_element("contributor", $right, contributorType=>"RightsHolder" ) ); - # # $author->appendChild( $xml->create_data_element("affillation", $name_str) ); - # } - # } + $contributors->appendChild( $author ); } $entry->appendChild( $contributors ); } - # my $thisresourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("type") ); - # if(defined $thisresourceType ){ - # $entry->appendChild( $xml->create_data_element( "resourceType", $thisresourceType->{'v'}, resourceTypeGeneral=>$thisresourceType->{'a'}) ); - # } - - # my $type = $dataobj->get_value( "data_type" ); - # if ($dataobj->exists_and_set( "data_type" )) { - # my $type = $dataobj->get_value( "data_type" ); - # $entry->appendChild( $xml->create_data_element( "resourceType", $type, resourceTypeGeneral=>"Software") ); - # - # } @@ -206,6 +182,7 @@ if ($dataobj->exists_and_set( "date" )) { + #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called funderrr if( $repo->can_call( "funderrr" ) ) { if( defined( $repo->call( "funderrr", $xml, $entry, $dataobj ) ) ) @@ -219,14 +196,13 @@ if ($dataobj->exists_and_set( "date" )) { my $thefunders = $xml->create_element( "funders" ); foreach my $funder ( @$funders ) { - # my $fun = $funder->{funders}; + foreach my $project ( @$projects ) { $thefunders->appendChild( $xml->create_data_element( "funderName", $funder) ); $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); - # $thefunders->appendChild( $xml->create_data_element( "awardTitle", $project) ); - # print STDERR Dumper $funder; + } } $entry->appendChild( $thefunders ); @@ -235,26 +211,19 @@ if ($dataobj->exists_and_set( "date" )) { } - # my $alternateIdentifiers = $xml->create_element( "alternateIdentifiers" ); - # $alternateIdentifiers->appendChild( $xml->create_data_element( "alternateIdentifier", $dataobj->get_url() , alternateIdentifierType=>"URL" ) ); - # $entry->appendChild( $alternateIdentifiers ); - # - # - if ($dataobj->exists_and_set( "repo_link" )) { - # my $relatedResources = $dataobj->get_value( "related_resources_url" ); - # foreach my $relatedResource ( @$relatedResources ) - # { - my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); - $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $dataobj->get_url() , relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); - # $relatedIdentifiers->appendChild( $xml->create_data_element("relatedIdentifier", )); - # $relatedIdentifiers->appendChild( $xml->create_data_element("relatedIdentifier", $relatedResource, relatedIdentifierType=>"DOI", relationType=>"IsReferencedBy")); - $entry->appendChild( $relatedIdentifiers ); + if ($dataobj->exists_and_set( "repo_link" )) { + my $theurls = $dataobj->get_value( "repo_link" ); + foreach my $theurl ( @$theurls ) + { + my $linkk = $theurl->{link}; + my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); + $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); + $entry->appendChild( $relatedIdentifiers ); + } } - # } - # my $abstract = $dataobj->get_value( "abstract" ); if ($dataobj->exists_and_set( "abstract" )) { my $abstract = $dataobj->get_value( "abstract" ); my $discription = $xml->create_element( "descriptions" ); @@ -264,11 +233,7 @@ if ($dataobj->exists_and_set( "date" )) { $discription->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); - # if ($dataobj->exists_and_set( "legal_ethical" )) { - # my $legal = $dataobj->get_value( "legal_ethical" ); - # - # $discription->appendChild( $xml->create_data_element( "description", $legal, descriptionType=>"other" ) ); - # } + if ($dataobj->exists_and_set( "collection_method" )) { my $collection = $dataobj->get_value("collection_method"); $discription->appendChild( $xml->create_data_element("discrpition", $collection, descriptionType=>"Methods")); @@ -281,13 +246,13 @@ if ($dataobj->exists_and_set( "date" )) { $entry->appendChild( $discription ); } - + #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages if( $repo->can_call( "laaanguages" ) ) { if( defined( $repo->call( "laaanguages", $xml, $entry, $dataobj ) ) ) {} else { - # my $lan = $dataobj->get_value( "language" ); + if ($dataobj->exists_and_set( "language" )) { my $lan = $dataobj->get_value( "language" ); $entry->appendChild( $xml->create_data_element( "language", $lan) ); @@ -296,22 +261,13 @@ if ($dataobj->exists_and_set( "date" )) { } - # # my ( $xml, $entry, $dataobj ) = @_; - # # - # my $lan = $dataobj->get_value( "language" ); - # if ($dataobj->exists_and_set( "language" )) { - # foreach my $la ( @$lan ) - # { - # my $thelanguage = $la->{l}; - # $entry->appendChild( $xml->create_data_element( "language", $thelanguage) ); - # } - # } + if( $dataobj->exists_and_set( "geographic_cover" ) ) { my $geo = $xml->create_element( "geoLocations" ); - # my $geo = $xml->create_element( "geoLocations" ); + my $names = $dataobj->get_value( "geographic_cover" ); @@ -319,21 +275,16 @@ if ($dataobj->exists_and_set( "date" )) { my $author = $xml->create_element( "geoLocation" ); my $bbox = $dataobj->get_value( "bounding_box" ); print STDERR Dumper $bbox; - # my $name_str = EPrints::Utils::make_name_string( $name->{name}); - # my $family = EPrints::Utils::make_family_name_string( $name->{family}->{name}); - # my $orcid = $name->get_value("orcid"); - # my $orcid = $name->{orcid}; - # - # my $north = $bbox->{north}->{edge}; + my $west = $dataobj->get_value( "bounding_box_west_edge" ); my $east = $dataobj->get_value( "bounding_box_east_edge" ); my $south = $dataobj->get_value( "bounding_box_south_edge" ); my $north = $dataobj->get_value( "bounding_box_north_edge" ); - # my $given = $name->{name}->{given}; + $author->appendChild( $xml->create_data_element("geoLocationPlace", $names ) ); - # $author->appendChild( $xml->create_data_element("geoLocationPoint" ) ); + my $bobox = $xml->create_element( "geoLocationBox" ); - #line below is not finished make sure to take a look back at it + @@ -345,10 +296,7 @@ if ($dataobj->exists_and_set( "date" )) { print STDERR Dumper $north; - # $author->appendChild( $xml->create_data_element("givenName",$given ) ); - # $author->appendChild( $xml->create_data_element("familyName", $family ) ); - # $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - # $author->appendChild( $xml->create_data_element("affillation", $name_str) ); + $author->appendChild( $bobox); @@ -359,9 +307,7 @@ if ($dataobj->exists_and_set( "date" )) { } - # my $relatedIdentifiers = $xml->create_element( "alternateIdentifiers" ); - # $alternateIdentifiers->appendChild( $xml->create_data_element( "alternateIdentifier", $dataobj->get_url() , alternateIdentifierType=>"URL" ) ); - # $entry->appendChild( $alternateIdentifiers ); + #TODO Seek, identify and include for registration the optional datacite fields From 6b80290f22fa2f8c98d444a3c12bf194b2e0cde0 Mon Sep 17 00:00:00 2001 From: Andrew Hercules Date: Fri, 2 Sep 2016 18:05:39 +0100 Subject: [PATCH 17/42] Updating DataCiteEvent.pm to use Crypt::SSLeay module --- lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm b/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm index 3e0d210..e09efb9 100644 --- a/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm +++ b/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm @@ -8,7 +8,7 @@ package EPrints::Plugin::Event::DataCiteEvent; use EPrints::Plugin::Event; use LWP; -# use Crypt::SSLeay; +use Crypt::SSLeay; use HTTP::Headers::Util; @ISA = qw( EPrints::Plugin::Event ); From ee2d788dea649456747a63a372989cad2ef402b3 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Wed, 7 Sep 2016 10:15:17 +0100 Subject: [PATCH 18/42] Update z_datacitedoi.pl Added config param to check for DataCiteXML shcema version https://github.com/eprintsug/DataCiteDoi/issues/2 https://github.com/eprintsug/DataCiteDoi/issues/3 (Ideally the event will ask which schema version datacite will use, but for now we can set it in the config) --- cfg/cfg.d/z_datacitedoi.pl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cfg/cfg.d/z_datacitedoi.pl b/cfg/cfg.d/z_datacitedoi.pl index 0776816..bf2af1e 100644 --- a/cfg/cfg.d/z_datacitedoi.pl +++ b/cfg/cfg.d/z_datacitedoi.pl @@ -5,6 +5,9 @@ #which field do use for the doi $c->{datacitedoi}{eprintdoifield} = "id_number"; +#which DataCiteXML schema version to use +$c->{datacitedoi}{schemaversion} = "3.1"; #change this when 4.0 is released + #When should you register/update doi info. $c->{datacitedoi}{eprintstatus} = {inbox=>0,buffer=>1,archive=>1,deletion=>0}; From aceb6403be078cc3b6fc72f892984ae76f4188d8 Mon Sep 17 00:00:00 2001 From: BorysFeldman Date: Wed, 7 Sep 2016 10:53:03 +0100 Subject: [PATCH 19/42] Update z_datacitedoi.pl Updating the schema version to 4.0 --- cfg/cfg.d/z_datacitedoi.pl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cfg/cfg.d/z_datacitedoi.pl b/cfg/cfg.d/z_datacitedoi.pl index bf2af1e..8a24349 100644 --- a/cfg/cfg.d/z_datacitedoi.pl +++ b/cfg/cfg.d/z_datacitedoi.pl @@ -5,8 +5,7 @@ #which field do use for the doi $c->{datacitedoi}{eprintdoifield} = "id_number"; -#which DataCiteXML schema version to use -$c->{datacitedoi}{schemaversion} = "3.1"; #change this when 4.0 is released + #When should you register/update doi info. $c->{datacitedoi}{eprintstatus} = {inbox=>0,buffer=>1,archive=>1,deletion=>0}; @@ -29,8 +28,8 @@ # Namespace and location for datacite XML schema # feel free to update, though no guarantees it'll be accepted if you do -$c->{datacitedoi}{xmlns} = "http://datacite.org/schema/kernel-2.2"; -$c->{datacitedoi}{schemaLocation} = $c->{datacitedoi}{xmlns}." http://schema.datacite.org/meta/kernel-2.2/metadata.xsd"; +$c->{datacitedoi}{xmlns} = "http://datacite.org/schema/kernel-4.0"; +$c->{datacitedoi}{schemaLocation} = $c->{datacitedoi}{xmlns}." http://schema.datacite.org/meta/kernel-4.0/metadata.xsd"; # need to map eprint type (article, dataset etc) to ResourceType # Controled list http://schema.datacite.org/meta/kernel-2.2/doc/DataCite-MetadataKernel_v2.2.pdf From 50233b4b95811d7d9a2b80c2b630c24041a45ede Mon Sep 17 00:00:00 2001 From: Borys Feldman Date: Tue, 13 Sep 2016 14:01:44 +0100 Subject: [PATCH 20/42] updates to the datacite plugin --- cfg/cfg.d/z_datacitedoi.pl | 59 ++++---- .../EPrints/Plugin/Export/DataCiteXML.pm | 126 ++++++++++-------- 2 files changed, 98 insertions(+), 87 deletions(-) diff --git a/cfg/cfg.d/z_datacitedoi.pl b/cfg/cfg.d/z_datacitedoi.pl index 8a24349..753b8ec 100644 --- a/cfg/cfg.d/z_datacitedoi.pl +++ b/cfg/cfg.d/z_datacitedoi.pl @@ -5,8 +5,6 @@ #which field do use for the doi $c->{datacitedoi}{eprintdoifield} = "id_number"; - - #When should you register/update doi info. $c->{datacitedoi}{eprintstatus} = {inbox=>0,buffer=>1,archive=>1,deletion=>0}; @@ -122,51 +120,42 @@ #BF sub method for can call for funder -$c->{funderrr} = sub +$c->{datacite_custom_funder} = sub { -my ( $xml, $entry, $dataobj ) = @_; -my $funders = $dataobj->get_value( "funders" ); - -my $projects = $dataobj->get_value( "projects" ); - if ($dataobj->exists_and_set( "funders" )) { - my $thefunders = $xml->create_element( "funders" ); - - foreach my $funder ( @$funders ) - { - my $fund = $funder->{funders}; - my $grant = $funder->{grant}; - my $others = $dataobj->get_value( "funders_other_funder" ); - - foreach my $other ( @$others ) - { + my ( $xml, $entry, $dataobj ) = @_; - foreach my $project ( @$projects ) - { + if ($dataobj->exists_and_set( "funders" )) { + my $funders = $dataobj->get_value( "funders" ); + my $thefunders = $xml->create_element( "funders" ); + foreach my $funder ( @$funders ) + { + my $fund = $funder->{funders}; + my $grant = $funder->{grant}; + my $others = $dataobj->get_value( "funders_other_funder" ); + if($fund eq "other"){ + foreach my $other ( @$others ) + { - my $proj = $project->{name}; + $thefunders->appendChild( $xml->create_data_element( "funderName", $other) ); + }} else { + $thefunders->appendChild( $xml->create_data_element( "funderName", $fund) ); + } - if ($fund eq "other" ) { +$thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); - $thefunders->appendChild( $xml->create_data_element( "funderName", $other) ); - } else { - $thefunders->appendChild( $xml->create_data_element( "funderName", $fund) ); -} - $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); - } - } -} - $entry->appendChild( $thefunders ); -} -}; + } + $entry->appendChild( $thefunders ); + } + }; #BF sub method for can call for language -$c->{laaanguages} = sub +$c->{datacite_custom_language} = sub { my ( $xml, $entry, $dataobj ) = @_; - + my $lan = $dataobj->get_value( "language" ); if ($dataobj->exists_and_set( "language" )) { foreach my $la ( @$lan ) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index ac392cc..85d0ba9 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -81,23 +81,34 @@ sub output_dataobj my $family = $name->{name}->{family}; my $given = $name->{name}->{given}; my $orcid = $name->{orcid}; - $author->appendChild( $xml->create_data_element( - "creatorName", - $name_str ) ); - $author->appendChild( $xml->create_data_element("givenName",$given ) ); - $author->appendChild( $xml->create_data_element("familyName", $family ) ); - if ($dataobj->exists_and_set( "creators_orcid" )) { - print STDERR Dumper $orcid; - $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - -} - - $creators->appendChild( $author ); - } - - $entry->appendChild( $creators ); - } + if ($family eq '' && $given eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("creatorName", $name_str ) ); + } + if ($given eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("givenName",$given ) ); + } + if ($family eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("familyName", $family ) ); + } + if ($dataobj->exists_and_set( "creators_orcid" )) { + if ($orcid eq '') { + $creators->appendChild( $author ); + } + else { + $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); + } + } + $creators->appendChild( $author ); + } + $entry->appendChild( $creators ); + } if ($dataobj->exists_and_set( "title" )) { @@ -146,30 +157,38 @@ if ($dataobj->exists_and_set( "date" )) { my $family = $name->{name}->{family}; my $given = $name->{name}->{given}; - $author->appendChild( $xml->create_data_element("contributorName", $name_str ) ); - $author->appendChild( $xml->create_data_element("givenName",$given ) ); - $author->appendChild( $xml->create_data_element("familyName", $family ) ); - - - + if ($family eq '' && $given eq ''){ + $contributors->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("contributorName", $name_str ) ); + } + if ($given eq '') { + $contributors->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("givenName",$given ) ); + } + if ($family eq ''){ + $contributors->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("familyName", $family ) ); + } if ($dataobj->exists_and_set( "contributors_orcid" )) { - my $orcid = $name->{orcid}; - $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - - } - if ($dataobj->exists_and_set( "creator_affiliation" )) { - my $affiliation = $dataobj->get_value("creator_affiliation"); - $author->appendChild( $xml->create_data_element("affillation", $affiliation) ); - } - - - - $contributors->appendChild( $author ); - } - - $entry->appendChild( $contributors ); - } + my $orcid = $name->{orcid}; + if ($orcid eq '') { + $contributors->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); + } + } + if ($dataobj->exists_and_set( "contributors_affiliation" )) { + my $affiliation = $dataobj->get_value("contributors_affiliation"); + $author->appendChild( $xml->create_data_element("affillation", $affiliation) ); + } + $contributors->appendChild( $author ); + } + $entry->appendChild( $contributors ); + } @@ -183,9 +202,9 @@ if ($dataobj->exists_and_set( "date" )) { #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called funderrr - if( $repo->can_call( "funderrr" ) ) + if( $repo->can_call( "datacite_custom_funder" ) ) { - if( defined( $repo->call( "funderrr", $xml, $entry, $dataobj ) ) ) + if( defined( $repo->call( "datacite_custom_funder", $xml, $entry, $dataobj ) ) ) {} else { @@ -214,15 +233,18 @@ if ($dataobj->exists_and_set( "date" )) { if ($dataobj->exists_and_set( "repo_link" )) { - my $theurls = $dataobj->get_value( "repo_link" ); + my $theurls = $dataobj->get_value( "repo_link" ); + my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); foreach my $theurl ( @$theurls ) - { - my $linkk = $theurl->{link}; - my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); - $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); - $entry->appendChild( $relatedIdentifiers ); - } - } + { + my $linkk = $theurl->{link}; + if (!$linkk eq ''){ + $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); + } + $entry->appendChild( $relatedIdentifiers ); + } + } + if ($dataobj->exists_and_set( "abstract" )) { my $abstract = $dataobj->get_value( "abstract" ); @@ -247,9 +269,9 @@ if ($dataobj->exists_and_set( "date" )) { } #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages - if( $repo->can_call( "laaanguages" ) ) + if( $repo->can_call( "datacite_custom_language" ) ) { - if( defined( $repo->call( "laaanguages", $xml, $entry, $dataobj ) ) ) + if( defined( $repo->call( "datacite_custom_language", $xml, $entry, $dataobj ) ) ) {} else { @@ -274,7 +296,7 @@ if ($dataobj->exists_and_set( "date" )) { my $author = $xml->create_element( "geoLocation" ); my $bbox = $dataobj->get_value( "bounding_box" ); - print STDERR Dumper $bbox; + my $west = $dataobj->get_value( "bounding_box_west_edge" ); my $east = $dataobj->get_value( "bounding_box_east_edge" ); @@ -293,7 +315,7 @@ if ($dataobj->exists_and_set( "date" )) { $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $east) ); $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $south) ); $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $north) ); - print STDERR Dumper $north; + From 5178819be1310fff2c9712420d78ddb1d67cb208 Mon Sep 17 00:00:00 2001 From: Andrew Hercules Date: Thu, 3 Nov 2016 12:12:43 +0000 Subject: [PATCH 21/42] Fixing bug when tag is created --- .../EPrints/Plugin/Export/DataCiteXML.pm | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 85d0ba9..61bc441 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -126,18 +126,27 @@ if ($dataobj->exists_and_set( "date" )) { } - - + # AH 03/11/2016: mapping the data in the EPrints keywords field to a tag. + # If the keywords field is a multiple - and therefore, an array ref - then + # iterate through array and make each array element its own element. + # Otherwise, if the keywords field is a single block of text, take the string + # and make it a single element if ($dataobj->exists_and_set( "keywords" )) { - my $sub = $dataobj->get_value( "keywords" ); my $subjects = $xml->create_element( "subjects" ); - - $subjects->appendChild( $xml->create_data_element( "subject", $sub, "xml:lang"=>"en-us") ); - $entry->appendChild( $subjects ); + my $keywords = $dataobj->get_value("keywords"); + if(ref($keywords) eq 'ARRAY') { + foreach my $keyword ( @$keywords ) { + my $subject = $xml->create_element( "subject" ); + $subject->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>"en-us") ); + $subjects->appendChild( $subject ); + } + $entry->appendChild( $subjects ); + } else { + $subjects->appendChild( $xml->create_data_element( "subject", $keywords, "xml:lang"=>"en-us") ); + $entry->appendChild( $subjects ); + } } - - if( $dataobj->exists_and_set( "contributors" ) ) { my $contributors = $xml->create_element( "contributors" ); From cfb51f5a1ff2f8b105f578d5bd234f0f395e4125 Mon Sep 17 00:00:00 2001 From: Andrew Hercules Date: Thu, 3 Nov 2016 13:58:51 +0000 Subject: [PATCH 22/42] Fixing minor typo --- lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 61bc441..e759aba 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -134,7 +134,7 @@ if ($dataobj->exists_and_set( "date" )) { if ($dataobj->exists_and_set( "keywords" )) { my $subjects = $xml->create_element( "subjects" ); my $keywords = $dataobj->get_value("keywords"); - if(ref($keywords) eq 'ARRAY') { + if(ref($keywords) eq "ARRAY") { foreach my $keyword ( @$keywords ) { my $subject = $xml->create_element( "subject" ); $subject->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>"en-us") ); From a3354c47df0a514e0dd37fc166264f6681796bc5 Mon Sep 17 00:00:00 2001 From: Andrew Hercules Date: Fri, 4 Nov 2016 12:04:33 +0000 Subject: [PATCH 23/42] Adding resourceType and resourceTypeGeneral attributes to DataCiteXML export --- lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index e759aba..0623819 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -59,7 +59,19 @@ sub output_dataobj return $thisdoi if($thisdoi !~ /^$prefix/); } - $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); + $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); + + # AH 04/11/2016: adding element as it is required for the + # DataCite 4.0 XML Metadata Schema. For publications repositories, it uses the + # eprint_type value. For data repositories, it uses the eprint_data_type value. + my $pub_resourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("type") ); + if(defined $pub_resourceType){ + $entry->appendChild( $xml->create_data_element( "resourceType", $pub_resourceType->{'v'}, resourceTypeGeneral=>$pub_resourceType->{'a'}) ); + } + my $data_resourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("data_type") ); + if(defined $data_resourceType){ + $entry->appendChild( $xml->create_data_element( "resourceType", $data_resourceType->{'v'}, resourceTypeGeneral=>$data_resourceType->{'a'}) ); + } #RM otherwise we'll leave this alone for now From 4939f220289acd0ccdeaaa380d66a7c97fc5b66b Mon Sep 17 00:00:00 2001 From: Andrew Hercules Date: Mon, 7 Nov 2016 15:09:41 +0000 Subject: [PATCH 24/42] Updating rendering of resourceType and subjects elements --- lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 0623819..802879d 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -64,14 +64,16 @@ sub output_dataobj # AH 04/11/2016: adding element as it is required for the # DataCite 4.0 XML Metadata Schema. For publications repositories, it uses the # eprint_type value. For data repositories, it uses the eprint_data_type value. + my $resourceType_element; my $pub_resourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("type") ); if(defined $pub_resourceType){ - $entry->appendChild( $xml->create_data_element( "resourceType", $pub_resourceType->{'v'}, resourceTypeGeneral=>$pub_resourceType->{'a'}) ); + $resourceType_element = $xml->create_data_element( "resourceType", $pub_resourceType->{'v'}, resourceTypeGeneral=>$pub_resourceType->{'a'}); } - my $data_resourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("data_type") ); - if(defined $data_resourceType){ - $entry->appendChild( $xml->create_data_element( "resourceType", $data_resourceType->{'v'}, resourceTypeGeneral=>$data_resourceType->{'a'}) ); + if( $dataobj->exists_and_set( "data_type" ) ) { + my $data_type = $dataobj->get_value( "data_type" ); + $resourceType_element = $xml->create_data_element( "resourceType", $data_type, resourceTypeGeneral=>$data_type); } + $entry->appendChild( $resourceType_element ); #RM otherwise we'll leave this alone for now @@ -148,9 +150,7 @@ if ($dataobj->exists_and_set( "date" )) { my $keywords = $dataobj->get_value("keywords"); if(ref($keywords) eq "ARRAY") { foreach my $keyword ( @$keywords ) { - my $subject = $xml->create_element( "subject" ); - $subject->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>"en-us") ); - $subjects->appendChild( $subject ); + $subjects->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>"en-us") ); } $entry->appendChild( $subjects ); } else { From 32cc4b0298f26bb998319f25ec4324106fb2b5d1 Mon Sep 17 00:00:00 2001 From: Andrew Hercules Date: Tue, 15 Nov 2016 17:12:32 +0000 Subject: [PATCH 25/42] Fixing minor typos in XML element names --- .../EPrints/Plugin/Export/DataCiteXML.pm | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 802879d..3d5b640 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -266,29 +266,27 @@ if ($dataobj->exists_and_set( "date" )) { } } + if ($dataobj->exists_and_set( "abstract" )) { + + my $abstract = $dataobj->get_value( "abstract" ); + my $description = $xml->create_element( "descriptions" ); - if ($dataobj->exists_and_set( "abstract" )) { - my $abstract = $dataobj->get_value( "abstract" ); - my $discription = $xml->create_element( "descriptions" ); + $description->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); - - - $discription->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); - - - - if ($dataobj->exists_and_set( "collection_method" )) { + if ($dataobj->exists_and_set( "collection_method" )) { my $collection = $dataobj->get_value("collection_method"); - $discription->appendChild( $xml->create_data_element("discrpition", $collection, descriptionType=>"Methods")); + $description->appendChild( $xml->create_data_element("description", $collection, descriptionType=>"Methods")); } - if ($dataobj->exists_and_set( "provenance" )) { + if ($dataobj->exists_and_set( "provenance" )) { my $processing = $dataobj->get_value("provenance"); - $discription->appendChild( $xml->create_data_element("discrpition", $processing, descriptionType=>"Methods")); - } - $entry->appendChild( $discription ); + $description->appendChild( $xml->create_data_element("description", $processing, descriptionType=>"Methods")); } + $entry->appendChild( $description ); + + } + #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages if( $repo->can_call( "datacite_custom_language" ) ) { From cc5493d7a6f84df2f328a73e53c43f2a68076846 Mon Sep 17 00:00:00 2001 From: Andrew Hercules Date: Wed, 16 Nov 2016 16:18:17 +0000 Subject: [PATCH 26/42] Fixing rendering of geoLocations XML elements --- .../EPrints/Plugin/Export/DataCiteXML.pm | 106 +++++++++--------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 3d5b640..0ebe254 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -267,7 +267,7 @@ if ($dataobj->exists_and_set( "date" )) { } if ($dataobj->exists_and_set( "abstract" )) { - + my $abstract = $dataobj->get_value( "abstract" ); my $description = $xml->create_element( "descriptions" ); @@ -301,58 +301,58 @@ if ($dataobj->exists_and_set( "date" )) { } } - - - - - if( $dataobj->exists_and_set( "geographic_cover" ) ) - { - my $geo = $xml->create_element( "geoLocations" ); - - my $names = $dataobj->get_value( "geographic_cover" ); - - - - my $author = $xml->create_element( "geoLocation" ); - my $bbox = $dataobj->get_value( "bounding_box" ); - - - my $west = $dataobj->get_value( "bounding_box_west_edge" ); - my $east = $dataobj->get_value( "bounding_box_east_edge" ); - my $south = $dataobj->get_value( "bounding_box_south_edge" ); - my $north = $dataobj->get_value( "bounding_box_north_edge" ); - - $author->appendChild( $xml->create_data_element("geoLocationPlace", $names ) ); - - my $bobox = $xml->create_element( "geoLocationBox" ); - - - - - - $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $west) ); - $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $east) ); - $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $south) ); - $bobox->appendChild( $xml->create_data_element( "westBoundLongitude", $north) ); - - - - - $author->appendChild( $bobox); - - - $geo->appendChild( $author ); - - - $entry->appendChild( $geo ); -} - - - - - - #TODO Seek, identify and include for registration the optional datacite fields - return ''."\n".$xml->to_string($entry); + # AH 16/11/2016: rendering the geoLocations XML elements + # Note: the initial conditional checks to see if the geographic_cover + # metadata field exists and is set. This was done because geographic_cover + # is part of the z_recollect_metadata_profile.pl file within the Recollect + # plugin and many repositories make it a mandatory field in the workflow. + + if( $dataobj->exists_and_set( "geographic_cover" ) ) { + + #Create XML elements + my $geo_locations = $xml->create_element( "geoLocations" ); + my $geo_location = $xml->create_element( "geoLocation" ); + + # Get value of geographic_cover field and append to $geo_location XML element + my $geographic_cover = $dataobj->get_value( "geographic_cover" ); + $geo_location->appendChild( $xml->create_data_element("geoLocationPlace", $geographic_cover ) ); + + # Get values of bounding box + my $west = $dataobj->get_value( "bounding_box_west_edge" ); + my $east = $dataobj->get_value( "bounding_box_east_edge" ); + my $south = $dataobj->get_value( "bounding_box_south_edge" ); + my $north = $dataobj->get_value( "bounding_box_north_edge" ); + + # Check to see if $north, $south, $east, or $west values are defined + if ($north || $south || $east || $west ) { + # Created $geo_location_box XML element + my $geo_location_box = $xml->create_element( "geoLocationBox" ); + # If $west is defined, created XML element with the appropriate value + if ($west) { + $geo_location_box->appendChild( $xml->create_data_element( "westBoundLongitude", $west) ); + } + # If $east is defined, created XML element with the appropriate value + if ($east) { + $geo_location_box->appendChild( $xml->create_data_element( "eastBoundLongitude", $east) ); + } + # If $south is defined, created XML element with the appropriate value + if ($south) { + $geo_location_box->appendChild( $xml->create_data_element( "southBoundLongitude", $south) ); + } + # If $north is defined, created XML element with the appropriate value + if ($north) { + $geo_location_box->appendChild( $xml->create_data_element( "northBoundLongitude", $north) ); + } + # Append child $geo_location_box XML element to parent $geo_location XML element + $geo_location->appendChild( $geo_location_box ); + } + # Append child $geo_location XML element to parent $geo_locations XML element + $geo_locations->appendChild( $geo_location ); + # Append $geo_locations XML element to XML document + $entry->appendChild( $geo_locations ); + } + + return ''."\n".$xml->to_string($entry); } From 402886d09c200a7cd006afdb6d3f3acc61e75a53 Mon Sep 17 00:00:00 2001 From: Andrew Hercules Date: Fri, 16 Dec 2016 12:48:04 +0000 Subject: [PATCH 27/42] Commenting out creation of contributors element due to requirements of DataCite 4.0 metadata schema --- .../EPrints/Plugin/Export/DataCiteXML.pm | 123 +++++++++--------- 1 file changed, 61 insertions(+), 62 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 0ebe254..c191cad 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -159,68 +159,67 @@ if ($dataobj->exists_and_set( "date" )) { } } - if( $dataobj->exists_and_set( "contributors" ) ) - { - my $contributors = $xml->create_element( "contributors" ); - - my $names = $dataobj->get_value( "contributors" ); - ; - - foreach my $name ( @$names ) - { - my $author = $xml->create_element( "contributor" ); - - my $name_str = EPrints::Utils::make_name_string( $name->{name}); - - my $orcid = $name->{orcid}; - - my $typee = $name->{type}; - my $family = $name->{name}->{family}; - my $given = $name->{name}->{given}; - - if ($family eq '' && $given eq ''){ - $contributors->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("contributorName", $name_str ) ); - } - if ($given eq '') { - $contributors->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("givenName",$given ) ); - } - if ($family eq ''){ - $contributors->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("familyName", $family ) ); - } - - if ($dataobj->exists_and_set( "contributors_orcid" )) { - my $orcid = $name->{orcid}; - if ($orcid eq '') { - $contributors->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - } - } - if ($dataobj->exists_and_set( "contributors_affiliation" )) { - my $affiliation = $dataobj->get_value("contributors_affiliation"); - $author->appendChild( $xml->create_data_element("affillation", $affiliation) ); - } - $contributors->appendChild( $author ); - } - $entry->appendChild( $contributors ); - } - - - - - - - - - - - + # AH 16/12/2016: commenting out the creation of the element. This is because the + # DataCite 4.0 Schema requires a contributorType attribute, which needs to be mapped. According to + # https://schema.datacite.org/meta/kernel-4.0/doc/DataCite-MetadataKernel_v4.0.pdf (page 16), there + # is a controlled list of contributorType options and it would be advisable to alter the + # Recollect workflow to make use of this controlled list (e.g. a namedset of approved values) + # and then map the values from this field to the XML found below. + # Note: if you do not supply a contributorType, the coin DOI process will fail + # because the contributorType attribute is mandatory. As such, and because the parent + # element is not mandatory, it will be commented out and not sent to DataCite pending further work from ULCC. + + # if( $dataobj->exists_and_set( "contributors" ) ) + # { + # + # my $contributors = $xml->create_element( "contributors" ); + # + # my $names = $dataobj->get_value( "contributors" ); + # + # foreach my $name ( @$names ) + # { + # my $author = $xml->create_element( "contributor" ); + # + # my $name_str = EPrints::Utils::make_name_string( $name->{name}); + # + # my $orcid = $name->{orcid}; + # + # my $typee = $name->{type}; + # my $family = $name->{name}->{family}; + # my $given = $name->{name}->{given}; + # + # if ($family eq '' && $given eq ''){ + # $contributors->appendChild( $author ); + # } else { + # $author->appendChild( $xml->create_data_element("contributorName", $name_str ) ); + # } + # if ($given eq '') { + # $contributors->appendChild( $author ); + # } else { + # $author->appendChild( $xml->create_data_element("givenName",$given ) ); + # } + # if ($family eq ''){ + # $contributors->appendChild( $author ); + # } else { + # $author->appendChild( $xml->create_data_element("familyName", $family ) ); + # } + # + # if ($dataobj->exists_and_set( "contributors_orcid" )) { + # my $orcid = $name->{orcid}; + # if ($orcid eq '') { + # $contributors->appendChild( $author ); + # } else { + # $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); + # } + # } + # if ($dataobj->exists_and_set( "contributors_affiliation" )) { + # my $affiliation = $dataobj->get_value("contributors_affiliation"); + # $author->appendChild( $xml->create_data_element("affillation", $affiliation) ); + # } + # $contributors->appendChild( $author ); + # } + # $entry->appendChild( $contributors ); + # } #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called funderrr if( $repo->can_call( "datacite_custom_funder" ) ) From 203e85a5718cc7f11f7cccaa7371efc3e89201ff Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Tue, 29 Nov 2016 11:17:38 +0000 Subject: [PATCH 28/42] Fixed hash ref bug, this closes #6 --- cfg/cfg.d/z_datacitedoi.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cfg/cfg.d/z_datacitedoi.pl b/cfg/cfg.d/z_datacitedoi.pl index 753b8ec..a648ad9 100644 --- a/cfg/cfg.d/z_datacitedoi.pl +++ b/cfg/cfg.d/z_datacitedoi.pl @@ -92,12 +92,12 @@ $c->add_dataset_trigger( "eprint", EP_TRIGGER_STATUS_CHANGE , sub { my ( %params ) = @_; - my $repository = %params->{repository}; + my $repository = $params{repository}; return undef if (!defined $repository); - if (defined %params->{dataobj}) { - my $dataobj = %params->{dataobj}; + if (defined $params{dataobj}) { + my $dataobj = $params{dataobj}; my $eprint_id = $dataobj->id; $repository->dataset( "event_queue" )->create_dataobj({ pluginid => "Event::DataCiteEvent", From 4fed4d000c6ffff3641fa1952cdc6c6c321a2b20 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Mon, 6 Mar 2017 20:21:53 +0000 Subject: [PATCH 29/42] bug fix for creators and orcid, though more to be done, and tidied loopy tabs --- .../EPrints/Plugin/Export/DataCiteXML.pm | 327 ++++++++---------- 1 file changed, 140 insertions(+), 187 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index c191cad..ab03d6a 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -36,16 +36,13 @@ sub output_dataobj my $xml = $repo->xml; #reference the datacite schema from config - our $entry = $xml->create_element( "resource", + our $entry = $xml->create_element( "resource", xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); - #RM We pass in the DOI from Event::DataCite... or from --args on the cmd line - # AH my $thisdoi = $opts{doi}; always returns undefined, even when DOI exists - # Ideally coining should NOT happen in this script but opts{doi} should have it - # but is always blank - my $thisdoi = $dataobj->get_value("id_number"); + #Existing DOI? + my $thisdoi = $dataobj->get_value($repo->get_conf("datacitedoi","eprintdoifield")); #RM coin a DOI if either # - not come via event or # - no doi arg passed in via cmd_line @@ -75,70 +72,45 @@ sub output_dataobj } $entry->appendChild( $resourceType_element ); - #RM otherwise we'll leave this alone for now + if( $dataobj->exists_and_set( "creators" ) ){ + my $creators = $xml->create_element( "creators" ); + my $names = $dataobj->get_value( "creators" ); + foreach my $name ( @$names ){ + my $author = $xml->create_element( "creator" ); + my $name_str = EPrints::Utils::make_name_string( $name->{name} ); + my $family = $name->{name}->{family}; + my $given = $name->{name}->{given}; + my $orcid = $name->{orcid}; #world of assumptions here! - if( $dataobj->exists_and_set( "creators" ) ) - { - my $creators = $xml->create_element( "creators" ); - my $names = $dataobj->get_value( "creators" ); - ; - - foreach my $name ( @$names ) - { - my $author = $xml->create_element( "creator" ); - - my $name_str = EPrints::Utils::make_name_string( $name->{name}); - - - - my $family = $name->{name}->{family}; - my $given = $name->{name}->{given}; - my $orcid = $name->{orcid}; - - if ($family eq '' && $given eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("creatorName", $name_str ) ); - } - if ($given eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("givenName",$given ) ); - } - if ($family eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("familyName", $family ) ); - } - if ($dataobj->exists_and_set( "creators_orcid" )) { - if ($orcid eq '') { + if (defined $name_str && $name_str ne ''){ + $author->appendChild( $xml->create_data_element("creatorName", $name_str ) ); + } + if (defined $given && $given ne ''){ + $author->appendChild( $xml->create_data_element("givenName",$given ) ); + } + if (defined $family && $family ne ''){ + $author->appendChild( $xml->create_data_element("familyName", $family ) ); + } + if(defined $orcid && $orcid ne '') { + $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); + } $creators->appendChild( $author ); - } - else { - $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - } } - $creators->appendChild( $author ); - } - $entry->appendChild( $creators ); - } - + $entry->appendChild( $creators ); + } if ($dataobj->exists_and_set( "title" )) { - my $titles = $xml->create_element( "titles" ); - $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us" ) ); - - $entry->appendChild( $titles ); - } - -$entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); - -if ($dataobj->exists_and_set( "date" )) { - $dataobj->get_value( "date" ) =~ /^([0-9]{4})/; - $entry->appendChild( $xml->create_data_element( "publicationYear", $1 ) ) if $1; - -} + my $titles = $xml->create_element( "titles" ); + $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us" ) ); + $entry->appendChild( $titles ); + } + $entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); + + if ($dataobj->exists_and_set( "date" )) { + $dataobj->get_value( "date" ) =~ /^([0-9]{4})/; + $entry->appendChild( $xml->create_data_element( "publicationYear", $1 ) ) if $1; + } # AH 03/11/2016: mapping the data in the EPrints keywords field to a tag. # If the keywords field is a multiple - and therefore, an array ref - then @@ -146,17 +118,17 @@ if ($dataobj->exists_and_set( "date" )) { # Otherwise, if the keywords field is a single block of text, take the string # and make it a single element if ($dataobj->exists_and_set( "keywords" )) { - my $subjects = $xml->create_element( "subjects" ); - my $keywords = $dataobj->get_value("keywords"); - if(ref($keywords) eq "ARRAY") { - foreach my $keyword ( @$keywords ) { - $subjects->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>"en-us") ); + my $subjects = $xml->create_element( "subjects" ); + my $keywords = $dataobj->get_value("keywords"); + if(ref($keywords) eq "ARRAY") { + foreach my $keyword ( @$keywords ) { + $subjects->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>"en-us") ); + } + $entry->appendChild( $subjects ); + } else { + $subjects->appendChild( $xml->create_data_element( "subject", $keywords, "xml:lang"=>"en-us") ); + $entry->appendChild( $subjects ); } - $entry->appendChild( $subjects ); - } else { - $subjects->appendChild( $xml->create_data_element( "subject", $keywords, "xml:lang"=>"en-us") ); - $entry->appendChild( $subjects ); - } } # AH 16/12/2016: commenting out the creation of the element. This is because the @@ -221,138 +193,119 @@ if ($dataobj->exists_and_set( "date" )) { # $entry->appendChild( $contributors ); # } - #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called funderrr - if( $repo->can_call( "datacite_custom_funder" ) ) - { - if( defined( $repo->call( "datacite_custom_funder", $xml, $entry, $dataobj ) ) ) - {} - else { - - my $funders = $dataobj->get_value( "funders" ); - my $grant = $dataobj->get_value( "grant" ); - my $projects = $dataobj->get_value( "projects" ); - if ($dataobj->exists_and_set( "funders" )) { - my $thefunders = $xml->create_element( "funders" ); - foreach my $funder ( @$funders ) - { - - - foreach my $project ( @$projects ) - { - $thefunders->appendChild( $xml->create_data_element( "funderName", $funder) ); - $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); - - } - } - $entry->appendChild( $thefunders ); - } - } + #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called funderrr + if( $repo->can_call( "datacite_custom_funder" ) ){ + unless( defined( $repo->call( "datacite_custom_funder", $xml, $entry, $dataobj ) ) ){ + + my $funders = $dataobj->get_value( "funders" ); + my $grant = $dataobj->get_value( "grant" ); + my $projects = $dataobj->get_value( "projects" ); + if ($dataobj->exists_and_set( "funders" )) { + my $thefunders = $xml->create_element( "funders" ); + foreach my $funder ( @$funders ){ + foreach my $project ( @$projects ){ + $thefunders->appendChild( $xml->create_data_element( "funderName", $funder) ); + $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); + } + } + $entry->appendChild( $thefunders ); + } } + } - - - - if ($dataobj->exists_and_set( "repo_link" )) { - my $theurls = $dataobj->get_value( "repo_link" ); - my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); - foreach my $theurl ( @$theurls ) - { + if ($dataobj->exists_and_set( "repo_link" )) { + my $theurls = $dataobj->get_value( "repo_link" ); + my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); + foreach my $theurl ( @$theurls ){ my $linkk = $theurl->{link}; - if (!$linkk eq ''){ + if (!$linkk eq ''){ $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); - } - $entry->appendChild( $relatedIdentifiers ); - } + } + $entry->appendChild( $relatedIdentifiers ); } + } - if ($dataobj->exists_and_set( "abstract" )) { + if ($dataobj->exists_and_set( "abstract" )) { - my $abstract = $dataobj->get_value( "abstract" ); - my $description = $xml->create_element( "descriptions" ); + my $abstract = $dataobj->get_value( "abstract" ); + my $description = $xml->create_element( "descriptions" ); - $description->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); + $description->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); - if ($dataobj->exists_and_set( "collection_method" )) { + if ($dataobj->exists_and_set( "collection_method" )) { my $collection = $dataobj->get_value("collection_method"); $description->appendChild( $xml->create_data_element("description", $collection, descriptionType=>"Methods")); - } + } - if ($dataobj->exists_and_set( "provenance" )) { + if ($dataobj->exists_and_set( "provenance" )) { my $processing = $dataobj->get_value("provenance"); $description->appendChild( $xml->create_data_element("description", $processing, descriptionType=>"Methods")); - } - - $entry->appendChild( $description ); + } + $entry->appendChild( $description ); + } + #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages + if( $repo->can_call( "datacite_custom_language" ) ){ + unless( defined( $repo->call( "datacite_custom_language", $xml, $entry, $dataobj ) ) ){ + if ($dataobj->exists_and_set( "language" )) { + my $lan = $dataobj->get_value( "language" ); + $entry->appendChild( $xml->create_data_element( "language", $lan) ); + } } + } - #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages - if( $repo->can_call( "datacite_custom_language" ) ) - { - if( defined( $repo->call( "datacite_custom_language", $xml, $entry, $dataobj ) ) ) - {} - else { - - if ($dataobj->exists_and_set( "language" )) { - my $lan = $dataobj->get_value( "language" ); - $entry->appendChild( $xml->create_data_element( "language", $lan) ); - } - } - } - - # AH 16/11/2016: rendering the geoLocations XML elements - # Note: the initial conditional checks to see if the geographic_cover - # metadata field exists and is set. This was done because geographic_cover - # is part of the z_recollect_metadata_profile.pl file within the Recollect - # plugin and many repositories make it a mandatory field in the workflow. - - if( $dataobj->exists_and_set( "geographic_cover" ) ) { - - #Create XML elements - my $geo_locations = $xml->create_element( "geoLocations" ); - my $geo_location = $xml->create_element( "geoLocation" ); - - # Get value of geographic_cover field and append to $geo_location XML element - my $geographic_cover = $dataobj->get_value( "geographic_cover" ); - $geo_location->appendChild( $xml->create_data_element("geoLocationPlace", $geographic_cover ) ); - - # Get values of bounding box - my $west = $dataobj->get_value( "bounding_box_west_edge" ); - my $east = $dataobj->get_value( "bounding_box_east_edge" ); - my $south = $dataobj->get_value( "bounding_box_south_edge" ); - my $north = $dataobj->get_value( "bounding_box_north_edge" ); - - # Check to see if $north, $south, $east, or $west values are defined - if ($north || $south || $east || $west ) { - # Created $geo_location_box XML element - my $geo_location_box = $xml->create_element( "geoLocationBox" ); - # If $west is defined, created XML element with the appropriate value - if ($west) { - $geo_location_box->appendChild( $xml->create_data_element( "westBoundLongitude", $west) ); - } - # If $east is defined, created XML element with the appropriate value - if ($east) { - $geo_location_box->appendChild( $xml->create_data_element( "eastBoundLongitude", $east) ); - } - # If $south is defined, created XML element with the appropriate value - if ($south) { - $geo_location_box->appendChild( $xml->create_data_element( "southBoundLongitude", $south) ); - } - # If $north is defined, created XML element with the appropriate value - if ($north) { - $geo_location_box->appendChild( $xml->create_data_element( "northBoundLongitude", $north) ); - } - # Append child $geo_location_box XML element to parent $geo_location XML element - $geo_location->appendChild( $geo_location_box ); - } - # Append child $geo_location XML element to parent $geo_locations XML element - $geo_locations->appendChild( $geo_location ); - # Append $geo_locations XML element to XML document - $entry->appendChild( $geo_locations ); + # AH 16/11/2016: rendering the geoLocations XML elements + # Note: the initial conditional checks to see if the geographic_cover + # metadata field exists and is set. This was done because geographic_cover + # is part of the z_recollect_metadata_profile.pl file within the Recollect + # plugin and many repositories make it a mandatory field in the workflow. + + if( $dataobj->exists_and_set( "geographic_cover" ) ) { + + #Create XML elements + my $geo_locations = $xml->create_element( "geoLocations" ); + my $geo_location = $xml->create_element( "geoLocation" ); + + # Get value of geographic_cover field and append to $geo_location XML element + my $geographic_cover = $dataobj->get_value( "geographic_cover" ); + $geo_location->appendChild( $xml->create_data_element("geoLocationPlace", $geographic_cover ) ); + + # Get values of bounding box + my $west = $dataobj->get_value( "bounding_box_west_edge" ); + my $east = $dataobj->get_value( "bounding_box_east_edge" ); + my $south = $dataobj->get_value( "bounding_box_south_edge" ); + my $north = $dataobj->get_value( "bounding_box_north_edge" ); + + # Check to see if $north, $south, $east, or $west values are defined + if ($north || $south || $east || $west ) { + # Created $geo_location_box XML element + my $geo_location_box = $xml->create_element( "geoLocationBox" ); + # If $west is defined, created XML element with the appropriate value + if ($west) { + $geo_location_box->appendChild( $xml->create_data_element( "westBoundLongitude", $west) ); } + # If $east is defined, created XML element with the appropriate value + if ($east) { + $geo_location_box->appendChild( $xml->create_data_element( "eastBoundLongitude", $east) ); + } + # If $south is defined, created XML element with the appropriate value + if ($south) { + $geo_location_box->appendChild( $xml->create_data_element( "southBoundLongitude", $south) ); + } + # If $north is defined, created XML element with the appropriate value + if ($north) { + $geo_location_box->appendChild( $xml->create_data_element( "northBoundLongitude", $north) ); + } + # Append child $geo_location_box XML element to parent $geo_location XML element + $geo_location->appendChild( $geo_location_box ); + } + # Append child $geo_location XML element to parent $geo_locations XML element + $geo_locations->appendChild( $geo_location ); + # Append $geo_locations XML element to XML document + $entry->appendChild( $geo_locations ); + } - return ''."\n".$xml->to_string($entry); + return ''."\n".$xml->to_string($entry); } - 1; From a40fe61bcf5f049a9cc5bc4366ce3734c24d1a5a Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Mon, 6 Mar 2017 21:30:05 +0000 Subject: [PATCH 30/42] Added configurable var for lang tags, use EPrints::XML::to_string, Closes #9 --- cfg/cfg.d/z_datacitedoi.pl | 3 +++ lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/cfg/cfg.d/z_datacitedoi.pl b/cfg/cfg.d/z_datacitedoi.pl index a648ad9..08aaa27 100644 --- a/cfg/cfg.d/z_datacitedoi.pl +++ b/cfg/cfg.d/z_datacitedoi.pl @@ -5,6 +5,9 @@ #which field do use for the doi $c->{datacitedoi}{eprintdoifield} = "id_number"; +#for xml:lang attributes in XML +$c->{datacitedoi}{defaultlangtag} = "en-GB"; + #When should you register/update doi info. $c->{datacitedoi}{eprintstatus} = {inbox=>0,buffer=>1,archive=>1,deletion=>0}; diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index ab03d6a..5159d7c 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -57,7 +57,7 @@ sub output_dataobj } $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); - + my $lang = $repo->get_conf("datacitedoi","defaultlangtag"); # AH 04/11/2016: adding element as it is required for the # DataCite 4.0 XML Metadata Schema. For publications repositories, it uses the # eprint_type value. For data repositories, it uses the eprint_data_type value. @@ -102,7 +102,7 @@ sub output_dataobj if ($dataobj->exists_and_set( "title" )) { my $titles = $xml->create_element( "titles" ); - $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us" ) ); + $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>$lang ) ); $entry->appendChild( $titles ); } $entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); @@ -122,11 +122,11 @@ sub output_dataobj my $keywords = $dataobj->get_value("keywords"); if(ref($keywords) eq "ARRAY") { foreach my $keyword ( @$keywords ) { - $subjects->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>"en-us") ); + $subjects->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>$lang) ); } $entry->appendChild( $subjects ); } else { - $subjects->appendChild( $xml->create_data_element( "subject", $keywords, "xml:lang"=>"en-us") ); + $subjects->appendChild( $xml->create_data_element( "subject", $keywords, "xml:lang"=>$lang) ); $entry->appendChild( $subjects ); } } @@ -230,7 +230,7 @@ sub output_dataobj my $abstract = $dataobj->get_value( "abstract" ); my $description = $xml->create_element( "descriptions" ); - $description->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); + $description->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>$lang, descriptionType=>"Abstract" ) ); if ($dataobj->exists_and_set( "collection_method" )) { my $collection = $dataobj->get_value("collection_method"); @@ -305,7 +305,7 @@ sub output_dataobj $entry->appendChild( $geo_locations ); } - return ''."\n".$xml->to_string($entry); + return ''."\n".EPrints::XML::to_string($entry); } 1; From ec11dcaacf620cfe69ef94749a20bd239f5663c8 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Mon, 6 Mar 2017 22:11:42 +0000 Subject: [PATCH 31/42] be more explicit about utf8 --- lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm b/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm index e09efb9..1b988d9 100644 --- a/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm +++ b/lib/plugins/EPrints/Plugin/Event/DataCiteEvent.pm @@ -57,7 +57,7 @@ sub datacite_doi $repo_url.= $dataobj->internal_uri; } my $doi_reg = "doi=$thisdoi\nurl=".$repo_url; - ($response_content, $response_code)= datacite_request("POST", $url."doi", $user_name, $user_pw, $doi_reg, "text/plain;charset=UTF-8"); + ($response_content, $response_code)= datacite_request("POST", $url."doi", $user_name, $user_pw, $doi_reg, "text/plain; charset=utf8"); if($response_code !~ /20(1|0)/){ $repository->log("Registration response from datacite api: $response_code: $response_content"); $repository->log("BTW the \$doi_reg was:\n$doi_reg"); @@ -81,9 +81,10 @@ sub datacite_request { 'Accept' => 'application/xml', 'Content-Type' => $content_type ); + my $req = HTTP::Request->new( $method => $url, - $headers, $content + $headers, Encode::encode_utf8( $content ) ); $req->authorization_basic($user_name, $user_pw); From d1741dc0cf60005e9754f4f42b2dd3711338e799 Mon Sep 17 00:00:00 2001 From: Borys Feldman Date: Wed, 26 Apr 2017 11:50:16 +0100 Subject: [PATCH 32/42] updates to the dataciteXML --- .../EPrints/Plugin/Export/DataCiteXML.pm | 385 ++++++++++-------- 1 file changed, 219 insertions(+), 166 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 5159d7c..142e245 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -1,5 +1,4 @@ =head1 NAME - EPrints::Plugin::Export::DataCiteXML =cut @@ -23,7 +22,7 @@ sub new $self->{visible} = 'all'; $self->{suffix} = '.xml'; $self->{mimetype} = 'application/xml; charset=utf-8'; - $self->{arguments}->{doi} = undef; + $self->{arguments}->{doi} = undef; return $self; } @@ -32,32 +31,36 @@ sub output_dataobj { my ($self, $dataobj, %opts) = @_; - my $repo = $self->{repository}; - my $xml = $repo->xml; - - #reference the datacite schema from config - our $entry = $xml->create_element( "resource", - xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), - "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", - "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); - - #Existing DOI? - my $thisdoi = $dataobj->get_value($repo->get_conf("datacitedoi","eprintdoifield")); - #RM coin a DOI if either - # - not come via event or - # - no doi arg passed in via cmd_line - # ie when someone exports DataCiteXML from the Action tab - if(!defined $thisdoi){ - #nick the coining sub from event plugin - my $event = $repo->plugin("Event::DataCiteEvent"); - $thisdoi = $event->coin_doi($repo, $dataobj); - #coin_doi may return an event error code if no prefix present assume this is the case - my $prefix = $repo->get_conf( "datacitedoi", "prefix"); - return $thisdoi if($thisdoi !~ /^$prefix/); - } - - $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); - my $lang = $repo->get_conf("datacitedoi","defaultlangtag"); + my $repo = $self->{repository}; + my $xml = $repo->xml; + + #reference the datacite schema from config + our $entry = $xml->create_element( "resource", + xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", + "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); + + #RM We pass in the DOI from Event::DataCite... or from --args on the cmd line + +# AH my $thisdoi = $opts{doi}; always returns undefined, even when DOI exists + # Ideally coining should NOT happen in this script but opts{doi} should have it + # but is always blank + my $thisdoi = $dataobj->get_value("id_number"); + #RM coin a DOI if either + # - not come via event or + # - no doi arg passed in via cmd_line + # ie when someone exports DataCiteXML from the Action tab + if(!defined $thisdoi){ + #nick the coining sub from event plugin + my $event = $repo->plugin("Event::DataCiteEvent"); + $thisdoi = $event->coin_doi($repo, $dataobj); + #coin_doi may return an event error code if no prefix present assume this is the case + my $prefix = $repo->get_conf( "datacitedoi", "prefix"); + return $thisdoi if($thisdoi !~ /^$prefix/); + } + + $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); + # AH 04/11/2016: adding element as it is required for the # DataCite 4.0 XML Metadata Schema. For publications repositories, it uses the # eprint_type value. For data repositories, it uses the eprint_data_type value. @@ -72,45 +75,82 @@ sub output_dataobj } $entry->appendChild( $resourceType_element ); - if( $dataobj->exists_and_set( "creators" ) ){ - my $creators = $xml->create_element( "creators" ); - my $names = $dataobj->get_value( "creators" ); - foreach my $name ( @$names ){ - my $author = $xml->create_element( "creator" ); - my $name_str = EPrints::Utils::make_name_string( $name->{name} ); + #RM otherwise we'll leave this alone for now - my $family = $name->{name}->{family}; - my $given = $name->{name}->{given}; - my $orcid = $name->{orcid}; #world of assumptions here! - if (defined $name_str && $name_str ne ''){ - $author->appendChild( $xml->create_data_element("creatorName", $name_str ) ); - } - if (defined $given && $given ne ''){ - $author->appendChild( $xml->create_data_element("givenName",$given ) ); - } - if (defined $family && $family ne ''){ - $author->appendChild( $xml->create_data_element("familyName", $family ) ); - } - if(defined $orcid && $orcid ne '') { - $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - } + my $license = undef; + + + if( $repo->can_call( "datacite_license" ) ) + { + $license = $repo->call( "datacite_license", $xml, $entry, $dataobj, $repo ); + + } + + + +if( $dataobj->exists_and_set( "creators" ) ) + { + my $creators = $xml->create_element( "creators" ); + my $names = $dataobj->get_value( "creators" ); + ; + + foreach my $name ( @$names ) + { + my $author = $xml->create_element( "creator" ); + + my $name_str = EPrints::Utils::make_name_string( $name->{name}); + + + + my $family = $name->{name}->{family}; + my $given = $name->{name}->{given}; + my $orcid = $name->{orcid}; + + if ($family eq '' && $given eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("creatorName", $name_str ) ); + } + if ($given eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("givenName",$given ) ); + } + if ($family eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("familyName", $family ) ); + } + if ($dataobj->exists_and_set( "creators_orcid" )) { + +if ($orcid eq '') { $creators->appendChild( $author ); + } + else { + $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); + } + } + $creators->appendChild( $author ); + } + $entry->appendChild( $creators ); } - $entry->appendChild( $creators ); - } + if ($dataobj->exists_and_set( "title" )) { - my $titles = $xml->create_element( "titles" ); - $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>$lang ) ); - $entry->appendChild( $titles ); - } - $entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); - - if ($dataobj->exists_and_set( "date" )) { - $dataobj->get_value( "date" ) =~ /^([0-9]{4})/; - $entry->appendChild( $xml->create_data_element( "publicationYear", $1 ) ) if $1; - } + my $titles = $xml->create_element( "titles" ); + $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us" ) ); + + $entry->appendChild( $titles ); + } + +$entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); + +if ($dataobj->exists_and_set( "date" )) { + $dataobj->get_value( "date" ) =~ /^([0-9]{4})/; + $entry->appendChild( $xml->create_data_element( "publicationYear", $1 ) ) if $1; + +} # AH 03/11/2016: mapping the data in the EPrints keywords field to a tag. # If the keywords field is a multiple - and therefore, an array ref - then @@ -118,17 +158,18 @@ sub output_dataobj # Otherwise, if the keywords field is a single block of text, take the string # and make it a single element if ($dataobj->exists_and_set( "keywords" )) { - my $subjects = $xml->create_element( "subjects" ); - my $keywords = $dataobj->get_value("keywords"); - if(ref($keywords) eq "ARRAY") { - foreach my $keyword ( @$keywords ) { - $subjects->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>$lang) ); - } - $entry->appendChild( $subjects ); - } else { - $subjects->appendChild( $xml->create_data_element( "subject", $keywords, "xml:lang"=>$lang) ); - $entry->appendChild( $subjects ); + my $subjects = $xml->create_element( "subjects" ); + my $keywords = $dataobj->get_value("keywords"); + if(ref($keywords) eq "ARRAY") { + foreach my $keyword ( @$keywords ) { + $subjects->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>"en-us") ); } + + $entry->appendChild( $subjects ); + } else { + $subjects->appendChild( $xml->create_data_element( "subject", $keywords, "xml:lang"=>"en-us") ); + $entry->appendChild( $subjects ); + } } # AH 16/12/2016: commenting out the creation of the element. This is because the @@ -165,7 +206,9 @@ sub output_dataobj # } else { # $author->appendChild( $xml->create_data_element("contributorName", $name_str ) ); # } - # if ($given eq '') { + + + # if ($given eq '') { # $contributors->appendChild( $author ); # } else { # $author->appendChild( $xml->create_data_element("givenName",$given ) ); @@ -193,119 +236,129 @@ sub output_dataobj # $entry->appendChild( $contributors ); # } - #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called funderrr - if( $repo->can_call( "datacite_custom_funder" ) ){ - unless( defined( $repo->call( "datacite_custom_funder", $xml, $entry, $dataobj ) ) ){ - - my $funders = $dataobj->get_value( "funders" ); - my $grant = $dataobj->get_value( "grant" ); - my $projects = $dataobj->get_value( "projects" ); - if ($dataobj->exists_and_set( "funders" )) { - my $thefunders = $xml->create_element( "funders" ); - foreach my $funder ( @$funders ){ - foreach my $project ( @$projects ){ - $thefunders->appendChild( $xml->create_data_element( "funderName", $funder) ); - $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); - } - } - $entry->appendChild( $thefunders ); - } + #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called funderrr + if( $repo->can_call( "datacite_custom_funder" ) ) + { + if( defined( $repo->call( "datacite_custom_funder", $xml, $entry, $dataobj ) ) ) + {} + else { + + my $funders = $dataobj->get_value( "funders" ); + my $grant = $dataobj->get_value( "grant" ); + my $projects = $dataobj->get_value( "projects" ); + if ($dataobj->exists_and_set( "funders" )) { + my $thefunders = $xml->create_element( "funders" ); + foreach my $funder ( @$funders ) + { + + + foreach my $project ( @$projects ) + { + $thefunders->appendChild( $xml->create_data_element( "funderName", $funder) ); + $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); + + } + } + $entry->appendChild( $thefunders ); + +} + } } - } - if ($dataobj->exists_and_set( "repo_link" )) { - my $theurls = $dataobj->get_value( "repo_link" ); - my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); - foreach my $theurl ( @$theurls ){ + + + + if ($dataobj->exists_and_set( "repo_link" )) { + my $theurls = $dataobj->get_value( "repo_link" ); + my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); + foreach my $theurl ( @$theurls ) + { my $linkk = $theurl->{link}; - if (!$linkk eq ''){ + if (!$linkk eq ''){ $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); - } - $entry->appendChild( $relatedIdentifiers ); + } + $entry->appendChild( $relatedIdentifiers ); + } } - } - if ($dataobj->exists_and_set( "abstract" )) { + if ($dataobj->exists_and_set( "abstract" )) { - my $abstract = $dataobj->get_value( "abstract" ); - my $description = $xml->create_element( "descriptions" ); + my $abstract = $dataobj->get_value( "abstract" ); + my $description = $xml->create_element( "descriptions" ); - $description->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>$lang, descriptionType=>"Abstract" ) ); + $description->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); - if ($dataobj->exists_and_set( "collection_method" )) { + if ($dataobj->exists_and_set( "collection_method" )) { my $collection = $dataobj->get_value("collection_method"); $description->appendChild( $xml->create_data_element("description", $collection, descriptionType=>"Methods")); - } + } - if ($dataobj->exists_and_set( "provenance" )) { + if ($dataobj->exists_and_set( "provenance" )) { my $processing = $dataobj->get_value("provenance"); $description->appendChild( $xml->create_data_element("description", $processing, descriptionType=>"Methods")); - } - $entry->appendChild( $description ); - } + } + + $entry->appendChild( $description ); - #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages - if( $repo->can_call( "datacite_custom_language" ) ){ - unless( defined( $repo->call( "datacite_custom_language", $xml, $entry, $dataobj ) ) ){ - if ($dataobj->exists_and_set( "language" )) { - my $lan = $dataobj->get_value( "language" ); - $entry->appendChild( $xml->create_data_element( "language", $lan) ); - } } - } - # AH 16/11/2016: rendering the geoLocations XML elements - # Note: the initial conditional checks to see if the geographic_cover - # metadata field exists and is set. This was done because geographic_cover - # is part of the z_recollect_metadata_profile.pl file within the Recollect - # plugin and many repositories make it a mandatory field in the workflow. - - if( $dataobj->exists_and_set( "geographic_cover" ) ) { - - #Create XML elements - my $geo_locations = $xml->create_element( "geoLocations" ); - my $geo_location = $xml->create_element( "geoLocation" ); - - # Get value of geographic_cover field and append to $geo_location XML element - my $geographic_cover = $dataobj->get_value( "geographic_cover" ); - $geo_location->appendChild( $xml->create_data_element("geoLocationPlace", $geographic_cover ) ); - - # Get values of bounding box - my $west = $dataobj->get_value( "bounding_box_west_edge" ); - my $east = $dataobj->get_value( "bounding_box_east_edge" ); - my $south = $dataobj->get_value( "bounding_box_south_edge" ); - my $north = $dataobj->get_value( "bounding_box_north_edge" ); - - # Check to see if $north, $south, $east, or $west values are defined - if ($north || $south || $east || $west ) { - # Created $geo_location_box XML element - my $geo_location_box = $xml->create_element( "geoLocationBox" ); - # If $west is defined, created XML element with the appropriate value - if ($west) { - $geo_location_box->appendChild( $xml->create_data_element( "westBoundLongitude", $west) ); - } - # If $east is defined, created XML element with the appropriate value - if ($east) { - $geo_location_box->appendChild( $xml->create_data_element( "eastBoundLongitude", $east) ); - } - # If $south is defined, created XML element with the appropriate value - if ($south) { - $geo_location_box->appendChild( $xml->create_data_element( "southBoundLongitude", $south) ); - } - # If $north is defined, created XML element with the appropriate value - if ($north) { - $geo_location_box->appendChild( $xml->create_data_element( "northBoundLongitude", $north) ); + #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages + if( $repo->can_call( "datacite_custom_language" ) ) + { + if( defined( $repo->call( "datacite_custom_language", $xml, $entry, $dataobj ) ) ) + {} + else { + + +if ($dataobj->exists_and_set( "language" )) { + my $lan = $dataobj->get_value( "language" ); + $entry->appendChild( $xml->create_data_element( "language", $lan) ); + } + } + } + + # AH 16/11/2016: rendering the geoLocations XML elements + # Note: the initial conditional checks to see if the geographic_cover + # metadata field exists and is set. This was done because geographic_cover + # is part of the z_recollect_metadata_profile.pl file within the Recollect + # plugin and many repositories make it a mandatory field in the workflow. + + if( $dataobj->exists_and_set( "geographic_cover" ) ) { + + #Create XML elements + my $geo_locations = $xml->create_element( "geoLocations" ); + my $geo_location = $xml->create_element( "geoLocation" ); + + # Get value of geographic_cover field and append to $geo_location XML element + my $geographic_cover = $dataobj->get_value( "geographic_cover" ); + $geo_location->appendChild( $xml->create_data_element("geoLocationPlace", $geographic_cover ) ); + + # Get values of bounding box + my $west = $dataobj->get_value( "bounding_box_west_edge" ); + my $east = $dataobj->get_value( "bounding_box_east_edge" ); + my $south = $dataobj->get_value( "bounding_box_south_edge" ); + my $north = $dataobj->get_value( "bounding_box_north_edge" ); + + # Check to see if $north, $south, $east, or $west values are defined + if (defined $north && defined $south && defined $east && defined $west ) { + # Created $geo_location_box XML element + my $geo_location_box = $xml->create_element( "geoLocationBox" ); + # If $long/lat is defined, created XML element with the appropriate value + $geo_location_box->appendChild( $xml->create_data_element( "westBoundLongitude", $west) ); + $geo_location_box->appendChild( $xml->create_data_element( "eastBoundLongitude", $east) ); + $geo_location_box->appendChild( $xml->create_data_element( "southBoundLatitude", $south) ); + $geo_location_box->appendChild( $xml->create_data_element( "northBoundLatitude", $north) ); + # Append child $geo_location_box XML element to parent $geo_location XML element + $geo_location->appendChild( $geo_location_box ); + } + # Append child $geo_location XML element to parent $geo_locations XML element + $geo_locations->appendChild( $geo_location ); + # Append $geo_locations XML element to XML document + $entry->appendChild( $geo_locations ); } - # Append child $geo_location_box XML element to parent $geo_location XML element - $geo_location->appendChild( $geo_location_box ); - } - # Append child $geo_location XML element to parent $geo_locations XML element - $geo_locations->appendChild( $geo_location ); - # Append $geo_locations XML element to XML document - $entry->appendChild( $geo_locations ); - } - return ''."\n".EPrints::XML::to_string($entry); + return ''."\n".$xml->to_string($entry); } + 1; From 3ac5bf63f41d8452014090398de60f91cdbffad3 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Tue, 11 Jul 2017 14:33:21 +0100 Subject: [PATCH 33/42] tab tidying and datacite_custom_repo_link --- .../EPrints/Plugin/Export/DataCiteXML.pm | 343 ++++++++---------- 1 file changed, 161 insertions(+), 182 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 142e245..47d90e4 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -29,37 +29,37 @@ sub new sub output_dataobj { - my ($self, $dataobj, %opts) = @_; + my ($self, $dataobj, %opts) = @_; + + my $repo = $self->{repository}; + my $xml = $repo->xml; - my $repo = $self->{repository}; - my $xml = $repo->xml; + #reference the datacite schema from config + our $entry = $xml->create_element( "resource", + xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", + "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); - #reference the datacite schema from config - our $entry = $xml->create_element( "resource", - xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), - "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", - "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); + #RM We pass in the DOI from Event::DataCite... or from --args on the cmd line - #RM We pass in the DOI from Event::DataCite... or from --args on the cmd line - -# AH my $thisdoi = $opts{doi}; always returns undefined, even when DOI exists + # AH my $thisdoi = $opts{doi}; always returns undefined, even when DOI exists # Ideally coining should NOT happen in this script but opts{doi} should have it # but is always blank - my $thisdoi = $dataobj->get_value("id_number"); - #RM coin a DOI if either - # - not come via event or - # - no doi arg passed in via cmd_line - # ie when someone exports DataCiteXML from the Action tab - if(!defined $thisdoi){ - #nick the coining sub from event plugin - my $event = $repo->plugin("Event::DataCiteEvent"); - $thisdoi = $event->coin_doi($repo, $dataobj); - #coin_doi may return an event error code if no prefix present assume this is the case - my $prefix = $repo->get_conf( "datacitedoi", "prefix"); - return $thisdoi if($thisdoi !~ /^$prefix/); - } + my $thisdoi = $dataobj->get_value("id_number"); + #RM coin a DOI if either + # - not come via event or + # - no doi arg passed in via cmd_line + # ie when someone exports DataCiteXML from the Action tab + if(!defined $thisdoi){ + #nick the coining sub from event plugin + my $event = $repo->plugin("Event::DataCiteEvent"); + $thisdoi = $event->coin_doi($repo, $dataobj); + #coin_doi may return an event error code if no prefix present assume this is the case + my $prefix = $repo->get_conf( "datacitedoi", "prefix"); + return $thisdoi if($thisdoi !~ /^$prefix/); + } - $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); + $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); # AH 04/11/2016: adding element as it is required for the # DataCite 4.0 XML Metadata Schema. For publications repositories, it uses the @@ -75,82 +75,72 @@ sub output_dataobj } $entry->appendChild( $resourceType_element ); - #RM otherwise we'll leave this alone for now - + #RM otherwise we'll leave this alone for now - my $license = undef; + my $license = undef; - if( $repo->can_call( "datacite_license" ) ) - { + if( $repo->can_call( "datacite_license" ) ){ $license = $repo->call( "datacite_license", $xml, $entry, $dataobj, $repo ); + } - } - - + if( $dataobj->exists_and_set( "creators" ) ){ + my $creators = $xml->create_element( "creators" ); + my $names = $dataobj->get_value( "creators" ); -if( $dataobj->exists_and_set( "creators" ) ) - { - my $creators = $xml->create_element( "creators" ); - my $names = $dataobj->get_value( "creators" ); - ; + foreach my $name ( @$names ){ + my $author = $xml->create_element( "creator" ); - foreach my $name ( @$names ) - { - my $author = $xml->create_element( "creator" ); + my $name_str = EPrints::Utils::make_name_string( $name->{name}); - my $name_str = EPrints::Utils::make_name_string( $name->{name}); + my $family = $name->{name}->{family}; + my $given = $name->{name}->{given}; + my $orcid = $name->{orcid}; - my $family = $name->{name}->{family}; - my $given = $name->{name}->{given}; - my $orcid = $name->{orcid}; + if ($family eq '' && $given eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("creatorName", $name_str ) ); + } + if ($given eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("givenName",$given ) ); + } + if ($family eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("familyName", $family ) ); + } + if ($dataobj->exists_and_set( "creators_orcid" )) { - if ($family eq '' && $given eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("creatorName", $name_str ) ); - } - if ($given eq ''){ + if ($orcid eq '') { $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("givenName",$given ) ); - } - if ($family eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("familyName", $family ) ); - } - if ($dataobj->exists_and_set( "creators_orcid" )) { - -if ($orcid eq '') { + } else { + $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); + } + } + $creators->appendChild( $author ); - } - else { - $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - } - } - $creators->appendChild( $author ); - } - $entry->appendChild( $creators ); } + $entry->appendChild( $creators ); + } if ($dataobj->exists_and_set( "title" )) { - my $titles = $xml->create_element( "titles" ); - $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us" ) ); - - $entry->appendChild( $titles ); - } + my $titles = $xml->create_element( "titles" ); + $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us" ) ); -$entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); - -if ($dataobj->exists_and_set( "date" )) { - $dataobj->get_value( "date" ) =~ /^([0-9]{4})/; - $entry->appendChild( $xml->create_data_element( "publicationYear", $1 ) ) if $1; + $entry->appendChild( $titles ); + } + $entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); -} + if ($dataobj->exists_and_set( "date" )) { + $dataobj->get_value( "date" ) =~ /^([0-9]{4})/; + $entry->appendChild( $xml->create_data_element( "publicationYear", $1 ) ) if $1; + } # AH 03/11/2016: mapping the data in the EPrints keywords field to a tag. # If the keywords field is a multiple - and therefore, an array ref - then @@ -165,7 +155,7 @@ if ($dataobj->exists_and_set( "date" )) { $subjects->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>"en-us") ); } - $entry->appendChild( $subjects ); + $entry->appendChild( $subjects ); } else { $subjects->appendChild( $xml->create_data_element( "subject", $keywords, "xml:lang"=>"en-us") ); $entry->appendChild( $subjects ); @@ -235,127 +225,116 @@ if ($dataobj->exists_and_set( "date" )) { # } # $entry->appendChild( $contributors ); # } - - #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called funderrr - if( $repo->can_call( "datacite_custom_funder" ) ) - { - if( defined( $repo->call( "datacite_custom_funder", $xml, $entry, $dataobj ) ) ) - {} - else { - - my $funders = $dataobj->get_value( "funders" ); - my $grant = $dataobj->get_value( "grant" ); - my $projects = $dataobj->get_value( "projects" ); - if ($dataobj->exists_and_set( "funders" )) { - my $thefunders = $xml->create_element( "funders" ); - foreach my $funder ( @$funders ) - { - - - foreach my $project ( @$projects ) - { - $thefunders->appendChild( $xml->create_data_element( "funderName", $funder) ); - $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); - - } - } - $entry->appendChild( $thefunders ); - -} + + #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called funderrr + if( $repo->can_call( "datacite_custom_funder" ) ){ + unless( defined( $repo->call( "datacite_custom_funder", $xml, $entry, $dataobj ) ) ){ + my $funders = $dataobj->get_value( "funders" ); + my $grant = $dataobj->get_value( "grant" ); + my $projects = $dataobj->get_value( "projects" ); + if ($dataobj->exists_and_set( "funders" )) { + my $thefunders = $xml->create_element( "funders" ); + foreach my $funder ( @$funders ){ + foreach my $project ( @$projects ){ + $thefunders->appendChild( $xml->create_data_element( "funderName", $funder) ); + $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); + } + } + $entry->appendChild( $thefunders ); + } } - } - + } + if ($dataobj->exists_and_set( "repo_link" )) { - if ($dataobj->exists_and_set( "repo_link" )) { + #If we have a custom override + if( $repo->can_call( "datacite_custom_repo_link" ) ){ + my $relatedIdentifiers = $repo->call( "datacite_custom_repo_link", $xml, $entry, $dataobj ); + $entry->appendChild( $relatedIdentifiers ) if (defined $relatedIdentifiers); + #default action + }else{ my $theurls = $dataobj->get_value( "repo_link" ); my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); - foreach my $theurl ( @$theurls ) - { - my $linkk = $theurl->{link}; - if (!$linkk eq ''){ - $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); - } + foreach my $theurl ( @$theurls ) { + my $linkk = $theurl->{link}; + if (!$linkk eq ''){ + $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); + } $entry->appendChild( $relatedIdentifiers ); - } + } } + } - if ($dataobj->exists_and_set( "abstract" )) { + if ($dataobj->exists_and_set( "abstract" )) { - my $abstract = $dataobj->get_value( "abstract" ); - my $description = $xml->create_element( "descriptions" ); + my $abstract = $dataobj->get_value( "abstract" ); + my $description = $xml->create_element( "descriptions" ); - $description->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); + $description->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); - if ($dataobj->exists_and_set( "collection_method" )) { + if ($dataobj->exists_and_set( "collection_method" )) { my $collection = $dataobj->get_value("collection_method"); $description->appendChild( $xml->create_data_element("description", $collection, descriptionType=>"Methods")); - } + } - if ($dataobj->exists_and_set( "provenance" )) { + if ($dataobj->exists_and_set( "provenance" )) { my $processing = $dataobj->get_value("provenance"); $description->appendChild( $xml->create_data_element("description", $processing, descriptionType=>"Methods")); - } - - $entry->appendChild( $description ); - } - #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages - if( $repo->can_call( "datacite_custom_language" ) ) - { - if( defined( $repo->call( "datacite_custom_language", $xml, $entry, $dataobj ) ) ) - {} - else { - + $entry->appendChild( $description ); + } -if ($dataobj->exists_and_set( "language" )) { - my $lan = $dataobj->get_value( "language" ); - $entry->appendChild( $xml->create_data_element( "language", $lan) ); - } - } - } - - # AH 16/11/2016: rendering the geoLocations XML elements - # Note: the initial conditional checks to see if the geographic_cover - # metadata field exists and is set. This was done because geographic_cover - # is part of the z_recollect_metadata_profile.pl file within the Recollect - # plugin and many repositories make it a mandatory field in the workflow. - - if( $dataobj->exists_and_set( "geographic_cover" ) ) { - - #Create XML elements - my $geo_locations = $xml->create_element( "geoLocations" ); - my $geo_location = $xml->create_element( "geoLocation" ); - - # Get value of geographic_cover field and append to $geo_location XML element - my $geographic_cover = $dataobj->get_value( "geographic_cover" ); - $geo_location->appendChild( $xml->create_data_element("geoLocationPlace", $geographic_cover ) ); - - # Get values of bounding box - my $west = $dataobj->get_value( "bounding_box_west_edge" ); - my $east = $dataobj->get_value( "bounding_box_east_edge" ); - my $south = $dataobj->get_value( "bounding_box_south_edge" ); - my $north = $dataobj->get_value( "bounding_box_north_edge" ); - - # Check to see if $north, $south, $east, or $west values are defined - if (defined $north && defined $south && defined $east && defined $west ) { - # Created $geo_location_box XML element - my $geo_location_box = $xml->create_element( "geoLocationBox" ); - # If $long/lat is defined, created XML element with the appropriate value - $geo_location_box->appendChild( $xml->create_data_element( "westBoundLongitude", $west) ); - $geo_location_box->appendChild( $xml->create_data_element( "eastBoundLongitude", $east) ); - $geo_location_box->appendChild( $xml->create_data_element( "southBoundLatitude", $south) ); - $geo_location_box->appendChild( $xml->create_data_element( "northBoundLatitude", $north) ); - # Append child $geo_location_box XML element to parent $geo_location XML element - $geo_location->appendChild( $geo_location_box ); - } - # Append child $geo_location XML element to parent $geo_locations XML element - $geo_locations->appendChild( $geo_location ); - # Append $geo_locations XML element to XML document - $entry->appendChild( $geo_locations ); + #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages + if( $repo->can_call( "datacite_custom_language" ) ){ + unless( defined( $repo->call( "datacite_custom_language", $xml, $entry, $dataobj ) ) ){ + if ($dataobj->exists_and_set( "language" )) { + my $lan = $dataobj->get_value( "language" ); + $entry->appendChild( $xml->create_data_element( "language", $lan) ); } + } + } + + # AH 16/11/2016: rendering the geoLocations XML elements + # Note: the initial conditional checks to see if the geographic_cover + # metadata field exists and is set. This was done because geographic_cover + # is part of the z_recollect_metadata_profile.pl file within the Recollect + # plugin and many repositories make it a mandatory field in the workflow. + + if( $dataobj->exists_and_set( "geographic_cover" ) ) { + + #Create XML elements + my $geo_locations = $xml->create_element( "geoLocations" ); + my $geo_location = $xml->create_element( "geoLocation" ); + + # Get value of geographic_cover field and append to $geo_location XML element + my $geographic_cover = $dataobj->get_value( "geographic_cover" ); + $geo_location->appendChild( $xml->create_data_element("geoLocationPlace", $geographic_cover ) ); + + # Get values of bounding box + my $west = $dataobj->get_value( "bounding_box_west_edge" ); + my $east = $dataobj->get_value( "bounding_box_east_edge" ); + my $south = $dataobj->get_value( "bounding_box_south_edge" ); + my $north = $dataobj->get_value( "bounding_box_north_edge" ); + + # Check to see if $north, $south, $east, or $west values are defined + if (defined $north && defined $south && defined $east && defined $west ) { + # Created $geo_location_box XML element + my $geo_location_box = $xml->create_element( "geoLocationBox" ); + # If $long/lat is defined, created XML element with the appropriate value + $geo_location_box->appendChild( $xml->create_data_element( "westBoundLongitude", $west) ); + $geo_location_box->appendChild( $xml->create_data_element( "eastBoundLongitude", $east) ); + $geo_location_box->appendChild( $xml->create_data_element( "southBoundLatitude", $south) ); + $geo_location_box->appendChild( $xml->create_data_element( "northBoundLatitude", $north) ); + # Append child $geo_location_box XML element to parent $geo_location XML element + $geo_location->appendChild( $geo_location_box ); + } + # Append child $geo_location XML element to parent $geo_locations XML element + $geo_locations->appendChild( $geo_location ); + # Append $geo_locations XML element to XML document + $entry->appendChild( $geo_locations ); + } return ''."\n".$xml->to_string($entry); } From be7a6c2eec2aa91cc60cfdac4a29d8896b49d83c Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Thu, 13 Jul 2017 04:33:21 +0100 Subject: [PATCH 34/42] remove the relatedIdentifier for now --- .../EPrints/Plugin/Export/DataCiteXML.pm | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 47d90e4..7cc792b 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -247,23 +247,24 @@ sub output_dataobj if ($dataobj->exists_and_set( "repo_link" )) { - - #If we have a custom override - if( $repo->can_call( "datacite_custom_repo_link" ) ){ - my $relatedIdentifiers = $repo->call( "datacite_custom_repo_link", $xml, $entry, $dataobj ); - $entry->appendChild( $relatedIdentifiers ) if (defined $relatedIdentifiers); - #default action - }else{ - my $theurls = $dataobj->get_value( "repo_link" ); - my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); - foreach my $theurl ( @$theurls ) { - my $linkk = $theurl->{link}; - if (!$linkk eq ''){ - $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); - } - $entry->appendChild( $relatedIdentifiers ); - } - } +# RelatedIdentifier should be more careful in identifying the relationType so we will revisit after more input from the DataCite community probably for milestone 1.3 + +# #If we have a custom override +# if( $repo->can_call( "datacite_custom_repo_link" ) ){ +# my $relatedIdentifiers = $repo->call( "datacite_custom_repo_link", $xml, $entry, $dataobj ); +# $entry->appendChild( $relatedIdentifiers ) if (defined $relatedIdentifiers); +# #default action +# }else{ +# my $theurls = $dataobj->get_value( "repo_link" ); +# my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); +# foreach my $theurl ( @$theurls ) { +# my $linkk = $theurl->{link}; +# if (!$linkk eq ''){ +# $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); +# } +# $entry->appendChild( $relatedIdentifiers ); +# } +# } } if ($dataobj->exists_and_set( "abstract" )) { From 336a27ce12191f812f0468a320a1737d992e7a7a Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Mon, 21 Aug 2017 17:16:38 +0100 Subject: [PATCH 35/42] reworked Export plugin so that *any* EPrint field can be mapped if a corresponding sub is found in zzz_datacite_mapping --- lib/cfg.d/zzz_datacite_mapping.pl | 83 +++++++++++++++++++ .../EPrints/Plugin/Export/DataCiteXML.pm | 71 +++------------- 2 files changed, 94 insertions(+), 60 deletions(-) create mode 100644 lib/cfg.d/zzz_datacite_mapping.pl diff --git a/lib/cfg.d/zzz_datacite_mapping.pl b/lib/cfg.d/zzz_datacite_mapping.pl new file mode 100644 index 0000000..491c928 --- /dev/null +++ b/lib/cfg.d/zzz_datacite_mapping.pl @@ -0,0 +1,83 @@ +#################################################### +# New architecture for print => datacite mapping +#################################################### + +#These first two both map to resourceType (and resourceTypeGeneral) the first is for pubs repos the second for data (but either can be used for ether f the eprint field is there) +$c->{datacite_mapping_type} = sub { + + my ( $xml, $dataobj, $repo, $value ) = @_; + + my $pub_resourceType = $repo->get_conf( "datacitedoi", "typemap", $value ); + if(defined $pub_resourceType){ + return $xml->create_data_element( "resourceType", $pub_resourceType->{'v'}, resourceTypeGeneral=>$pub_resourceType->{'a'}); + } + + return undef; +}; + +$c->{datacite_mapping_data_type} = sub { + + my ( $xml, $dataobj, $repo, $value ) = @_; + + return $xml->create_data_element( "resourceType", $value, resourceTypeGeneral=>$value); +}; + +$c->{datacite_mapping_creators} = sub { + + my ( $xml, $dataobj, $repo, $value ) = @_; + + my $creators = $xml->create_element( "creators" ); + + foreach my $name ( @$value ){ + my $author = $xml->create_element( "creator" ); + + my $name_str = EPrints::Utils::make_name_string( $name->{name}); + + my $family = $name->{name}->{family}; + my $given = $name->{name}->{given}; + my $orcid = $name->{orcid}; + + if ($family eq '' && $given eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("creatorName", $name_str ) ); + } + if ($given eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("givenName",$given ) ); + } + if ($family eq ''){ + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("familyName", $family ) ); + } + if ($dataobj->exists_and_set( "creators_orcid" )) { + + if ($orcid eq '') { + $creators->appendChild( $author ); + } else { + $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); + } + } + + $creators->appendChild( $author ); + } + return $creators +}; + +=comment + +$c->{datacite_mapping_somefield} = sub { + + + my ( $xml, $dataobj, $repo, $value ) = @_; + + #Do the mapping/validation here.... + + return $xml #of somedescription + + +} + +=cut diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index 7cc792b..24eeb02 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -58,75 +58,26 @@ sub output_dataobj my $prefix = $repo->get_conf( "datacitedoi", "prefix"); return $thisdoi if($thisdoi !~ /^$prefix/); } - $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); - # AH 04/11/2016: adding element as it is required for the - # DataCite 4.0 XML Metadata Schema. For publications repositories, it uses the - # eprint_type value. For data repositories, it uses the eprint_data_type value. - my $resourceType_element; - my $pub_resourceType = $repo->get_conf( "datacitedoi", "typemap", $dataobj->get_value("type") ); - if(defined $pub_resourceType){ - $resourceType_element = $xml->create_data_element( "resourceType", $pub_resourceType->{'v'}, resourceTypeGeneral=>$pub_resourceType->{'a'}); - } - if( $dataobj->exists_and_set( "data_type" ) ) { - my $data_type = $dataobj->get_value( "data_type" ); - $resourceType_element = $xml->create_data_element( "resourceType", $data_type, resourceTypeGeneral=>$data_type); - } - $entry->appendChild( $resourceType_element ); - - #RM otherwise we'll leave this alone for now + foreach my $field ( $dataobj->{dataset}->get_fields ) + { + my $mapping_fn = "datacite_mapping_".$field->get_name; + if($repo->can_call($mapping_fn) && $dataobj->exists_and_set($field->get_name)){ + my $mapped_element = $repo->call( $mapping_fn, $xml, $dataobj, $repo, $dataobj->value($field->get_name) ); + $entry->appendChild( $mapped_element ) if(defined $mapped_element); + } + } + #RM extract licens from documents by some means: my $license = undef; - - if( $repo->can_call( "datacite_license" ) ){ $license = $repo->call( "datacite_license", $xml, $entry, $dataobj, $repo ); } - if( $dataobj->exists_and_set( "creators" ) ){ - my $creators = $xml->create_element( "creators" ); - my $names = $dataobj->get_value( "creators" ); - - foreach my $name ( @$names ){ - my $author = $xml->create_element( "creator" ); - - my $name_str = EPrints::Utils::make_name_string( $name->{name}); - - - my $family = $name->{name}->{family}; - my $given = $name->{name}->{given}; - my $orcid = $name->{orcid}; - - if ($family eq '' && $given eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("creatorName", $name_str ) ); - } - if ($given eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("givenName",$given ) ); - } - if ($family eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("familyName", $family ) ); - } - if ($dataobj->exists_and_set( "creators_orcid" )) { - - if ($orcid eq '') { - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - } - } - - $creators->appendChild( $author ); - } - $entry->appendChild( $creators ); - } + ########################################################################################################################################################################## + ################################# From here on in you can redefine datacite_ampping_[fieldname] sub routines in lib/cfg.d/zzz_datacite_mapping.pl ####################### if ($dataobj->exists_and_set( "title" )) { From 7aab5a07cb8e2425204ab109ef24e4eb6de85cde Mon Sep 17 00:00:00 2001 From: Borys Feldman Date: Tue, 19 Sep 2017 18:15:21 +0100 Subject: [PATCH 36/42] rationalisation of field render code --- cfg/cfg.d/z_datacitedoi.pl | 49 --- lib/cfg.d/z_datacite_mapping.pl | 267 ++++++++++++++++ lib/cfg.d/zz_datacite_mapping_overide.pl | 28 ++ .../EPrints/Plugin/Export/DataCiteXML.pm | 296 +----------------- 4 files changed, 296 insertions(+), 344 deletions(-) create mode 100644 lib/cfg.d/z_datacite_mapping.pl create mode 100644 lib/cfg.d/zz_datacite_mapping_overide.pl mode change 100644 => 120000 lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm diff --git a/cfg/cfg.d/z_datacitedoi.pl b/cfg/cfg.d/z_datacitedoi.pl index 08aaa27..00f7352 100644 --- a/cfg/cfg.d/z_datacitedoi.pl +++ b/cfg/cfg.d/z_datacitedoi.pl @@ -119,52 +119,3 @@ } - - - -#BF sub method for can call for funder -$c->{datacite_custom_funder} = sub - { - - my ( $xml, $entry, $dataobj ) = @_; - - if ($dataobj->exists_and_set( "funders" )) { - my $funders = $dataobj->get_value( "funders" ); - my $thefunders = $xml->create_element( "funders" ); - foreach my $funder ( @$funders ) - { - my $fund = $funder->{funders}; - my $grant = $funder->{grant}; - my $others = $dataobj->get_value( "funders_other_funder" ); - if($fund eq "other"){ - foreach my $other ( @$others ) - { - - $thefunders->appendChild( $xml->create_data_element( "funderName", $other) ); - }} else { - $thefunders->appendChild( $xml->create_data_element( "funderName", $fund) ); - } - -$thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); - - - } - $entry->appendChild( $thefunders ); - } - }; - - -#BF sub method for can call for language -$c->{datacite_custom_language} = sub - { - my ( $xml, $entry, $dataobj ) = @_; - - my $lan = $dataobj->get_value( "language" ); - if ($dataobj->exists_and_set( "language" )) { - foreach my $la ( @$lan ) - { - my $thelanguage = $la->{l}; - $entry->appendChild( $xml->create_data_element( "language", $thelanguage) ); - } - } - } diff --git a/lib/cfg.d/z_datacite_mapping.pl b/lib/cfg.d/z_datacite_mapping.pl new file mode 100644 index 0000000..2cd1e01 --- /dev/null +++ b/lib/cfg.d/z_datacite_mapping.pl @@ -0,0 +1,267 @@ +##################################################### +# New architecture +# for print => datacite mapping#################################################### + +# These first two both map to resourceType(and resourceTypeGeneral) the first is +# for pubs repos the second +# for data(but either can be used +# for ether f the eprint field is there) +$c->{datacite_mapping_type} = sub { + + my($xml, $dataobj, $repo, $value) = @_; + + my $pub_resourceType = $repo->get_conf("datacitedoi", "typemap", $value); + if (defined $pub_resourceType) { + return $xml->create_data_element("resourceType", $pub_resourceType->{'v'}, resourceTypeGeneral=>$pub_resourceType->{'a'}); + } + + return undef; +}; + +$c->{datacite_mapping_data_type} = sub { + + my($xml, $dataobj, $repo, $value) = @_; + + return $xml->create_data_element("resourceType", $value, resourceTypeGeneral=>$value); +}; + +$c->{datacite_mapping_creators} = sub { + + my($xml, $dataobj, $repo, $value) = @_; + + my $creators = $xml->create_element("creators"); + + foreach my $name(@$value) { + my $author = $xml->create_element("creator"); + + my $name_str = EPrints::Utils::make_name_string($name->{name}); + + my $family = $name->{name}->{family}; + my $given = $name->{name}->{given}; + my $orcid = $name->{orcid}; + + if ($family eq '' && $given eq '') { + $creators->appendChild($author); + } else { + $author->appendChild($xml->create_data_element("creatorName", $name_str)); + } + if ($given eq '') { + $creators->appendChild($author); + } else { + $author->appendChild($xml->create_data_element("givenName", $given)); + } + if ($family eq '') { + $creators->appendChild($author); + } else { + $author->appendChild($xml->create_data_element("familyName", $family)); + } + if ($dataobj->exists_and_set("creators_orcid")) { + + if ($orcid eq '') { + $creators->appendChild($author); + } else { + $author->appendChild($xml->create_data_element("nameIdentifier", $orcid, schemeURI =>"http://orcid.org/", nameIdentifierScheme=>"ORCID")); + } + } + + $creators->appendChild($author); + } + return $creators +}; + + +$c->{datacite_mapping_title} = sub { + my($xml, $dataobj, $repo, $value) = @_; + + + + my $titles = $xml->create_element("titles"); + $titles->appendChild($xml->create_data_element("title", $dataobj->render_value("title"), "xml:lang"=>"en-us")); + + + + + + + return $titles# of somedescription +}; + + + + + + +$c->{datacite_mapping_abstract} = sub { + my($xml, $dataobj, $repo, $value) = @_; + + my $abstract = $dataobj->get_value("abstract"); + my $description = $xml->create_element("descriptions"); + + $description->appendChild($xml->create_data_element("description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract")); + + if ($dataobj->exists_and_set("collection_method")) { + my $collection = $dataobj->get_value("collection_method"); + $description->appendChild($xml->create_data_element("description", $collection, descriptionType =>"Methods")); + } + + if ($dataobj->exists_and_set("provenance")) { + my $processing = $dataobj->get_value("provenance"); + $description->appendChild($xml->create_data_element("description", $processing, descriptionType =>"Methods")); + } + + + + + return $description# of somedescription +}; + + + + + + +$c->{datacite_mapping_date} = sub { + my ( $xml, $dataobj, $repo, $value ) = @_; + $dataobj->get_value( "date" ) =~ /^([0-9]{4})/; + return $xml->create_data_element( "publicationYear", $1 ) if $1; + +}; + + +$c->{datacite_mapping_keywords} = sub { + my($xml, $dataobj, $repo, $value) = @_; + + if ($dataobj->exists_and_set("keywords")) { + my $subjects = $xml->create_element("subjects"); + my $keywords = $dataobj->get_value("keywords"); + if (ref($keywords) eq "ARRAY") { + foreach my $keyword(@$keywords) { + $subjects->appendChild($xml->create_data_element("subject", $keyword, "xml:lang"=>"en-us")); + } + return $subjects + + } else { + $subjects->appendChild($xml->create_data_element("subject", $keywords, "xml:lang"=>"en-us")); + return $subjects + } + } +}; + +$c->{datacite_mapping_geographic_cover} = sub { + my($xml, $dataobj, $repo, $value) = @_; + + my $geo_locations = $xml->create_element("geoLocations"); + my $geo_location = $xml->create_element("geoLocation"); + if ($dataobj->exists_and_set("geographic_cover")) { + + # + #Create XML elements + + # Get value of geographic_cover field and append to $geo_location XML element + my $geographic_cover = $dataobj->get_value("geographic_cover"); + $geo_location->appendChild($xml->create_data_element("geoLocationPlace", $geographic_cover)); + + # + # Get values of bounding box + my $west = $dataobj->get_value("bounding_box_west_edge"); + my $east = $dataobj->get_value("bounding_box_east_edge"); + my $south = $dataobj->get_value("bounding_box_south_edge"); + my $north = $dataobj->get_value("bounding_box_north_edge"); + + # + # Check to see + # if $north, $south, $east, or $west values are defined + if (defined $north && defined $south && defined $east && defined $west) {# + #Created $geo_location_box XML element + my $geo_location_box = $xml->create_element("geoLocationBox");# + #If $long / lat is defined, created XML element with the appropriate value + $geo_location_box->appendChild($xml->create_data_element("westBoundLongitude", $west)); + $geo_location_box->appendChild($xml->create_data_element("eastBoundLongitude", $east)); + $geo_location_box->appendChild($xml->create_data_element("southBoundLatitude", $south)); + $geo_location_box->appendChild($xml->create_data_element("northBoundLatitude", $north));# + #Append child $geo_location_box XML element to parent $geo_location XML element + $geo_location->appendChild($geo_location_box); + } + #Append child $geo_location XML element to parent $geo_locations XML element + $geo_locations->appendChild($geo_location); + #Append $geo_locations XML element to XML document# $entry - > appendChild($geo_locations); + } + + return $geo_locations; +}; + +$c->{datacite_mapping_funders} = sub { + my($xml, $dataobj, $repo, $value) = @_; + + + # + # if ($repo - >can_call("datacite_custom_funder")) {# + # return $repo - > call("datacite_custom_funder", $xml, $dataobj);# + # } + + my $funders = $dataobj->get_value("funders"); + my $grant = $dataobj->get_value("grant"); + my $projects = $dataobj->get_value("projects"); + if ($dataobj->exists_and_set("funders")) { + my $thefunders = $xml->create_element("funders"); + foreach my $funder(@$funders) { + foreach my $project(@$projects) { + $thefunders->appendChild($xml->create_data_element("funderName", $funder)); + $thefunders->appendChild($xml->create_data_element("awardNumber", $grant)); + } + } + return $thefunders; + } +}; + + + +$c->{datacite_mapping_rights} = sub { + my($xml, $dataobj, $repo, $value) = @_; + my $author = $xml->create_element("rightsList"); + + foreach my $doc($dataobj->get_all_documents()) { + + my $license = $doc->get_value("license"); + + if (defined $license && $license ne '') { + + if ($license eq "attached") { + + $author ->appendChild($xml->create_data_element("rights", $repo->phrase("licenses_typename_attached"), rightsURI =>$doc->get_url)); + } else { + + my $licenseuri = $repo->phrase("licenses_uri_$license"); + $author->appendChild($xml->create_data_element("rights", $license, rightsURI =>$licenseuri)); + } + } + + + } + return $author; +}; + + + + + + +$c->{datacite_mapping_repo_link} = sub { + + my($xml, $entry, $dataobj) = @_; + + my $relatedIdentifiers = undef; + #default codein plugin (for reference) + # my $theurls = $dataobj->get_value( "repo_link" ); + # my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); + # foreach my $theurl ( @$theurls ) { + # my $linkk = $theurl->{link}; + # if (!$linkk eq ''){ + # $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); + # } + # } + + + return $relatedIdentifiers; + +}; diff --git a/lib/cfg.d/zz_datacite_mapping_overide.pl b/lib/cfg.d/zz_datacite_mapping_overide.pl new file mode 100644 index 0000000..7572748 --- /dev/null +++ b/lib/cfg.d/zz_datacite_mapping_overide.pl @@ -0,0 +1,28 @@ +$c->{datacite_mapping_funders} = sub { + + my($xml, $dataobj) = @_; + + if ($dataobj->exists_and_set("funders")) { + my $funders = $dataobj->get_value("funders"); + my $thefunders = $xml->create_element("fundingReferences"); + foreach my $funder(@$funders) { + my $author = $xml->create_element("fundingReference"); + my $fund = $funder->{funders}; + my $grant = $funder->{grant}; + my $others = $dataobj->get_value("funders_other_funder"); + if ($fund eq "other") { + foreach my $other(@$others) { + $author->appendChild($xml->create_data_element("funderName", $other)); + } + } else { + $author->appendChild($xml->create_data_element("funderName", $fund)); + } + + $author->appendChild($xml->create_data_element("awardNumber", $grant)); + + $thefunders->appendChild($author); + } + return $thefunders; + } + return undef; +}; diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm deleted file mode 100644 index 24eeb02..0000000 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ /dev/null @@ -1,295 +0,0 @@ -=head1 NAME -EPrints::Plugin::Export::DataCiteXML - -=cut - -package EPrints::Plugin::Export::DataCiteXML; -use EPrints::Plugin::Export::Feed; - -@ISA = ('EPrints::Plugin::Export::Feed'); - -use strict; - -use Data::Dumper; -sub new -{ - my ($class, %opts) = @_; - - my $self = $class->SUPER::new(%opts); - - $self->{name} = 'Data Cite XML'; - $self->{accept} = [ 'dataobj/eprint']; - $self->{visible} = 'all'; - $self->{suffix} = '.xml'; - $self->{mimetype} = 'application/xml; charset=utf-8'; - $self->{arguments}->{doi} = undef; - - return $self; -} - -sub output_dataobj -{ - my ($self, $dataobj, %opts) = @_; - - my $repo = $self->{repository}; - my $xml = $repo->xml; - - #reference the datacite schema from config - our $entry = $xml->create_element( "resource", - xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), - "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", - "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); - - #RM We pass in the DOI from Event::DataCite... or from --args on the cmd line - - # AH my $thisdoi = $opts{doi}; always returns undefined, even when DOI exists - # Ideally coining should NOT happen in this script but opts{doi} should have it - # but is always blank - my $thisdoi = $dataobj->get_value("id_number"); - #RM coin a DOI if either - # - not come via event or - # - no doi arg passed in via cmd_line - # ie when someone exports DataCiteXML from the Action tab - if(!defined $thisdoi){ - #nick the coining sub from event plugin - my $event = $repo->plugin("Event::DataCiteEvent"); - $thisdoi = $event->coin_doi($repo, $dataobj); - #coin_doi may return an event error code if no prefix present assume this is the case - my $prefix = $repo->get_conf( "datacitedoi", "prefix"); - return $thisdoi if($thisdoi !~ /^$prefix/); - } - $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); - - foreach my $field ( $dataobj->{dataset}->get_fields ) - { - my $mapping_fn = "datacite_mapping_".$field->get_name; - if($repo->can_call($mapping_fn) && $dataobj->exists_and_set($field->get_name)){ - my $mapped_element = $repo->call( $mapping_fn, $xml, $dataobj, $repo, $dataobj->value($field->get_name) ); - $entry->appendChild( $mapped_element ) if(defined $mapped_element); - } - } - - #RM extract licens from documents by some means: - my $license = undef; - if( $repo->can_call( "datacite_license" ) ){ - $license = $repo->call( "datacite_license", $xml, $entry, $dataobj, $repo ); - } - - - ########################################################################################################################################################################## - ################################# From here on in you can redefine datacite_ampping_[fieldname] sub routines in lib/cfg.d/zzz_datacite_mapping.pl ####################### - - - if ($dataobj->exists_and_set( "title" )) { - my $titles = $xml->create_element( "titles" ); - $titles->appendChild( $xml->create_data_element( "title", $dataobj->render_value( "title" ), "xml:lang"=>"en-us" ) ); - - $entry->appendChild( $titles ); - } - $entry->appendChild( $xml->create_data_element( "publisher", $repo->get_conf( "datacitedoi", "publisher") ) ); - - if ($dataobj->exists_and_set( "date" )) { - $dataobj->get_value( "date" ) =~ /^([0-9]{4})/; - $entry->appendChild( $xml->create_data_element( "publicationYear", $1 ) ) if $1; - } - - # AH 03/11/2016: mapping the data in the EPrints keywords field to a tag. - # If the keywords field is a multiple - and therefore, an array ref - then - # iterate through array and make each array element its own element. - # Otherwise, if the keywords field is a single block of text, take the string - # and make it a single element - if ($dataobj->exists_and_set( "keywords" )) { - my $subjects = $xml->create_element( "subjects" ); - my $keywords = $dataobj->get_value("keywords"); - if(ref($keywords) eq "ARRAY") { - foreach my $keyword ( @$keywords ) { - $subjects->appendChild( $xml->create_data_element( "subject", $keyword, "xml:lang"=>"en-us") ); - } - - $entry->appendChild( $subjects ); - } else { - $subjects->appendChild( $xml->create_data_element( "subject", $keywords, "xml:lang"=>"en-us") ); - $entry->appendChild( $subjects ); - } - } - - # AH 16/12/2016: commenting out the creation of the element. This is because the - # DataCite 4.0 Schema requires a contributorType attribute, which needs to be mapped. According to - # https://schema.datacite.org/meta/kernel-4.0/doc/DataCite-MetadataKernel_v4.0.pdf (page 16), there - # is a controlled list of contributorType options and it would be advisable to alter the - # Recollect workflow to make use of this controlled list (e.g. a namedset of approved values) - # and then map the values from this field to the XML found below. - # Note: if you do not supply a contributorType, the coin DOI process will fail - # because the contributorType attribute is mandatory. As such, and because the parent - # element is not mandatory, it will be commented out and not sent to DataCite pending further work from ULCC. - - # if( $dataobj->exists_and_set( "contributors" ) ) - # { - # - # my $contributors = $xml->create_element( "contributors" ); - # - # my $names = $dataobj->get_value( "contributors" ); - # - # foreach my $name ( @$names ) - # { - # my $author = $xml->create_element( "contributor" ); - # - # my $name_str = EPrints::Utils::make_name_string( $name->{name}); - # - # my $orcid = $name->{orcid}; - # - # my $typee = $name->{type}; - # my $family = $name->{name}->{family}; - # my $given = $name->{name}->{given}; - # - # if ($family eq '' && $given eq ''){ - # $contributors->appendChild( $author ); - # } else { - # $author->appendChild( $xml->create_data_element("contributorName", $name_str ) ); - # } - - - # if ($given eq '') { - # $contributors->appendChild( $author ); - # } else { - # $author->appendChild( $xml->create_data_element("givenName",$given ) ); - # } - # if ($family eq ''){ - # $contributors->appendChild( $author ); - # } else { - # $author->appendChild( $xml->create_data_element("familyName", $family ) ); - # } - # - # if ($dataobj->exists_and_set( "contributors_orcid" )) { - # my $orcid = $name->{orcid}; - # if ($orcid eq '') { - # $contributors->appendChild( $author ); - # } else { - # $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - # } - # } - # if ($dataobj->exists_and_set( "contributors_affiliation" )) { - # my $affiliation = $dataobj->get_value("contributors_affiliation"); - # $author->appendChild( $xml->create_data_element("affillation", $affiliation) ); - # } - # $contributors->appendChild( $author ); - # } - # $entry->appendChild( $contributors ); - # } - - #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called funderrr - if( $repo->can_call( "datacite_custom_funder" ) ){ - unless( defined( $repo->call( "datacite_custom_funder", $xml, $entry, $dataobj ) ) ){ - my $funders = $dataobj->get_value( "funders" ); - my $grant = $dataobj->get_value( "grant" ); - my $projects = $dataobj->get_value( "projects" ); - if ($dataobj->exists_and_set( "funders" )) { - my $thefunders = $xml->create_element( "funders" ); - foreach my $funder ( @$funders ){ - foreach my $project ( @$projects ){ - $thefunders->appendChild( $xml->create_data_element( "funderName", $funder) ); - $thefunders->appendChild( $xml->create_data_element( "awardNumber", $grant) ); - } - } - $entry->appendChild( $thefunders ); - } - } - } - - if ($dataobj->exists_and_set( "repo_link" )) { - -# RelatedIdentifier should be more careful in identifying the relationType so we will revisit after more input from the DataCite community probably for milestone 1.3 - -# #If we have a custom override -# if( $repo->can_call( "datacite_custom_repo_link" ) ){ -# my $relatedIdentifiers = $repo->call( "datacite_custom_repo_link", $xml, $entry, $dataobj ); -# $entry->appendChild( $relatedIdentifiers ) if (defined $relatedIdentifiers); -# #default action -# }else{ -# my $theurls = $dataobj->get_value( "repo_link" ); -# my $relatedIdentifiers = $xml->create_element( "relatedIdentifiers" ); -# foreach my $theurl ( @$theurls ) { -# my $linkk = $theurl->{link}; -# if (!$linkk eq ''){ -# $relatedIdentifiers->appendChild( $xml->create_data_element( "relatedIdentifier", $linkk, relatedIdentifierType=>"URL", relationType=>"IsReferencedBy" ) ); -# } -# $entry->appendChild( $relatedIdentifiers ); -# } -# } - } - - if ($dataobj->exists_and_set( "abstract" )) { - - my $abstract = $dataobj->get_value( "abstract" ); - my $description = $xml->create_element( "descriptions" ); - - $description->appendChild( $xml->create_data_element( "description", $abstract, "xml:lang"=>"en-us", descriptionType=>"Abstract" ) ); - - if ($dataobj->exists_and_set( "collection_method" )) { - my $collection = $dataobj->get_value("collection_method"); - $description->appendChild( $xml->create_data_element("description", $collection, descriptionType=>"Methods")); - } - - if ($dataobj->exists_and_set( "provenance" )) { - my $processing = $dataobj->get_value("provenance"); - $description->appendChild( $xml->create_data_element("description", $processing, descriptionType=>"Methods")); - } - - $entry->appendChild( $description ); - } - - #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages - if( $repo->can_call( "datacite_custom_language" ) ){ - unless( defined( $repo->call( "datacite_custom_language", $xml, $entry, $dataobj ) ) ){ - if ($dataobj->exists_and_set( "language" )) { - my $lan = $dataobj->get_value( "language" ); - $entry->appendChild( $xml->create_data_element( "language", $lan) ); - } - } - } - - # AH 16/11/2016: rendering the geoLocations XML elements - # Note: the initial conditional checks to see if the geographic_cover - # metadata field exists and is set. This was done because geographic_cover - # is part of the z_recollect_metadata_profile.pl file within the Recollect - # plugin and many repositories make it a mandatory field in the workflow. - - if( $dataobj->exists_and_set( "geographic_cover" ) ) { - - #Create XML elements - my $geo_locations = $xml->create_element( "geoLocations" ); - my $geo_location = $xml->create_element( "geoLocation" ); - - # Get value of geographic_cover field and append to $geo_location XML element - my $geographic_cover = $dataobj->get_value( "geographic_cover" ); - $geo_location->appendChild( $xml->create_data_element("geoLocationPlace", $geographic_cover ) ); - - # Get values of bounding box - my $west = $dataobj->get_value( "bounding_box_west_edge" ); - my $east = $dataobj->get_value( "bounding_box_east_edge" ); - my $south = $dataobj->get_value( "bounding_box_south_edge" ); - my $north = $dataobj->get_value( "bounding_box_north_edge" ); - - # Check to see if $north, $south, $east, or $west values are defined - if (defined $north && defined $south && defined $east && defined $west ) { - # Created $geo_location_box XML element - my $geo_location_box = $xml->create_element( "geoLocationBox" ); - # If $long/lat is defined, created XML element with the appropriate value - $geo_location_box->appendChild( $xml->create_data_element( "westBoundLongitude", $west) ); - $geo_location_box->appendChild( $xml->create_data_element( "eastBoundLongitude", $east) ); - $geo_location_box->appendChild( $xml->create_data_element( "southBoundLatitude", $south) ); - $geo_location_box->appendChild( $xml->create_data_element( "northBoundLatitude", $north) ); - # Append child $geo_location_box XML element to parent $geo_location XML element - $geo_location->appendChild( $geo_location_box ); - } - # Append child $geo_location XML element to parent $geo_locations XML element - $geo_locations->appendChild( $geo_location ); - # Append $geo_locations XML element to XML document - $entry->appendChild( $geo_locations ); - } - - return ''."\n".$xml->to_string($entry); -} - - -1; diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm new file mode 120000 index 0000000..32f29e5 --- /dev/null +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -0,0 +1 @@ +/home/thething/eprints/relrdgdr/eprints3/lib/epm/DataCiteDoi/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm \ No newline at end of file From c5454f766dfaabe92f4c2534c0cf525e82ab2f9a Mon Sep 17 00:00:00 2001 From: Borys Feldman Date: Tue, 19 Sep 2017 18:16:31 +0100 Subject: [PATCH 37/42] rationalisation of field render code --- .../EPrints/Plugin/Export/DataCiteXML.pm | 140 +++++++++++++++++- 1 file changed, 139 insertions(+), 1 deletion(-) mode change 120000 => 100644 lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm deleted file mode 120000 index 32f29e5..0000000 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ /dev/null @@ -1 +0,0 @@ -/home/thething/eprints/relrdgdr/eprints3/lib/epm/DataCiteDoi/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm \ No newline at end of file diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm new file mode 100644 index 0000000..a97d420 --- /dev/null +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -0,0 +1,139 @@ +=head1 NAME +EPrints::Plugin::Export::DataCiteXML +=cut + +package EPrints::Plugin::Export::DataCiteXML; +use EPrints::Plugin::Export::Feed; + +@ISA = ('EPrints::Plugin::Export::Feed'); + +use strict; + +use Data::Dumper; +sub new +{ + my ($class, %opts) = @_; + + my $self = $class->SUPER::new(%opts); + + $self->{name} = 'Data Cite XML'; + $self->{accept} = [ 'dataobj/eprint']; + $self->{visible} = 'all'; + $self->{suffix} = '.xml'; + $self->{mimetype} = 'application/xml; charset=utf-8'; + $self->{arguments}->{doi} = undef; + + return $self; +} + +sub output_dataobj +{ + my ($self, $dataobj, %opts) = @_; + + my $repo = $self->{repository}; + my $xml = $repo->xml; + + #reference the datacite schema from config + our $entry = $xml->create_element( "resource", + xmlns=> $repo->get_conf( "datacitedoi", "xmlns"), + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", + "xsi:schemaLocation" => $repo->get_conf( "datacitedoi", "schemaLocation")); + + #RM We pass in the DOI from Event::DataCite... or from --args on the cmd line + + # AH my $thisdoi = $opts{doi}; always returns undefined, even when DOI exists + # Ideally coining should NOT happen in this script but opts{doi} should have it + # but is always blank + my $thisdoi = $dataobj->get_value("id_number"); + #RM coin a DOI if either + # - not come via event or + # - no doi arg passed in via cmd_line + # ie when someone exports DataCiteXML from the Action tab + if(!defined $thisdoi){ + #nick the coining sub from event plugin + my $event = $repo->plugin("Event::DataCiteEvent"); + $thisdoi = $event->coin_doi($repo, $dataobj); + #coin_doi may return an event error code if no prefix present assume this is the case + my $prefix = $repo->get_conf( "datacitedoi", "prefix"); + return $thisdoi if($thisdoi !~ /^$prefix/); + } + $entry->appendChild( $xml->create_data_element( "identifier", $thisdoi , identifierType=>"DOI" ) ); + + foreach my $field ( $dataobj->{dataset}->get_fields ) + { + my $mapping_fn = "datacite_mapping_".$field->get_name; + if($repo->can_call($mapping_fn) && $dataobj->exists_and_set($field->get_name)){ + my $mapped_element = $repo->call( $mapping_fn, $xml, $dataobj, $repo, $dataobj->value($field->get_name) ); + print STDERR "MAPPED E: ".$mapped_element."\n"; + $entry->appendChild( $mapped_element ) if(defined $mapped_element); + } + } + + #RM extract licens from documents by some means: + # my $license = undef; + # if( $repo->can_call( "datacite_license" ) ){ + # $license = $repo->call( "datacite_license", $xml, $entry, $dataobj, $repo ); + # } + + + ########################################################################################################################################################################## + ################################# From here on in you can redefine datacite_ampping_[fieldname] sub routines in lib/cfg.d/zzz_datacite_mapping.pl ####################### + + + + + # AH 03/11/2016: mapping the data in the EPrints keywords field to a tag. + # If the keywords field is a multiple - and therefore, an array ref - then + # iterate through array and make each array element its own element. + # Otherwise, if the keywords field is a single block of text, take the string + # and make it a single element + + + # AH 16/12/2016: commenting out the creation of the element. This is because the + # DataCite 4.0 Schema requires a contributorType attribute, which needs to be mapped. According to + # https://schema.datacite.org/meta/kernel-4.0/doc/DataCite-MetadataKernel_v4.0.pdf (page 16), there + # is a controlled list of contributorType options and it would be advisable to alter the + # Recollect workflow to make use of this controlled list (e.g. a namedset of approved values) + # and then map the values from this field to the XML found below. + # Note: if you do not supply a contributorType, the coin DOI process will fail + # because the contributorType attribute is mandatory. As such, and because the parent + # element is not mandatory, it will be commented out and not sent to DataCite pending further work from ULCC. + + + + + + + + + if ($dataobj->exists_and_set( "repo_link" )) { + + + + } + + + + # #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages + # if( $repo->can_call( "datacite_custom_language" ) ){ + # unless( defined( $repo->call( "datacite_custom_language", $xml, $entry, $dataobj ) ) ){ + # if ($dataobj->exists_and_set( "language" )) { + # my $lan = $dataobj->get_value( "language" ); + # $entry->appendChild( $xml->create_data_element( "language", $lan) ); + # } + # } + # } + + # AH 16/11/2016: rendering the geoLocations XML elements + # Note: the initial conditional checks to see if the geographic_cover + # metadata field exists and is set. This was done because geographic_cover + # is part of the z_recollect_metadata_profile.pl file within the Recollect + # plugin and many repositories make it a mandatory field in the workflow. + + + + return ''."\n".$xml->to_string($entry); +} + + +1; From 4808185152ec72accfc3cda124cacc3ca297bf61 Mon Sep 17 00:00:00 2001 From: Borys Feldman Date: Tue, 19 Sep 2017 18:19:14 +0100 Subject: [PATCH 38/42] remove uneeded file --- lib/cfg.d/zzz_datacite_mapping.pl | 83 ------------------------------- 1 file changed, 83 deletions(-) delete mode 100644 lib/cfg.d/zzz_datacite_mapping.pl diff --git a/lib/cfg.d/zzz_datacite_mapping.pl b/lib/cfg.d/zzz_datacite_mapping.pl deleted file mode 100644 index 491c928..0000000 --- a/lib/cfg.d/zzz_datacite_mapping.pl +++ /dev/null @@ -1,83 +0,0 @@ -#################################################### -# New architecture for print => datacite mapping -#################################################### - -#These first two both map to resourceType (and resourceTypeGeneral) the first is for pubs repos the second for data (but either can be used for ether f the eprint field is there) -$c->{datacite_mapping_type} = sub { - - my ( $xml, $dataobj, $repo, $value ) = @_; - - my $pub_resourceType = $repo->get_conf( "datacitedoi", "typemap", $value ); - if(defined $pub_resourceType){ - return $xml->create_data_element( "resourceType", $pub_resourceType->{'v'}, resourceTypeGeneral=>$pub_resourceType->{'a'}); - } - - return undef; -}; - -$c->{datacite_mapping_data_type} = sub { - - my ( $xml, $dataobj, $repo, $value ) = @_; - - return $xml->create_data_element( "resourceType", $value, resourceTypeGeneral=>$value); -}; - -$c->{datacite_mapping_creators} = sub { - - my ( $xml, $dataobj, $repo, $value ) = @_; - - my $creators = $xml->create_element( "creators" ); - - foreach my $name ( @$value ){ - my $author = $xml->create_element( "creator" ); - - my $name_str = EPrints::Utils::make_name_string( $name->{name}); - - my $family = $name->{name}->{family}; - my $given = $name->{name}->{given}; - my $orcid = $name->{orcid}; - - if ($family eq '' && $given eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("creatorName", $name_str ) ); - } - if ($given eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("givenName",$given ) ); - } - if ($family eq ''){ - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("familyName", $family ) ); - } - if ($dataobj->exists_and_set( "creators_orcid" )) { - - if ($orcid eq '') { - $creators->appendChild( $author ); - } else { - $author->appendChild( $xml->create_data_element("nameIdentifier", $orcid, schemeURI=>"http://orcid.org/", nameIdentifierScheme=>"ORCID" ) ); - } - } - - $creators->appendChild( $author ); - } - return $creators -}; - -=comment - -$c->{datacite_mapping_somefield} = sub { - - - my ( $xml, $dataobj, $repo, $value ) = @_; - - #Do the mapping/validation here.... - - return $xml #of somedescription - - -} - -=cut From 2cb2ba86d3316c5e7e0aef5b4db9feb246a052ee Mon Sep 17 00:00:00 2001 From: Borys Feldman Date: Tue, 19 Sep 2017 18:22:42 +0100 Subject: [PATCH 39/42] removing uneeded file --- lib/cfg.d/zz_datacite_mapping_overide.pl | 28 ------------------------ 1 file changed, 28 deletions(-) delete mode 100644 lib/cfg.d/zz_datacite_mapping_overide.pl diff --git a/lib/cfg.d/zz_datacite_mapping_overide.pl b/lib/cfg.d/zz_datacite_mapping_overide.pl deleted file mode 100644 index 7572748..0000000 --- a/lib/cfg.d/zz_datacite_mapping_overide.pl +++ /dev/null @@ -1,28 +0,0 @@ -$c->{datacite_mapping_funders} = sub { - - my($xml, $dataobj) = @_; - - if ($dataobj->exists_and_set("funders")) { - my $funders = $dataobj->get_value("funders"); - my $thefunders = $xml->create_element("fundingReferences"); - foreach my $funder(@$funders) { - my $author = $xml->create_element("fundingReference"); - my $fund = $funder->{funders}; - my $grant = $funder->{grant}; - my $others = $dataobj->get_value("funders_other_funder"); - if ($fund eq "other") { - foreach my $other(@$others) { - $author->appendChild($xml->create_data_element("funderName", $other)); - } - } else { - $author->appendChild($xml->create_data_element("funderName", $fund)); - } - - $author->appendChild($xml->create_data_element("awardNumber", $grant)); - - $thefunders->appendChild($author); - } - return $thefunders; - } - return undef; -}; From d5659f9a0a6e3753881047e722d6ad3f0cd37c78 Mon Sep 17 00:00:00 2001 From: Borys Feldman Date: Tue, 19 Sep 2017 18:27:08 +0100 Subject: [PATCH 40/42] updating Datacitexml file --- .../EPrints/Plugin/Export/DataCiteXML.pm | 63 +------------------ 1 file changed, 1 insertion(+), 62 deletions(-) diff --git a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm index a97d420..dbf5146 100644 --- a/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm +++ b/lib/plugins/EPrints/Plugin/Export/DataCiteXML.pm @@ -64,72 +64,11 @@ sub output_dataobj my $mapping_fn = "datacite_mapping_".$field->get_name; if($repo->can_call($mapping_fn) && $dataobj->exists_and_set($field->get_name)){ my $mapped_element = $repo->call( $mapping_fn, $xml, $dataobj, $repo, $dataobj->value($field->get_name) ); - print STDERR "MAPPED E: ".$mapped_element."\n"; $entry->appendChild( $mapped_element ) if(defined $mapped_element); } } - #RM extract licens from documents by some means: - # my $license = undef; - # if( $repo->can_call( "datacite_license" ) ){ - # $license = $repo->call( "datacite_license", $xml, $entry, $dataobj, $repo ); - # } - - - ########################################################################################################################################################################## - ################################# From here on in you can redefine datacite_ampping_[fieldname] sub routines in lib/cfg.d/zzz_datacite_mapping.pl ####################### - - - - - # AH 03/11/2016: mapping the data in the EPrints keywords field to a tag. - # If the keywords field is a multiple - and therefore, an array ref - then - # iterate through array and make each array element its own element. - # Otherwise, if the keywords field is a single block of text, take the string - # and make it a single element - - - # AH 16/12/2016: commenting out the creation of the element. This is because the - # DataCite 4.0 Schema requires a contributorType attribute, which needs to be mapped. According to - # https://schema.datacite.org/meta/kernel-4.0/doc/DataCite-MetadataKernel_v4.0.pdf (page 16), there - # is a controlled list of contributorType options and it would be advisable to alter the - # Recollect workflow to make use of this controlled list (e.g. a namedset of approved values) - # and then map the values from this field to the XML found below. - # Note: if you do not supply a contributorType, the coin DOI process will fail - # because the contributorType attribute is mandatory. As such, and because the parent - # element is not mandatory, it will be commented out and not sent to DataCite pending further work from ULCC. - - - - - - - - - if ($dataobj->exists_and_set( "repo_link" )) { - - - - } - - - - # #BF this is a can call which checks and calls for a sub inside the z_datacitedoi called laaanguages - # if( $repo->can_call( "datacite_custom_language" ) ){ - # unless( defined( $repo->call( "datacite_custom_language", $xml, $entry, $dataobj ) ) ){ - # if ($dataobj->exists_and_set( "language" )) { - # my $lan = $dataobj->get_value( "language" ); - # $entry->appendChild( $xml->create_data_element( "language", $lan) ); - # } - # } - # } - - # AH 16/11/2016: rendering the geoLocations XML elements - # Note: the initial conditional checks to see if the geographic_cover - # metadata field exists and is set. This was done because geographic_cover - # is part of the z_recollect_metadata_profile.pl file within the Recollect - # plugin and many repositories make it a mandatory field in the workflow. - +####### From here on in you can redefine datacite_ampping_[fieldname] sub routines in lib/cfg.d/zzz_datacite_mapping.pl ####################### return ''."\n".$xml->to_string($entry); From 5a2ab4dbf2230e47256b4578a6ff12a163388179 Mon Sep 17 00:00:00 2001 From: Rory McNicholl Date: Wed, 20 Sep 2017 16:30:10 +0100 Subject: [PATCH 41/42] updated epmi --- DataCiteDoi.epmi | 2236 +--------------------------------------------- 1 file changed, 41 insertions(+), 2195 deletions(-) diff --git a/DataCiteDoi.epmi b/DataCiteDoi.epmi index b428993..626d016 100644 --- a/DataCiteDoi.epmi +++ b/DataCiteDoi.epmi @@ -1,2244 +1,89 @@ - + DataCiteDoi http://clean.ep.devorkin:8082/id/epm/DataCiteDoi - epm/DataCiteDoi/cfg/cfg.d/z_datacitedoi.pl - text/plain - 0c377ff85542d00cb774d1ec0844a21d - MD5 - 4983 - I0VuYWJsZSB0aGUgcGx1Z2luCiRjLT57cGx1Z2luc317IkV4cG9ydDo6RGF0YUNpdGVYTUwifXtw -YXJhbXN9e2Rpc2FibGV9ID0gMDsKJGMtPntwbHVnaW5zfXsiRXZlbnQ6OkRhdGFDaXRlRXZlbnQi -fXtwYXJhbXN9e2Rpc2FibGV9ID0gMDsKCiN3aGljaCBmaWVsZCBkbyB1c2UgZm9yIHRoZSBkb2kK -JGMtPntkYXRhY2l0ZWRvaX17ZXByaW50ZG9pZmllbGR9ID0gImlkX251bWJlciI7CgojV2hlbiBz -aG91bGQgeW91IHJlZ2lzdGVyL3VwZGF0ZSBkb2kgaW5mby4KJGMtPntkYXRhY2l0ZWRvaX17ZXBy -aW50c3RhdHVzfSA9IHtpbmJveD0+MCxidWZmZXI9PjEsYXJjaGl2ZT0+MSxkZWxldGlvbj0+MH07 -Cgojc2V0IHRoZXNlICh5b3Ugd2lsbCBnZXQgdGhlIGZyb20gZGF0YSBzaXRlKQojIGRvaSA9IHtw -cmVmaXh9L3tyZXBvaWR9L3tlcHJpbnRpZH0KJGMtPntkYXRhY2l0ZWRvaX17cHJlZml4fSA9ICIx -MC41MDcyIjsKJGMtPntkYXRhY2l0ZWRvaX17cmVwb2lkfSA9ICRjLT57aG9zdH07CiRjLT57ZGF0 -YWNpdGVkb2l9e2FwaXVybH0gPSAiaHR0cHM6Ly90ZXN0LmRhdGFjaXRlLm9yZy9tZHMvIjsKJGMt -PntkYXRhY2l0ZWRvaX17dXNlcn0gPSAiVVNFUiI7CiRjLT57ZGF0YWNpdGVkb2l9e3Bhc3N9ID0g -IlBBU1MiOwoKIyBkYXRhY2l0ZSByZXF1aXJlcyBhIFB1Ymxpc2hlciAKIyBUaGUgbmFtZSBvZiB0 -aGUgZW50aXR5IHRoYXQgaG9sZHMsIGFyY2hpdmVzLCBwdWJsaXNoZXMsIAojIHByaW50cywgZGlz -dHJpYnV0ZXMsIHJlbGVhc2VzLCBpc3N1ZXMsIG9yIHByb2R1Y2VzIHRoZSAKIyByZXNvdXJjZS4g -VGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHVzZWQgdG8gZm9ybXVsYXRlIHRoZSAKIyBjaXRhdGlvbiwg -c28gY29uc2lkZXIgdGhlIHByb21pbmVuY2Ugb2YgdGhlIHJvbGUuCiMgZWcgV29ybGQgRGF0YSBD -ZW50ZXIgZm9yIENsaW1hdGUgKFdEQ0MpOyAJCiRjLT57ZGF0YWNpdGVkb2l9e3B1Ymxpc2hlcn0g -PSAiRXByaW50cyBSZXBvIjsKCiMgTmFtZXNwYWNlIGFuZCBsb2NhdGlvbiBmb3IgZGF0YWNpdGUg -WE1MIHNjaGVtYQojIGZlZWwgZnJlZSB0byB1cGRhdGUsIHRob3VnaCBubyBndWFyYW50ZWVzIGl0 -J2xsIGJlIGFjY2VwdGVkIGlmIHlvdSBkbwokYy0+e2RhdGFjaXRlZG9pfXt4bWxuc30gPSAiaHR0 -cDovL2RhdGFjaXRlLm9yZy9zY2hlbWEva2VybmVsLTIuMiI7CiRjLT57ZGF0YWNpdGVkb2l9e3Nj -aGVtYUxvY2F0aW9ufSA9ICRjLT57ZGF0YWNpdGVkb2l9e3htbG5zfS4iIGh0dHA6Ly9zY2hlbWEu -ZGF0YWNpdGUub3JnL21ldGEva2VybmVsLTIuMi9tZXRhZGF0YS54c2QiOwoKIyBuZWVkIHRvIG1h -cCBlcHJpbnQgdHlwZSAoYXJ0aWNsZSwgZGF0YXNldCBldGMpIHRvIFJlc291cmNlVHlwZQojIENv -bnRyb2xlZCBsaXN0IGh0dHA6Ly9zY2hlbWEuZGF0YWNpdGUub3JnL21ldGEva2VybmVsLTIuMi9k -b2MvRGF0YUNpdGUtTWV0YWRhdGFLZXJuZWxfdjIuMi5wZGYKIyB3aGVyZSB2IGlzIHRoZSBSZXNv -dXJjZVR5cGUgYW5kIGEgaXMgdGhlIHJlc291cmNlVHlwZUdlbmVyYWwKJGMtPntkYXRhY2l0ZWRv -aX17dHlwZW1hcH17YXJ0aWNsZX0gPSB7dj0+J0FydGljbGUnLGE9PidUZXh0J307CiRjLT57ZGF0 -YWNpdGVkb2l9e3R5cGVtYXB9e2Jvb2tfc2VjdGlvbn0gPSB7dj0+J0Jvb2tTZWN0aW9uJyxhPT4n -VGV4dCd9OwokYy0+e2RhdGFjaXRlZG9pfXt0eXBlbWFwfXttb25vZ3JhcGh9ID0ge3Y9PidNb25v -Z3JhcGgnLGE9PidUZXh0J307CiRjLT57ZGF0YWNpdGVkb2l9e3R5cGVtYXB9e3RoZXNpc30gPSB7 -dj0+J1RoZXNpcycsYT0+J1RleHQnfTsKJGMtPntkYXRhY2l0ZWRvaX17dHlwZW1hcH17Ym9va30g -PSB7dj0+J0Jvb2snLGE9PidUZXh0J307CiRjLT57ZGF0YWNpdGVkb2l9e3R5cGVtYXB9e3BhdGVu -dH0gPSB7dj0+J1BhdGVudCcsYT0+J1RleHQnfTsKJGMtPntkYXRhY2l0ZWRvaX17dHlwZW1hcH17 -YXJ0ZWZhY3R9ID0ge3Y9PidBcnRlZmFjdCcsYT0+J1BoeXNpY2FsT2JqZWN0J307CiRjLT57ZGF0 -YWNpdGVkb2l9e3R5cGVtYXB9e3BlcmZvcm1hbmNlfSA9IHt2PT4nUGVyZm9ybWFuY2UnLGE9PidF -dmVudCd9OwokYy0+e2RhdGFjaXRlZG9pfXt0eXBlbWFwfXtjb21wb3NpdGlvbn0gPSB7dj0+J0Nv -bXBvc2l0aW9uJyxhPT4nU291bmQnfTsKJGMtPntkYXRhY2l0ZWRvaX17dHlwZW1hcH17aW1hZ2V9 -ID0ge3Y9PidJbWFnZScsYT0+J0ltYWdlJ307CiRjLT57ZGF0YWNpdGVkb2l9e3R5cGVtYXB9e2V4 -cGVyaW1lbnR9ID0ge3Y9PidFeHBlcmltZW50JyxhPT4nVGV4dCd9OwokYy0+e2RhdGFjaXRlZG9p -fXt0eXBlbWFwfXt0ZWFjaGluZ19yZXNvdXJjZX0gPSB7dj0+J1RlYWNoaW5nUmVzb3Vyc2UnLGE9 -PidJbnRlcmFjdGl2ZVJlc291cmNlJ307CiRjLT57ZGF0YWNpdGVkb2l9e3R5cGVtYXB9e290aGVy -fSA9IHt2PT4nTWlzYycsYT0+J0NvbGxlY3Rpb24nfTsKJGMtPntkYXRhY2l0ZWRvaX17dHlwZW1h -cH17ZGF0YXNldH0gPSB7dj0+J0RhdGFzZXQnLGE9PidEYXRhc2V0J307CiRjLT57ZGF0YWNpdGVk -b2l9e3R5cGVtYXB9e2F1ZGlvfSA9IHt2PT4nQXVkaW8nLGE9PidTb3VuZCd9OwokYy0+e2RhdGFj -aXRlZG9pfXt0eXBlbWFwfXt2aWRlb30gPSB7dj0+J1ZpZGVvJyxhPT4nRmlsbSd9OwoKIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMgRE9JIHN5bnRheCBjb25maWcgIyMjIwojIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgU2V0IGNvbmZpZyBvZiBET0kgZGVsaW1pdGVycyAKIyBG -ZWVsIGZyZWUgdG8gY2hhbmdlLCBidXQgdGhleSBtdXN0IGNvbmZvcm0gdG8gRE9JIHN5bnRheAoj -IElmIG5vdCBzZXQgd2lsbCBkZWZhdWx0IHRvIHByZWZpeC9yZXBvaWQvaWQgdGhlIGV4YW1wbGUg -YmVsb3cgZ2l2ZXMgcHJlZml4L3JlcG9pZC5pZAokYy0+e2RhdGFjaXRlZG9pfXtkZWxpbWl0ZXJz -fSA9IFsiLyIsIi4iXTsKCiMgSWYgc2V0LCBwbHVnaW4gd2lsbCBhdHRlbXB0IHRvIHJlZ2lzdGVy -IHdoYXQgaXMgZm91bmQgaW4gdGhlIEVQIERPSSBmaWVsZCAoJGMtPntkYXRhY2l0ZWRvaX17ZXBy -aW50ZG9pZmllbGR9KQojIFdpbGwgb25seSB3b3JrIGlmIHdoYXQgaXMgZm91bmQgYWRoZXJlcyB0 -byBET0kgc3ludGF4IHJ1bGVzIChvYnZpb3Vsc3kpCiRjLT57ZGF0YWNpdGVkb2l9e2FsbG93X2N1 -c3RvbV9kb2l9ID0gMDsKCiNEYXRhY2l0ZSByZWNvbW1lbmQgZGlnaXRzIG9mIGxlbmd0aCA4LTEw -IHNldCB0aGlzIHBhcmFtIHRvIHBhZCB0aGUgaWQgdG8gcmVxdWlyZWQgbGVuZ3RoCiRjLT57ZGF0 -YWNpdGVkb2l9e3plcm9fcGFkZGluZ30gPSA4OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjCiMjIyBPdmVycmlkZSB3aGljaCBVUkwgZ2V0cyByZWdpc3RlcmVkICMj -IwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiNPbmx5IHVzZWZ1 -bCBmb3IgdGVzdGluZyBmcm9tICJ3cm9uZyIgZG9tYWluIChlZyBhbiB1bnJlZ2lzdGVyZWQgdGVz -dCBzZXJ2ZXIpIHNob3VsZCBiZSB1bmRlZiBmb3Igbm9ybWFsIG9wZXJhdGlvbgokYy0+e2RhdGFj -aXRlZG9pfXtvdmVycmlkZV91cmx9ID0gdW5kZWY7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IwojIyMjIyBXaGVuIHRvIGNvaW4gPyAjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoK -I0lmIGF1dG9fY29pbiBpcyBzZXQgRE9JcyB3aWxsIGJlIG1pbnRlZCBvbiBTdGF0dXMgY2hhbmdl -IChwcm92aWRlZCBhbGwgZWxzZSBpcyB3ZWxsKQokYy0+e2RhdGFjaXRlZG9pfXthdXRvX2NvaW59 -ID0gMDsKI0lmIGFjdGlvbl9jb2luIGlzIHNldCB0aGVuIGEgYnV0dG9uIHdpbGwgYmUgZGlzcGxh -eWVkIHVuZGVyIGFjdGlvbiB0YWIgKGZvciBzdGFmZikgdG8gbWludCBET0lzIG9uIGFuIGFkaG9j -IGJhc2lzCiRjLT57ZGF0YWNpdGVkb2l9e2FjdGlvbl9jb2lufSA9IDE7CgojIE5CIHNldHRpbmcg -YXV0b19jb2luIHJlbmRlcnMgYWN0aW9uIGNvaW4gcmVkdW5kYW50IGFzIG9ubHkgcHVibGlzaGVk -IGl0ZW1zIGNhbiBiZSByZWdpc3RlcmVkCgojIyMjIyMjIEZvcm1lcmx5IGluIGNmZy5kL2RhdGFj -aXRlX2NvcmUucGwgIyMjIyMjIyMjCgojIEluY2x1ZGluZyBkYXRhY2l0ZV9jb3JlLnBsIGJlbG93 -IGFzIHdlIGNhbiBtYWtlIHNvbWUgdXNlZnVsIGRlY2lzaW9ucyBiYXNlZCBvbiB0aGUgYWJvdmUg -Y29uZmlnLgoKIyMgQWRkcyB0aGUgbWludGluZyBwbHVnaW4gdG8gdGhlIEVQX1RSSUdHRVJfU1RB -VFVTX0NIQU5HRQppZigkYy0+e2RhdGFjaXRlZG9pfXthdXRvX2NvaW59KXsKCSRjLT5hZGRfZGF0 -YXNldF90cmlnZ2VyKCAiZXByaW50IiwgRVBfVFJJR0dFUl9TVEFUVVNfQ0hBTkdFICwgc3ViIHsK -ICAgICAgIG15ICggJXBhcmFtcyApID0gQF87CgogICAgICAgbXkgJHJlcG9zaXRvcnkgPSAlcGFy -YW1zLT57cmVwb3NpdG9yeX07CiAKICAgICAgIHJldHVybiB1bmRlZiBpZiAoIWRlZmluZWQgJHJl -cG9zaXRvcnkpOwoJCgkJaWYgKGRlZmluZWQgJXBhcmFtcy0+e2RhdGFvYmp9KSB7CgkJCW15ICRk -YXRhb2JqID0gJXBhcmFtcy0+e2RhdGFvYmp9OwoJCQlteSAkZXByaW50X2lkID0gJGRhdGFvYmot -PmlkOwoJCQkkcmVwb3NpdG9yeS0+ZGF0YXNldCggImV2ZW50X3F1ZXVlIiApLT5jcmVhdGVfZGF0 -YW9iaih7CgkJCQlwbHVnaW5pZCA9PiAiRXZlbnQ6OkRhdGFDaXRlRXZlbnQiLAoJCQkJYWN0aW9u -ID0+ICJkYXRhY2l0ZV9kb2kiLAoJCQkJcGFyYW1zID0+IFskZGF0YW9iai0+aW50ZXJuYWxfdXJp -XSwKCQkJfSk7CiAgICAgCX0KIAoJfSk7Cn0KCiMgQWN0aXZhdGUgYW4gYWN0aW9uIGJ1dHRvbiwg -dGhlIHBsdWdpbiBmb3Igd2hjaWggaXMgYXQKIyAvcGx1Z2lucy9FUHJpbnRzL1BsdWdpbi9TY3Jl -ZW4vRVByaW50L1N0YWZmL0NvaW5ET0kucG0KaWYoJGMtPntkYXRhY2l0ZWRvaX17YWN0aW9uX2Nv -aW59KXsKIAkkYy0+e3BsdWdpbnN9eyJTY3JlZW46OkVQcmludDo6U3RhZmY6OkNvaW5ET0kifXtw -YXJhbXN9e2Rpc2FibGV9ID0gMDsKfQoK - - - + document lang/en/phrases/coinDOI.xml application/xml ea8da6c0e471cea13c5b573d115cbbe8 MD5 641 - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgc3RhbmRhbG9uZT0ibm8i -ID8+CjwhRE9DVFlQRSBwaHJhc2VzIFNZU1RFTSAiZW50aXRpZXMuZHRkIj4KCjxlcHA6cGhyYXNl -cyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6ZXBwPSJodHRwOi8v -ZXByaW50cy5vcmcvZXAzL3BocmFzZSI+CiAgICA8ZXBwOnBocmFzZSBpZD0iUGx1Z2luL1NjcmVl -bi9FUHJpbnQvU3RhZmYvQ29pbkRPSTphY3Rpb246Y29pbmRvaTpkZXNjcmlwdGlvbiI+VGhpcyB3 -aWxsIGFkZCBhIGNvaW4tRE9JIGV2ZW50IHRvIHRoZSBldmVudCBxdWV1ZSAoaS5lLiBXaWxsIG5v -dCBoYXBwZW4gaW1tZWRpYXRlbHkpPC9lcHA6cGhyYXNlPgogICAgPGVwcDpwaHJhc2UgaWQ9IlBs -dWdpbi9TY3JlZW4vRVByaW50L1N0YWZmL0NvaW5ET0k6YWN0aW9uOmNvaW5kb2k6dGl0bGUiPkNv -aW4gRE9JPC9lcHA6cGhyYXNlPgogICAgPGVwcDpwaHJhc2UgaWQ9IlBsdWdpbi9TY3JlZW4vRVBy -aW50L1N0YWZmL0NvaW5ET0k6Y29pbmluZ2RvaSI+VGhpcyBpdGVtIHdpbGwgaGF2ZSBhIERPSSBj -b2luZWQgd2hlbiB0aGUgaW5kZXhlciBnZXRzIGFyb3VuZCB0byBpdC48L2VwcDpwaHJhc2U+Cgo8 -L2VwcDpwaHJhc2VzPgo= - + document + static/images/epm/datacitedoi.png + image/png + 14e9e2be0a73f452533488634aaea66e + MD5 + 101504 + + + document plugins/EPrints/Plugin/Event/DataCiteEvent.pm text/plain - 0dad25fd1105d06d4da2560feea39545 + 3fe07ce4a3a6e765b647b16118cc23f2 MD5 - 5220 - PWhlYWQxIE5BTUUKCkVQcmludHM6OlBsdWdpbjo6RXZlbnQ6OkRhdGFDaXRlRXZlbnQKCj1jdXQK -CnBhY2thZ2UgRVByaW50czo6UGx1Z2luOjpFdmVudDo6RGF0YUNpdGVFdmVudDsKIAp1c2UgRVBy -aW50czo6UGx1Z2luOjpFdmVudDsKdXNlIExXUDsKdXNlIENyeXB0OjpTU0xlYXk7CnVzZSBIVFRQ -OjpIZWFkZXJzOjpVdGlsOwoKQElTQSA9IHF3KCBFUHJpbnRzOjpQbHVnaW46OkV2ZW50ICk7CiAK -c3ViIGRhdGFjaXRlX2RvaQogewogICAgICAgbXkoICRzZWxmLCAkZGF0YW9iaikgPSBAXzsKCgkJ -bXkgJHJlcG9zaXRvcnkgPSAkc2VsZi0+cmVwb3NpdG9yeSgpOwoJCgkJI0NoZWNrIG9iamVjdCBz -dGF0dXMgZmlyc3QuLi4uIFRPRE8gTWFrZSB3b3JrIGZvciBkYXRhb2JqID09IGRvdW1lbnQgKGp1 -c3QgaW4gY2FzZSkKCQlteSAkc2hvdWxkZG9pID0gJHJlcG9zaXRvcnktPmdldF9jb25mKCAiZGF0 -YWNpdGVkb2kiLCAiZXByaW50c3RhdHVzIiwgICRkYXRhb2JqLT52YWx1ZSggImVwcmludF9zdGF0 -dXMiICkpOwkKCQkjQ2hlY2sgRG9pIFN0YXR1cwoJCWlmKCEkc2hvdWxkZG9pKXsgCgkJCSRyZXBv -c2l0b3J5LT5sb2coIkF0dGVtcHQgdG8gY29pbiBET0kgZm9yIGl0ZW0gdGhhdCBpcyBub3QgaW4g -dGhlIHJlcXVpcmVkIGFyZWEgKHNlZSBcJGMtPntkYXRhY2l0ZWRvaX0tPntlcHJpbnRzdGF0dXN9 -KSIpOwoJCQlyZXR1cm4gRVByaW50czo6Q29uc3Q6OkhUVFBfSU5URVJOQUxfU0VSVkVSX0VSUk9S -OwoJCX0JCgoJCW15ICR0aGlzZG9pID0gJHNlbGYtPmNvaW5fZG9pKCRyZXBvc2l0b3J5LCRkYXRh -b2JqKTsKCQkjY29pbl9kb2kgbWF5IHJldHVybiBhbiBldmVudCBlcnJvciBjb2RlIGlmIG5vIHBy -ZWZpeCBwcmVzZW50IGFzc3VtZSB0aGlzIGlzIHRoZSBjYXNlCgkJbXkgJHByZWZpeCA9ICRyZXBv -c2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgInByZWZpeCIpOwoJCWlmKCR0aGlzZG9p -ICF+IC9eJHByZWZpeC8pewoJCQkkcmVwb3NpdG9yeS0+bG9nKCJObyBwcmVmaXggZm9yIERPSSBj -b25maWd1cmVkPyIpOwoJCQlyZXR1cm4gRVByaW50czo6Q29uc3Q6OkhUVFBfSU5URVJOQUxfU0VS -VkVSX0VSUk9SOwoKCQl9CgoJCSNQYXNzIGRvaSBpbnRvIEV4cG9ydDo6RGF0YUNpdGVYTUwuLi4K -CQlteSAkeG1sID0gJGRhdGFvYmotPmV4cG9ydCggIkRhdGFDaXRlWE1MIiwgZG9pPT4kdGhpc2Rv -aSApOwoJCWlmKCR4bWwgPX4gL15cZCskLyl7ICNqdXN0IGEgbnVtYmVyPyBjb2luX2RvaSBoYXMg -cGFzc2VkIGJhY2sgYW4gZXJyb3IgY29kZSBwYXNzIGl0IG9uLi4uCgkJCSRyZXBvc2l0b3J5LT5s -b2coIkVycm9yIGNvZGUgcmV0dXJuZWQgYnkgRXhwb3J0OjpEYXRhQ2l0ZVhNTDogIi4keG1sKTsK -CQkJcmV0dXJuIEVQcmludHM6OkNvbnN0OjpIVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUjsKCQl9 -CgoJCSNwcmludCBTVERFUlIgIlhNTDogJHhtbFxuIjsKCQlteSAkdXJsID0gJHJlcG9zaXRvcnkt -PmdldF9jb25mKCAiZGF0YWNpdGVkb2kiLCAiYXBpdXJsIik7CgkJJHVybC49Ii8iIGlmKCR1cmwg -IX4gL1wvJC8pOyAjYXR0YWNoIHNsYXNoIGlmIGNvbmZpZyBoYXMgZm9yZ290dGVuCgkJbXkgJHVz -ZXJfbmFtZSA9ICRyZXBvc2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgInVzZXIiKTsK -CQlteSAkdXNlcl9wdyA9ICRyZXBvc2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgInBh -c3MiKTsKCQkKCQkjcmVnaXN0ZXIgbWV0YWRhdGE7CgkJbXkoJHJlc3BvbnNlX2NvbnRlbnQsICRy -ZXNwb25zZV9jb2RlKSA9ICBkYXRhY2l0ZV9yZXF1ZXN0KCJQT1NUIiwgJHVybC4ibWV0YWRhdGEi -LCAkdXNlcl9uYW1lLCAkdXNlcl9wdywgJHhtbCwgImFwcGxpY2F0aW9uL3htbDtjaGFyc2V0PVVU -Ri04Iik7CgkJaWYoJHJlc3BvbnNlX2NvZGUgIX4gLzIwKDF8MCkvKXsKCQkJJHJlcG9zaXRvcnkt -PmxvZygiTWV0YWRhdGEgcmVzcG9uc2UgZnJvbSBkYXRhY2l0ZSBhcGk6ICRyZXNwb25zZV9jb2Rl -OiAkcmVzcG9uc2VfY29udGVudCIpOwoJCQkkcmVwb3NpdG9yeS0+bG9nKCJCVFcgdGhlIFwkZG9p -IHdhczpcbiR0aGlzZG9pIik7CQoJCQlyZXR1cm4gRVByaW50czo6Q29uc3Q6OkhUVFBfSU5URVJO -QUxfU0VSVkVSX0VSUk9SOwoJCX0KCQkjcmVnaXN0ZXIgZG9pCgkJbXkgJHJlcG9fdXJsID0kZGF0 -YW9iai0+dXJpKCk7CgkJI1JNIHNwZWNpYWwgb3ZlcnJpZGUgdG8gYWxsb3cgdGVzdGluZyBmcm9t -ICJ3cm9uZyIgZG9tYWluCgkJaWYoZGVmaW5lZCAkcmVwb3NpdG9yeS0+Z2V0X2NvbmYoICJkYXRh -Y2l0ZWRvaSIsICJvdmVycmlkZV91cmwiKSl7CgkJCSRyZXBvX3VybCA9ICRyZXBvc2l0b3J5LT5n -ZXRfY29uZiggImRhdGFjaXRlZG9pIiwgIm92ZXJyaWRlX3VybCIpOwoJCQkkcmVwb191cmwuPSAk -ZGF0YW9iai0+aW50ZXJuYWxfdXJpOwoJCX0KIAkJbXkgJGRvaV9yZWcgPSAiZG9pPSR0aGlzZG9p -XG51cmw9Ii4kcmVwb191cmw7CgkJKCRyZXNwb25zZV9jb250ZW50LCAkcmVzcG9uc2VfY29kZSk9 -IGRhdGFjaXRlX3JlcXVlc3QoIlBPU1QiLCAkdXJsLiJkb2kiLCAkdXNlcl9uYW1lLCAkdXNlcl9w -dywgJGRvaV9yZWcsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgiKTsKCQlpZigkcmVzcG9uc2Vf -Y29kZSAgIX4gLzIwKDF8MCkvKXsKCQkJJHJlcG9zaXRvcnktPmxvZygiUmVnaXN0cmF0aW9uIHJl -c3BvbnNlIGZyb20gZGF0YWNpdGUgYXBpOiAkcmVzcG9uc2VfY29kZTogJHJlc3BvbnNlX2NvbnRl -bnQiKTsKCQkJJHJlcG9zaXRvcnktPmxvZygiQlRXIHRoZSBcJGRvaV9yZWcgd2FzOlxuJGRvaV9y -ZWciKTsKCQkJcmV0dXJuIEVQcmludHM6OkNvbnN0OjpIVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJP -UjsKCQl9CgoJCSNub3cgaXQgaXMgc2FmZSB0byBzZXQgRE9JIHZhbHVlLgoJCW15ICRlcHJpbnRk -b2lmaWVsZCA9ICRyZXBvc2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgImVwcmludGRv -aWZpZWxkIik7CgkJJGRhdGFvYmotPnNldF92YWx1ZSgkZXByaW50ZG9pZmllbGQsICR0aGlzZG9p -KTsKCQkkZGF0YW9iai0+Y29tbWl0KCk7CgkJI3N1Y2Nlc3MKCQlyZXR1cm4gdW5kZWY7Cn0KCgpz -dWIgZGF0YWNpdGVfcmVxdWVzdCB7CiAgbXkgKCRtZXRob2QsICR1cmwsICR1c2VyX25hbWUsICR1 -c2VyX3B3LCAkY29udGVudCwgJGNvbnRlbnRfdHlwZSkgPSBAXzsKCiAgIyBidWlsZCByZXF1ZXN0 -CiAgbXkgJGhlYWRlcnMgPSBIVFRQOjpIZWFkZXJzLT5uZXcoCiAgICAnQWNjZXB0JyAgPT4gJ2Fw -cGxpY2F0aW9uL3htbCcsCiAgICAnQ29udGVudC1UeXBlJyA9PiAkY29udGVudF90eXBlCiAgKTsK -ICBteSAkcmVxID0gSFRUUDo6UmVxdWVzdC0+bmV3KAogICAgJG1ldGhvZCA9PiAkdXJsLAogICAg -JGhlYWRlcnMsICRjb250ZW50CiAgKTsKICAkcmVxLT5hdXRob3JpemF0aW9uX2Jhc2ljKCR1c2Vy -X25hbWUsICR1c2VyX3B3KTsKCiAgIyBwYXNzIHJlcXVlc3QgdG8gdGhlIHVzZXIgYWdlbnQgYW5k -IGdldCBhIHJlc3BvbnNlIGJhY2sKICBteSAkdWEgPSBMV1A6OlVzZXJBZ2VudC0+bmV3OwogIG15 -ICRyZXMgPSAkdWEtPnJlcXVlc3QoJHJlcSk7CgogIHJldHVybiAoJHJlcy0+Y29udGVudCgpLCRy -ZXMtPmNvZGUoKSk7Cn0KCiNSTSBsZXRzIGRvIHRoZSBET0kgY29pbmluZyBzb21ld2hlcmUgKHJl -YXNvbmFibHkpIGFjY2Vzc2libGUgCnN1YiBjb2luX2RvaSB7CgogICAgICAgbXkoICRzZWxmLCAk -cmVwb3NpdG9yeSwgJGRhdGFvYmopID0gQF87CgoJI1JNIHplcm8gcGFkZHMgZXByaW50aWQgYXMg -cGVyIGNvbmZpZwoJbXkgJHpfcGFkID0gJHJlcG9zaXRvcnktPmdldF9jb25mKCAiZGF0YWNpdGVk -b2kiLCAiemVyb19wYWRkaW5nIikgfHwgMDsKCW15ICRpZCAgPSBzcHJpbnRmKCIlMCIuJHpfcGFk -LiJkIiwgJGRhdGFvYmotPmlkKTsKCSNDaGVjayBmb3IgY3VzdG9tIGRlbGltaXRlcnMKCW15ICgk -ZGVsaW0xLCAkZGVsaW0yKSA9IEB7JHJlcG9zaXRvcnktPmdldF9jb25mKCAiZGF0YWNpdGVkb2ki -LCAiZGVsaW1pdGVycyIpfTsKCSNkZWZhdWx0IHRvIHNsYXNoCgkkZGVsaW0xID0gIi8iIGlmKCFk -ZWZpbmVkICRkZWxpbTEpOwoJI3NlY29uZCBkZWZhdWx0cyB0byBmaXJzdAoJJGRlbGltMiA9ICRk -ZWxpbTEgaWYoIWRlZmluZWQgJGRlbGltMik7CgkjY29uc3RydWN0IHRoZSBET0kgc3RyaW5nCglt -eSAkcHJlZml4ID0gJHJlcG9zaXRvcnktPmdldF9jb25mKCAiZGF0YWNpdGVkb2kiLCAicHJlZml4 -Iik7CglteSAkdGhpc2RvaSA9ICRwcmVmaXguJGRlbGltMS4kcmVwb3NpdG9yeS0+Z2V0X2NvbmYo -ICJkYXRhY2l0ZWRvaSIsICJyZXBvaWQiKS4kZGVsaW0yLiRpZDsKCglteSAkZXByaW50ZG9pZmll -bGQgPSAkcmVwb3NpdG9yeS0+Z2V0X2NvbmYoICJkYXRhY2l0ZWRvaSIsICJlcHJpbnRkb2lmaWVs -ZCIpOwoJCgkjQ3VzdG9tIERPSVMKCSNpZiBET0kgZmllbGQgaXMgc2V0IGF0dGVtcHQgdG8gdXNl -IHRoYXQgaWYgY29uZmlnIGFsbG93cwoJaWYoJGRhdGFvYmotPmV4aXN0c19hbmRfc2V0KCAkZXBy -aW50ZG9pZmllbGQpICl7CgoJCSNpZiBjb25maWcgZG9lcyBub3QgYWxsb3cgLi4uIGJhaWwKCQlp -ZiggISRyZXBvc2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgImFsbG93X2N1c3RvbV9k -b2kiICkgKXsKCQkJJHJlcG9zaXRvcnktPmxvZygiRE9JIGlzIGFscmVhZHkgc2V0IGFuZCBjdXN0 -b20gb3ZlcnJpZGVzIGFyZSBkaXNhYWxsb3dlZCBieSBjb25maWciKTsKCQkJcmV0dXJuIEVQcmlu -dHM6OkNvbnN0OjpIVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUjsKCQl9CgkJI3dlIGFyZSBhbGxv -d2VkIChjaGVjayBwcmVmaXgganVzdCBpbiBjYXNlKQoJCSR0aGlzZG9pID0gJGRhdGFvYmotPmdl -dF92YWx1ZSggJGVwcmludGRvaWZpZWxkICk7CgkJaWYoJHRoaXNkb2kgIX4gL14kcHJlZml4Lyl7 -CgkJCSRyZXBvc2l0b3J5LT5sb2coIlByZWZpeCBkb2VzIG5vdCBtYXRjaCAoJHByZWZpeCkgZm9y -IGN1c3RvbSBET0k6ICR0aGlzZG9pIik7CgkJCSRkYXRhb2JqLT5zZXRfdmFsdWUoJGVwcmludGRv -aWZpZWxkLCAiIik7ICN1bnNldCB0aGUgYmFkIERPSSEhCgkJCSRkYXRhb2JqLT5jb21taXQoKTsK -CQkJcmV0dXJuIEVQcmludHM6OkNvbnN0OjpIVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUjsKCQl9 -I1dlJ2xsIGxlYXZlIERhdGFjaXRlIHRvIGRvIGFueSBmdXJ0aGVyIHN5bnRheCBjaGVja2luZyBl -dGMuLi4KCX0KCglyZXR1cm4gJHRoaXNkb2k7Cn0KMTsK - + 5213 + document plugins/EPrints/Plugin/Export/DataCiteXML.pm text/plain - d8736ebaba330e5aca52654ce4ab5f28 + 696d1ecb13af35cdf6cba01198219b30 MD5 - 4129 - PWhlYWQxIE5BTUUKCkVQcmludHM6OlBsdWdpbjo6RXhwb3J0OjpEYXRhQ2l0ZVhNTAoKPWN1dAoK -cGFja2FnZSBFUHJpbnRzOjpQbHVnaW46OkV4cG9ydDo6RGF0YUNpdGVYTUw7CnVzZSBFUHJpbnRz -OjpQbHVnaW46OkV4cG9ydDo6RmVlZDsKCkBJU0EgPSAoJ0VQcmludHM6OlBsdWdpbjo6RXhwb3J0 -OjpGZWVkJyk7Cgp1c2Ugc3RyaWN0OwoKc3ViIG5ldwp7CiAgICAgICAgbXkgKCRjbGFzcywgJW9w -dHMpID0gQF87CgogICAgICAgIG15ICRzZWxmID0gJGNsYXNzLT5TVVBFUjo6bmV3KCVvcHRzKTsK -CiAgICAgICAgJHNlbGYtPntuYW1lfSA9ICdEYXRhIENpdGUgWE1MJzsKICAgICAgICAkc2VsZi0+ -e2FjY2VwdH0gPSBbICdkYXRhb2JqL2VwcmludCddOwogICAgICAgICRzZWxmLT57dmlzaWJsZX0g -PSAnYWxsJzsKICAgICAgICAkc2VsZi0+e3N1ZmZpeH0gPSAnLnhtbCc7CiAgICAgICAgJHNlbGYt -PnttaW1ldHlwZX0gPSAnYXBwbGljYXRpb24veG1sOyBjaGFyc2V0PXV0Zi04JzsKIAkkc2VsZi0+ -e2FyZ3VtZW50c30tPntkb2l9ID0gdW5kZWY7CiAKICAgICAgcmV0dXJuICRzZWxmOwp9CgpzdWIg -b3V0cHV0X2RhdGFvYmoKewogICAgICAgIG15ICgkc2VsZiwgJGRhdGFvYmosICVvcHRzKSA9IEBf -OwoKIAkJbXkgJHJlcG8gPSAkc2VsZi0+e3JlcG9zaXRvcnl9OwogCQlteSAkeG1sID0gJHJlcG8t -PnhtbDsKCQkKCQkjcmVmZXJlbmNlIHRoZSBkYXRhY2l0ZSBzY2hlbWEgZnJvbSBjb25maWcKCQlt -eSAkZW50cnkgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggInJlc291cmNlIiwgCgkJCXhtbG5zPT4g -JHJlcG8tPmdldF9jb25mKCAiZGF0YWNpdGVkb2kiLCAieG1sbnMiKSwgCgkJCSJ4bWxuczp4c2ki -PT4iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLCAKCQkJInhzaTpz -Y2hlbWFMb2NhdGlvbiIgPT4gJHJlcG8tPmdldF9jb25mKCAiZGF0YWNpdGVkb2kiLCAic2NoZW1h -TG9jYXRpb24iKSk7IAoKCQkjUk0gV2UgcGFzcyBpbiB0aGUgRE9JIGZyb20gRXZlbnQ6OkRhdGFD -aXRlLi4uIG9yIGZyb20gLS1hcmdzIG9uIHRoZSBjbWQgbGluZSAKCQlteSAkdGhpc2RvaSA9ICRv -cHRze2RvaX07CgkJI1JNIGNvaW4gYSBET0kgaWYgZWl0aGVyIAoJCQkjIC0gbm90IGNvbWUgdmlh -IGV2ZW50IG9yIAoJCQkjIC0gbm8gZG9pIGFyZyBwYXNzZWQgaW4gdmlhIGNtZF9saW5lCgkJIyBp -ZSB3aGVuIHNvbWVvbmUgZXhwb3J0cyBEYXRhQ2l0ZVhNTCBmcm9tIHRoZSBBY3Rpb24gdGFiCgkJ -aWYoIWRlZmluZWQgJHRoaXNkb2kpewoJCQkjbmljayB0aGUgY29pbmluZyBzdWIgZnJvbSBldmVu -dCBwbHVnaW4KCQkJbXkgJGV2ZW50ID0gJHJlcG8tPnBsdWdpbigiRXZlbnQ6OkRhdGFDaXRlRXZl -bnQiKTsKCQkJJHRoaXNkb2kgPSAkZXZlbnQtPmNvaW5fZG9pKCRyZXBvLCAkZGF0YW9iaik7CgkJ -CSNjb2luX2RvaSBtYXkgcmV0dXJuIGFuIGV2ZW50IGVycm9yIGNvZGUgaWYgbm8gcHJlZml4IHBy -ZXNlbnQgYXNzdW1lIHRoaXMgaXMgdGhlIGNhc2UKCQkJbXkgJHByZWZpeCA9ICRyZXBvLT5nZXRf -Y29uZiggImRhdGFjaXRlZG9pIiwgInByZWZpeCIpOwoJCQlyZXR1cm4gJHRoaXNkb2kgaWYoJHRo -aXNkb2kgIX4gL14kcHJlZml4Lyk7CgkJfQoKCSAgIAkkZW50cnktPmFwcGVuZENoaWxkKCAkeG1s -LT5jcmVhdGVfZGF0YV9lbGVtZW50KCAiaWRlbnRpZmllciIsICR0aGlzZG9pICwgaWRlbnRpZmll -clR5cGU9PiJET0kiICkgKTsKCQkKCQkjUk0gb3RoZXJ3aXNlIHdlJ2xsIGxlYXZlIHRoaXMgYWxv -bmUgZm9yIG5vdwoKCQlteSAkY3JlYXRvcnMgPSAkeG1sLT5jcmVhdGVfZWxlbWVudCggImNyZWF0 -b3JzIiApOwoJCWlmKCAkZGF0YW9iai0+ZXhpc3RzX2FuZF9zZXQoICJjcmVhdG9ycyIgKSApCiAg -ICAgICAgCXsKCQoJCQlteSAkbmFtZXMgPSAkZGF0YW9iai0+Z2V0X3ZhbHVlKCAiY3JlYXRvcnMi -ICk7CgkJCWZvcmVhY2ggbXkgJG5hbWUgKCBAJG5hbWVzICkKCQkJewoJCQkJbXkgJGF1dGhvciA9 -ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiY3JlYXRvciIgKTsKCgkJCQlteSAkbmFtZV9zdHIgPSBF -UHJpbnRzOjpVdGlsczo6bWFrZV9uYW1lX3N0cmluZyggJG5hbWUtPntuYW1lfSk7CgkJCQkkYXV0 -aG9yLT5hcHBlbmRDaGlsZCggJHhtbC0+Y3JlYXRlX2RhdGFfZWxlbWVudCgKCQkJCQkJCSJjcmVh -dG9yTmFtZSIsCgkJCQkJCQkkbmFtZV9zdHIgKSApOwoKCQkJCSRjcmVhdG9ycy0+YXBwZW5kQ2hp -bGQoICRhdXRob3IgKTsKCQkJfQogICAgICAgIAl9CgkJJGVudHJ5LT5hcHBlbmRDaGlsZCggJGNy -ZWF0b3JzICk7CgoJCWlmICgkZGF0YW9iai0+ZXhpc3RzX2FuZF9zZXQoICJ0aXRsZSIgKSkgewoJ -CQlteSAkdGl0bGVzID0gJHhtbC0+Y3JlYXRlX2VsZW1lbnQoICJ0aXRsZXMiICk7CgkJIAkkdGl0 -bGVzLT5hcHBlbmRDaGlsZCggICR4bWwtPmNyZWF0ZV9kYXRhX2VsZW1lbnQoICJ0aXRsZSIsICAk -ZGF0YW9iai0+cmVuZGVyX3ZhbHVlKCAidGl0bGUiICkgICkgKTsKCQkJJGVudHJ5LT5hcHBlbmRD -aGlsZCggJHRpdGxlcyApOwoJCX0KCQkKCQkkZW50cnktPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVh -dGVfZGF0YV9lbGVtZW50KCAicHVibGlzaGVyIiwgJHJlcG8tPmdldF9jb25mKCAiZGF0YWNpdGVk -b2kiLCAicHVibGlzaGVyIikgKSApOwoJCgkJaWYgKCRkYXRhb2JqLT5leGlzdHNfYW5kX3NldCgg -ImRhdGVzdGFtcCIgKSkgewoJCSAgICAkZGF0YW9iai0+Z2V0X3ZhbHVlKCAiZGF0ZXN0YW1wIiAp -ID1+IC9eKFswLTldezR9KS87CgkJCSRlbnRyeS0+YXBwZW5kQ2hpbGQoICR4bWwtPmNyZWF0ZV9k -YXRhX2VsZW1lbnQoICJwdWJsaWNhdGlvblllYXIiLCAkMSApICkgaWYgJDE7CgkJCgkJfQoKCgkJ -aWYgKCRkYXRhb2JqLT5leGlzdHNfYW5kX3NldCggInN1YmplY3RzIiApKSB7CgkJCW15ICRzdWJq -ZWN0cyA9ICRkYXRhb2JqLT5nZXRfdmFsdWUoInN1YmplY3RzIik7CgkJCWlmKCBFUHJpbnRzOjpV -dGlsczo6aXNfc2V0KCAkc3ViamVjdHMgKSApewoJCQkJbXkgJHN1YmplY3RzX3RhZyA9ICR4bWwt -PmNyZWF0ZV9lbGVtZW50KCAic3ViamVjdHMiICk7CgkJCQlmb3JlYWNoIG15ICR2YWwgKEAkc3Vi -amVjdHMpewoJCSAgICAgICAgICAgICAgICBteSAkc3ViamVjdCA9IEVQcmludHM6OkRhdGFPYmo6 -OlN1YmplY3QtPm5ldyggJHJlcG8sICR2YWwgKTsKCQkJCSAgICAgICAgICAgbmV4dCB1bmxlc3Mg -ZGVmaW5lZCAkc3ViamVjdDsKCQkJCSAgICAgICAJJHN1YmplY3RzX3RhZy0+YXBwZW5kQ2hpbGQo -ICAkeG1sLT5jcmVhdGVfZGF0YV9lbGVtZW50KCAic3ViamVjdCIsICAkc3ViamVjdC0+cmVuZGVy -X2Rlc2NyaXB0aW9uICApICk7CgkJCQkKCQkJCX0KCQkJCSRlbnRyeS0+YXBwZW5kQ2hpbGQoICRz -dWJqZWN0c190YWcgKTsKCQkJfQoJCX0KCSAgCgkKCQlteSAkdGhpc3Jlc291cmNlVHlwZSA9ICRy -ZXBvLT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgInR5cGVtYXAiLCAkZGF0YW9iai0+Z2V0X3Zh -bHVlKCJ0eXBlIikgKTsgCgkJaWYoZGVmaW5lZCAkdGhpc3Jlc291cmNlVHlwZSApewoJCQkkZW50 -cnktPmFwcGVuZENoaWxkKCAkeG1sLT5jcmVhdGVfZGF0YV9lbGVtZW50KCAicmVzb3VyY2VUeXBl -IiwgJHRoaXNyZXNvdXJjZVR5cGUtPnsndid9LCAgcmVzb3VyY2VUeXBlR2VuZXJhbD0+JHRoaXNy -ZXNvdXJjZVR5cGUtPnsnYSd9KSApOwoJCX0KCQkKCQoJCW15ICRhbHRlcm5hdGVJZGVudGlmaWVy -cyA9ICR4bWwtPmNyZWF0ZV9lbGVtZW50KCAiYWx0ZXJuYXRlSWRlbnRpZmllcnMiICk7CgkJJGFs -dGVybmF0ZUlkZW50aWZpZXJzLT5hcHBlbmRDaGlsZCggICR4bWwtPmNyZWF0ZV9kYXRhX2VsZW1l -bnQoICJhbHRlcm5hdGVJZGVudGlmaWVyIiwgICRkYXRhb2JqLT5nZXRfdXJsKCkgLCBhbHRlcm5h -dGVJZGVudGlmaWVyVHlwZT0+IlVSTCIgKSApOwoJCSRlbnRyeS0+YXBwZW5kQ2hpbGQoICRhbHRl -cm5hdGVJZGVudGlmaWVycyApOwoJCgoJCSNUT0RPIFNlZWssIGlkZW50aWZ5IGFuZCBpbmNsdWRl -IGZvciByZWdpc3RyYXRpb24gdGhlIG9wdGlvbmFsIGRhdGFjaXRlIGZpZWxkcwoJICAgICAgIHJl -dHVybiAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4nLiJcbiIuJHhtbC0+ -dG9fc3RyaW5nKCRlbnRyeSk7Cn0KCjE7Cg== - + 2806 + document plugins/EPrints/Plugin/Screen/EPrint/Staff/CoinDOI.pm text/plain 0ceae1dd50779c660b2e2a6bb4e4ff27 MD5 2237 - cGFja2FnZSBFUHJpbnRzOjpQbHVnaW46OlNjcmVlbjo6RVByaW50OjpTdGFmZjo6Q29pbkRPSTsK -CiN1c2UgRVByaW50czo6UGx1Z2luOjpTY3JlZW46OkVQcmludDsKCkBJU0EgPSAoICdFUHJpbnRz -OjpQbHVnaW46OlNjcmVlbjo6RVByaW50JyApOwoKdXNlIHN0cmljdDsKCnN1YiBuZXcKewogICAg -ICAgIG15KCAkY2xhc3MsICVwYXJhbXMgKSA9IEBfOwoKICAgICAgICBteSAkc2VsZiA9ICRjbGFz -cy0+U1VQRVI6Om5ldyglcGFyYW1zKTsKCiAgICAgICAgIyAgICAgICAkc2VsZi0+e3ByaXZ9ID0g -IyBubyBzcGVjaWZpYyBwcml2IC0gb25lIHBlciBhY3Rpb24KCiAgICAgICAgJHNlbGYtPnthY3Rp -b25zfSA9IFtxdy8gY29pbmRvaSAvXTsKCiAgICAgICAgJHNlbGYtPnthcHBlYXJzfSA9IFsgewog -ICAgICAgICAgICAgICAgcGxhY2UgPT4gImVwcmludF9lZGl0b3JfYWN0aW9ucyIsCiAgICAgICAg -ICAgICAgICBhY3Rpb24gPT4gImNvaW5kb2kiLAogICAgICAgICAgICAgICAgcG9zaXRpb24gPT4g -MTk3NywKICAgICAgICB9LCBdOwoKICAgICAgICByZXR1cm4gJHNlbGY7Cn0KCnN1YiBvYnRhaW5f -bG9jawp7CiAgICAgICAgbXkoICRzZWxmICkgPSBAXzsKCiAgICAgICAgcmV0dXJuICRzZWxmLT5j -b3VsZF9vYnRhaW5fZXByaW50X2xvY2s7Cn0KCnN1YiBhYm91dF90b19yZW5kZXIKewogICAgICAg -IG15KCAkc2VsZiApID0gQF87CgogICAgICAgICRzZWxmLT5FUHJpbnRzOjpQbHVnaW46OlNjcmVl -bjo6RVByaW50OjpWaWV3OjphYm91dF90b19yZW5kZXI7Cn0KCnN1YiBhbGxvd19jb2luZG9pCnsK -ICAgICAgICBteSggJHNlbGYgKSA9IEBfOwoKICAgICAgICByZXR1cm4gMCB1bmxlc3MgJHNlbGYt -PmNvdWxkX29idGFpbl9lcHJpbnRfbG9jazsKIAoJbXkgJHJlcG9zaXRvcnkgPSAkc2VsZi0+e3Jl -cG9zaXRvcnl9OwoJI1RPRE8gYSB2ZXJzaW9uIHRoYXQgd29ya3MgZm9yIGRvY3VtZW50cyB0b28K -CW15ICRkYXRhb2JqID0gJHNlbGYtPntwcm9jZXNzb3J9LT57ZXByaW50fTsgCiAgICAgICAgcmV0 -dXJuIDAgdW5sZXNzICRyZXBvc2l0b3J5LT5nZXRfY29uZiggImRhdGFjaXRlZG9pIiwgImVwcmlu -dHN0YXR1cyIsICAkZGF0YW9iai0+dmFsdWUoICJlcHJpbnRfc3RhdHVzIiApKTsKCSNUT0RPIGRv -bid0IGFsbG93IHRoZSBjb2luRE9JIGJ1dHRvbiBpZiBhIERPSSBpcyBhbHJlYWR5IHJlZ2lzdGVy -ZWQgKG1heSByZXF1aXJlIGEgZGIgZmxhZyBmb3Igc3VjY2Vzc2Z1bCByZWcpCiAgICAgICAgcmV0 -dXJuICRzZWxmLT5hbGxvdyggImVwcmludC9lZGl0OmVkaXRvciIgKTsKfQoKc3ViIGFjdGlvbl9j -b2luZG9pCnsKCW15KCAkc2VsZiApID0gQF87CiAKICAgICAgIG15ICRyZXBvc2l0b3J5ID0gJHNl -bGYtPntyZXBvc2l0b3J5fTsKIAogICAgICAgcmV0dXJuIHVuZGVmIGlmICghZGVmaW5lZCAkcmVw -b3NpdG9yeSk7CgoJbXkgJGVwcmludCA9ICRzZWxmLT57cHJvY2Vzc29yfS0+e2VwcmludH07CgoJ -aWYgKGRlZmluZWQgJGVwcmludCkgewoJCQlteSAkZXByaW50X2lkID0gJGVwcmludC0+aWQ7CiAg -ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAJICAgICAgICRyZXBvc2l0b3J5LT5k -YXRhc2V0KCAiZXZlbnRfcXVldWUiICktPmNyZWF0ZV9kYXRhb2JqKHsKCQkJCQlwbHVnaW5pZCA9 -PiAiRXZlbnQ6OkRhdGFDaXRlRXZlbnQiLAoJCQkJCWFjdGlvbiA9PiAiZGF0YWNpdGVfZG9pIiwK -CQkJCQlwYXJhbXMgPT4gWyRlcHJpbnQtPmludGVybmFsX3VyaV0sCgkJICAgICAgICB9KTsgCgog -ICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+YWRkX3Jlc3VsdF9tZXNzYWdlKCAxICk7CiAg -ICAgICB9Cn0gICAgCgpzdWIgYWRkX3Jlc3VsdF9tZXNzYWdlCnsKICAgICAgICBteSggJHNlbGYs -ICRvayApID0gQF87CgogICAgICAgIGlmKCAkb2sgKQogICAgICAgIHsKICAgICAgICAgICAgICAg -ICRzZWxmLT57cHJvY2Vzc29yfS0+YWRkX21lc3NhZ2UoICJtZXNzYWdlIiwKICAgICAgICAgICAg -ICAgICAgICAgICAgJHNlbGYtPmh0bWxfcGhyYXNlKCAiY29pbmluZ2RvaSIgKSApOwogICAgICAg -IH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAgICAgIyBFcnJvcj8KICAgICAg -ICAgICAgICAgICRzZWxmLT57cHJvY2Vzc29yfS0+YWRkX21lc3NhZ2UoICJlcnJvciIgKTsKICAg -ICAgICB9CgogICAgICAgICRzZWxmLT57cHJvY2Vzc29yfS0+e3NjcmVlbmlkfSA9ICJFUHJpbnQ6 -OlZpZXciOwp9CgoxOwo= - - static/images/epm/unknown.png - image/png - 09c09aa0a7bb351d51a06a07db5d4139 + document + cfg.d/z_datacite_mapping.pl + text/plain + 4f2807b6c4cd8fba51cada676ebf9278 + MD5 + 8691 + + + document + epm/DataCiteDoi/cfg/cfg.d/z_datacitedoi.pl + text/plain + 670a102e25b0b7636091ccf15d200847 MD5 - 52913 - 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 -MFAtTzkAAAAASUVORK5CYII= - + 5046 - image/png - image -
static/images/epm/unknown.png
+ text/plain + text +
epm/DataCiteDoi/cfg/cfg.d/z_datacitedoi.pl
install
- static/images/epm/unknown.png + document + static/images/epm/datacitedoi.png image/png - 09c09aa0a7bb351d51a06a07db5d4139 + 14e9e2be0a73f452533488634aaea66e MD5 - 52913 - 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 -MFAtTzkAAAAASUVORK5CYII= - + 101504 image -
static/images/epm/unknown.png
+
static/images/epm/datacitedoi.png
coverimage
- 1.0.0 + 2.0.0 @@ -2248,8 +93,9 @@ MFAtTzkAAAAASUVORK5CYII= repositories@ulcc.ac.uk + 2017-09-20 15:27:51 DataCiteDoi - DataCite DOIs for EPrints A plugin integrate into the workflow the process of to minting and registering DataCite DOIs https://github.com/eprintsug/DataCiteDoi - images/epm/unknown.png + images/epm/datacitedoi.png
From 17ae4a39006b8aea39a5af9a6d22332ea0f8135a Mon Sep 17 00:00:00 2001 From: Borys Feldman Date: Wed, 27 Sep 2017 13:19:35 +0100 Subject: [PATCH 42/42] updating license --- lib/cfg.d/z_datacite_mapping.pl | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/cfg.d/z_datacite_mapping.pl b/lib/cfg.d/z_datacite_mapping.pl index 2cd1e01..1496d81 100644 --- a/lib/cfg.d/z_datacite_mapping.pl +++ b/lib/cfg.d/z_datacite_mapping.pl @@ -217,35 +217,35 @@ $c->{datacite_mapping_rights} = sub { - my($xml, $dataobj, $repo, $value) = @_; - my $author = $xml->create_element("rightsList"); - - foreach my $doc($dataobj->get_all_documents()) { + my ( $xml, $dataobj, $repo, $value ) = @_; + my $author = $xml->create_element("rightsList"); + my $previous = {}; + foreach my $doc ( $dataobj->get_all_documents() ) { my $license = $doc->get_value("license"); - if (defined $license && $license ne '') { - - if ($license eq "attached") { - - $author ->appendChild($xml->create_data_element("rights", $repo->phrase("licenses_typename_attached"), rightsURI =>$doc->get_url)); - } else { - - my $licenseuri = $repo->phrase("licenses_uri_$license"); - $author->appendChild($xml->create_data_element("rights", $license, rightsURI =>$licenseuri)); + if ( defined $license && $license ne '' ) { + unless ( defined $previous->{$license} ) { + if ( $license eq "attached" ) { + $author->appendChild($xml->create_data_element("rights", $repo->phrase("licenses_typename_attached"), rightsURI => $doc->get_url)); + } + else { + my $licenseuri = $repo->phrase("licenses_uri_$license"); + $author->appendChild($xml->create_data_element("rights", $license, rightsURI => $licenseuri)); + } } } + $previous->{$license} = "anything really"; - + print STDERR $previous->{$license}, "\n"; } + return $author; }; - - $c->{datacite_mapping_repo_link} = sub { my($xml, $entry, $dataobj) = @_;