dmao-generic-ingesters 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dmao-generic-ingesters.gemspec +1 -1
- data/lib/dmao/ingesters/errors/ingest_project_participant_error.rb +17 -0
- data/lib/dmao/ingesters/generic/ingester.rb +5 -1
- data/lib/dmao/ingesters/generic/project_participants_ingester.rb +54 -0
- data/lib/dmao/ingesters/generic/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc3660d2139876fe0f7df82aef788401e924f8ae
|
4
|
+
data.tar.gz: 0dab9d29f5c79e9e25590800375f4ef990a66482
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c9e229af03e4b115b1527ac75442873d5f6cf0810bbc0305d88be65009e01b5b328106730fbd517cb1cf82f9206bd8837f2dc888be18ea2ca9772ba0062c8f7
|
7
|
+
data.tar.gz: 36372adc4030072c1e39b44c073f31508ab93d9168f6b28c59e664af261079435c3a06c0567d5d55f3b7bbecc0bd8510adef2720a255af4d002cc84202178843
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ["lib"]
|
32
32
|
|
33
|
-
spec.add_dependency "dmao_api", "~> 0.
|
33
|
+
spec.add_dependency "dmao_api", "~> 0.6.0"
|
34
34
|
|
35
35
|
spec.add_development_dependency "bundler", "~> 1.13"
|
36
36
|
spec.add_development_dependency "rake", "~> 10.0"
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'dmao/ingesters/errors/ingest_entity_error'
|
2
|
+
|
3
|
+
module DMAO
|
4
|
+
module Ingesters
|
5
|
+
module Errors
|
6
|
+
|
7
|
+
class IngestProjectParticipantError < IngestEntityError
|
8
|
+
|
9
|
+
def initialize(msg="Error ingesting project participant.")
|
10
|
+
super(msg)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -54,7 +54,7 @@ module DMAO
|
|
54
54
|
|
55
55
|
def ingest_entity attributes = {}
|
56
56
|
|
57
|
-
|
57
|
+
validate_attributes_present attributes
|
58
58
|
|
59
59
|
begin
|
60
60
|
|
@@ -93,6 +93,10 @@ module DMAO
|
|
93
93
|
|
94
94
|
private
|
95
95
|
|
96
|
+
def validate_attributes_present attributes
|
97
|
+
raise DMAO::Ingesters::Errors::EmptyAttributes.new("Cannot ingest #{self.class.entity_name} without attributes.") if attributes.nil? || attributes.empty?
|
98
|
+
end
|
99
|
+
|
96
100
|
def perform_entity_action action, arguments
|
97
101
|
|
98
102
|
errors_to_handle = self.class::ERROR_HANDLING.nil? ? generic_errors : self.class::ERROR_HANDLING
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'dmao/ingesters/generic/ingester'
|
2
|
+
require 'dmao/ingesters/errors/ingest_project_participant_error'
|
3
|
+
|
4
|
+
module DMAO
|
5
|
+
module Ingesters
|
6
|
+
module Generic
|
7
|
+
|
8
|
+
class ProjectParticipantsIngester < Ingester
|
9
|
+
|
10
|
+
ENTITY = DMAO::API::ProjectParticipant
|
11
|
+
ENTITY_ERROR = DMAO::Ingesters::Errors::IngestProjectParticipantError
|
12
|
+
ENTITY_ERROR_MESSAGE = "Invalid project participant details"
|
13
|
+
ERROR_HANDLING = {
|
14
|
+
"DMAO::API::Errors::ProjectParticipantNotFound" => "Project participant not found, cannot update project participant that does not exist",
|
15
|
+
"DMAO::API::Errors::InvalidProjectID" => "Project not found, cannot add participant to non existent project",
|
16
|
+
"DMAO::API::Errors::InvalidPersonID" => "Participant not found cannot a non existent person to a project",
|
17
|
+
"DMAO::API::Errors::InstitutionNotFound" => "Institution not found, cannot ingest project participant to non-existent institution",
|
18
|
+
|
19
|
+
}
|
20
|
+
|
21
|
+
def ingest_entity attributes={}
|
22
|
+
|
23
|
+
validate_attributes_present attributes
|
24
|
+
|
25
|
+
begin
|
26
|
+
|
27
|
+
participant_system_uuid = attributes[:participant_system_uuid]
|
28
|
+
project_system_uuid = attributes[:project_system_uuid]
|
29
|
+
|
30
|
+
participant = DMAO::API::Person.find_by_system_uuid(participant_system_uuid)
|
31
|
+
project = DMAO::API::Project.find_by_system_uuid(project_system_uuid)
|
32
|
+
|
33
|
+
project_participant = DMAO::API::ProjectParticipant.find_project_participant project.id, participant.id
|
34
|
+
|
35
|
+
update_entity project_participant.id, {person_id: participant.id, project_id: project.id}.merge(attributes)
|
36
|
+
|
37
|
+
rescue DMAO::API::Errors::PersonNotFound
|
38
|
+
raise self.class::ENTITY_ERROR.new("Participant not found, cannot add a non existent person to a project")
|
39
|
+
rescue DMAO::API::Errors::ProjectNotFound
|
40
|
+
raise self.class::ENTITY_ERROR.new("Project not found, cannot add participant to non existent project")
|
41
|
+
rescue DMAO::API::Errors::ProjectParticipantNotFound
|
42
|
+
add_entity({person_id: participant.id, project_id: project.id}.merge(attributes))
|
43
|
+
rescue DMAO::API::Errors::InvalidResponseLength => e
|
44
|
+
raise self.class::ENTITY_ERROR.new(e.message)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dmao-generic-ingesters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Robinson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dmao_api
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.6.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.6.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,12 +130,14 @@ files:
|
|
130
130
|
- lib/dmao/ingesters/errors/ingest_organisation_unit_error.rb
|
131
131
|
- lib/dmao/ingesters/errors/ingest_person_error.rb
|
132
132
|
- lib/dmao/ingesters/errors/ingest_project_error.rb
|
133
|
+
- lib/dmao/ingesters/errors/ingest_project_participant_error.rb
|
133
134
|
- lib/dmao/ingesters/errors/link_organisation_unit_error.rb
|
134
135
|
- lib/dmao/ingesters/generic.rb
|
135
136
|
- lib/dmao/ingesters/generic/funders_ingester.rb
|
136
137
|
- lib/dmao/ingesters/generic/ingester.rb
|
137
138
|
- lib/dmao/ingesters/generic/organisation_ingester.rb
|
138
139
|
- lib/dmao/ingesters/generic/people_ingester.rb
|
140
|
+
- lib/dmao/ingesters/generic/project_participants_ingester.rb
|
139
141
|
- lib/dmao/ingesters/generic/projects_ingester.rb
|
140
142
|
- lib/dmao/ingesters/generic/version.rb
|
141
143
|
homepage: https://github.com/lulibrary/DMAO-Generic-Ingesters
|