darlingtonia 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/darlingtonia/hyrax_record_importer.rb +21 -7
- data/lib/darlingtonia/importer.rb +2 -0
- data/lib/darlingtonia/record_importer.rb +7 -1
- data/lib/darlingtonia/validator.rb +25 -2
- data/lib/darlingtonia/version.rb +1 -1
- data/spec/darlingtonia/importer_spec.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7c349e432568a10f8f77a939d0464e511466f0bc7ae30f7d7f5ff134a1bb656
|
4
|
+
data.tar.gz: 5a89d7d2e778e35ab4213af0648c5c99857f264851f50a40dfbfa76f1440a79a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ef901a03b12a77bf06ffb61622d4ff606c3369d872c1bc72f8bf8975c96faa9450b1826cda254c915afef0a03ebd1908db00e818ddc6d1087a1aeb83a823c9f
|
7
|
+
data.tar.gz: ac6bd1de71971065ec2432c27ad786e810f306f54271fd1d800117706479745b93b98b2e3115be806227becd01aaecbb570ae0a366370d231bc6d9a2b3ec6222
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
2.2.0 - Tue Feb 12, 2019
|
2
|
+
|
3
|
+
* Improved default logging
|
4
|
+
* logs are more easily parsed, e.g., by splunk
|
5
|
+
* logs contain summary information
|
6
|
+
* option to pass in a batch_id to track successes and failures per batch
|
7
|
+
|
1
8
|
2.1.0 - Tue Feb 12, 2019
|
2
9
|
|
3
10
|
* Map a variety of values for 'visibility' to their Hyrax approved equivalents
|
@@ -13,6 +13,18 @@ module Darlingtonia
|
|
13
13
|
# @return [String] The fedora ID for a Collection.
|
14
14
|
attr_accessor :collection_id
|
15
15
|
|
16
|
+
# @!attribute [rw] batch_id
|
17
|
+
# @return [String] an id number associated with the process that kicked off this import run
|
18
|
+
attr_accessor :batch_id
|
19
|
+
|
20
|
+
# @!attribute [rw] success_count
|
21
|
+
# @return [String] the number of records this importer has successfully created
|
22
|
+
attr_accessor :success_count
|
23
|
+
|
24
|
+
# @!attribute [rw] failure_count
|
25
|
+
# @return [String] the number of records this importer has failed to create
|
26
|
+
attr_accessor :failure_count
|
27
|
+
|
16
28
|
# @param attributes [Hash] Attributes that come
|
17
29
|
# from the UI or importer rather than from
|
18
30
|
# the CSV/mapper.
|
@@ -23,8 +35,10 @@ module Darlingtonia
|
|
23
35
|
info_stream: Darlingtonia.config.default_info_stream,
|
24
36
|
attributes: {})
|
25
37
|
self.collection_id = attributes[:collection_id]
|
38
|
+
self.batch_id = attributes[:batch_id]
|
26
39
|
set_depositor(attributes[:depositor_id])
|
27
|
-
|
40
|
+
@success_count = 0
|
41
|
+
@failure_count = 0
|
28
42
|
super(error_stream: error_stream, info_stream: info_stream)
|
29
43
|
end
|
30
44
|
|
@@ -137,8 +151,8 @@ module Darlingtonia
|
|
137
151
|
# Create an object using the Hyrax actor stack
|
138
152
|
# We assume the object was created as expected if the actor stack returns true.
|
139
153
|
def create_for(record:)
|
140
|
-
info_stream <<
|
141
|
-
|
154
|
+
info_stream << "event: record_import_started, batch_id: #{batch_id}, collection_id: #{collection_id}, record_title: #{record.respond_to?(:title) ? record.title : record}"
|
155
|
+
|
142
156
|
additional_attrs = {
|
143
157
|
uploaded_files: create_upload_files(record),
|
144
158
|
depositor: @depositor.user_key
|
@@ -156,14 +170,14 @@ module Darlingtonia
|
|
156
170
|
attrs)
|
157
171
|
|
158
172
|
if Hyrax::CurationConcern.actor.create(actor_env)
|
159
|
-
info_stream << "
|
173
|
+
info_stream << "event: record_created, batch_id: #{batch_id}, record_id: #{created.id}, collection_id: #{collection_id}, record_title: #{attrs[:title].first}"
|
174
|
+
@success_count += 1
|
160
175
|
else
|
161
176
|
created.errors.each do |attr, msg|
|
162
|
-
error_stream << "
|
177
|
+
error_stream << "event: validation_failed, batch_id: #{batch_id}, collection_id: #{collection_id}, attribute: #{attr.capitalize}, message: #{msg}, record_title: #{attrs[:title].first}"
|
163
178
|
end
|
179
|
+
@failure_count += 1
|
164
180
|
end
|
165
|
-
|
166
|
-
info_stream << "Record created at: #{created.id}"
|
167
181
|
end
|
168
182
|
end
|
169
183
|
end
|
@@ -34,6 +34,7 @@ module Darlingtonia
|
|
34
34
|
def initialize(parser:, record_importer: RecordImporter.new)
|
35
35
|
self.parser = parser
|
36
36
|
self.record_importer = record_importer
|
37
|
+
@info_stream = Darlingtonia.config.default_info_stream
|
37
38
|
end
|
38
39
|
|
39
40
|
##
|
@@ -42,6 +43,7 @@ module Darlingtonia
|
|
42
43
|
# @return [void]
|
43
44
|
def import
|
44
45
|
records.each { |record| record_importer.import(record: record) }
|
46
|
+
@info_stream << "event: finish_import, batch_id: #{record_importer.batch_id}, successful_record_count: #{record_importer.success_count}, failed_record_count: #{record_importer.failure_count}"
|
45
47
|
end
|
46
48
|
end
|
47
49
|
end
|
@@ -7,7 +7,13 @@ module Darlingtonia
|
|
7
7
|
# @return [#<<]
|
8
8
|
# @!attribute [rw] info_stream
|
9
9
|
# @return [#<<]
|
10
|
-
|
10
|
+
# @!attribute [rw] batch_id
|
11
|
+
# @return [String] an optional batch id for this import run
|
12
|
+
# @!attribute [rw] success_count
|
13
|
+
# @return [Integer] a count of the records that were successfully created
|
14
|
+
# @!attribute [rw] failure_count
|
15
|
+
# @return [Integer] a count of the records that failed import
|
16
|
+
attr_accessor :error_stream, :info_stream, :batch_id, :success_count, :failure_count
|
11
17
|
|
12
18
|
##
|
13
19
|
# @param error_stream [#<<]
|
@@ -53,7 +53,28 @@ module Darlingtonia
|
|
53
53
|
#
|
54
54
|
# @see Parser#validate
|
55
55
|
class Validator
|
56
|
+
##
|
57
|
+
# A representation of an error encountered in validation.
|
56
58
|
Error = Struct.new(:validator, :name, :description, :lineno) do
|
59
|
+
##
|
60
|
+
# @!attribute [rw] validator
|
61
|
+
# @return [#to_s] the validator that generated this error
|
62
|
+
# @!attribute [rw] name
|
63
|
+
# @return [#to_s] a short descriptive name for the given error
|
64
|
+
# @!attribute [rw] description
|
65
|
+
# @return [#to_s] a long form description or message
|
66
|
+
# @!attribute [rw] lineno
|
67
|
+
# @return [#to_s] the line number, or other indication of the location
|
68
|
+
# where the error was encountered
|
69
|
+
|
70
|
+
##
|
71
|
+
# @return [Boolean]
|
72
|
+
def validator_error?
|
73
|
+
true
|
74
|
+
end
|
75
|
+
|
76
|
+
##
|
77
|
+
# @return [String]
|
57
78
|
def to_s
|
58
79
|
"#{name}: #{description} (#{validator})"
|
59
80
|
end
|
@@ -79,16 +100,18 @@ module Darlingtonia
|
|
79
100
|
errors.map { |error| error_stream << error }
|
80
101
|
end
|
81
102
|
end
|
82
|
-
# rubocop:enable Lint/UnusedMethodArgument
|
83
103
|
|
84
104
|
private
|
85
105
|
|
106
|
+
# rubocop:disable Lint/UnusedMethodArgument
|
107
|
+
|
86
108
|
##
|
87
109
|
# @return [Enumerator<Error>]
|
88
110
|
#
|
89
|
-
# rubocop:disable Lint/UnusedMethodArgument
|
90
111
|
def run_validation(parser:)
|
91
112
|
[].to_enum
|
92
113
|
end
|
114
|
+
|
115
|
+
# rubocop:enable Lint/UnusedMethodArgument
|
93
116
|
end
|
94
117
|
end
|
data/lib/darlingtonia/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: darlingtonia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Data Curation Experts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active-fedora
|