libis-tools 1.0.16 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/libis/tools/mets_dnx.rb +3 -1
- data/lib/libis/tools/mets_objects.rb +183 -183
- data/lib/libis/tools/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd9a110b1394d078bf4554d9897029835f3995fa1f0d6bd856797a3f015af769
|
4
|
+
data.tar.gz: 10fe0366ebe9595de1a66435b24d66f21f6fcff8c0603db6758748b6964e9ed8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35f2d8b5a9f5c7c6a0f8eae410c65e2ae0cdc7a73f25e44ce859cbe8cb758f58935bedd71fc747b96a2d84b6ea05b3e3b46f337eebf29aabbd435e7d8988e161
|
7
|
+
data.tar.gz: 1bb344657de83bda87c22f63a94789f763997493ef25abf2f28a064c6eb0651507601127bc89805308a494c1af668f266569c1fa6b40a3aebe878f1e3bc8d7af
|
data/lib/libis/tools/mets_dnx.rb
CHANGED
@@ -31,7 +31,9 @@ module Libis
|
|
31
31
|
# Specialized DNX section.
|
32
32
|
class WebHarvesting < DnxSection; end
|
33
33
|
# Specialized DNX section.
|
34
|
-
class Collection < DnxSection
|
34
|
+
class Collection < DnxSection
|
35
|
+
def tag; 'Collection'; end
|
36
|
+
end
|
35
37
|
# Specialized DNX section.
|
36
38
|
class PreservationLevel < DnxSection; end
|
37
39
|
# Specialized DNX section.
|
@@ -44,188 +44,6 @@ module Libis
|
|
44
44
|
|
45
45
|
end
|
46
46
|
|
47
|
-
# Container class for creating a representation in the METS.
|
48
|
-
class Representation
|
49
|
-
include MetsObject
|
50
|
-
|
51
|
-
# The currently allowed attributes on this class. The attributes will typically be used in {DnxSection}s.
|
52
|
-
attr_accessor :label, :preservation_type, :usage_type, :representation_code, :entity_type, :access_right_id,
|
53
|
-
:user_a, :user_b, :user_c,
|
54
|
-
:group_id, :priority, :order,
|
55
|
-
:digital_original, :content, :context, :hardware, :carrier, :original_name,
|
56
|
-
:preservation_levels, :env_dependencies, :hardware_ids, :software_ids,
|
57
|
-
:hardware_infos, :software_infos, :relationship_infos, :environments,
|
58
|
-
:dc_record, :source_metadata
|
59
|
-
|
60
|
-
# The id that will be used in the XML file to reference this representation.
|
61
|
-
def xml_id
|
62
|
-
"rep#{@id}"
|
63
|
-
end
|
64
|
-
|
65
|
-
# This method creates the appropriate {DnxSection}s based on what attributes are filled in.
|
66
|
-
def amd
|
67
|
-
dnx = {}
|
68
|
-
tech_data = []
|
69
|
-
# General characteristics
|
70
|
-
data = {
|
71
|
-
preservationType: preservation_type,
|
72
|
-
usageType: usage_type,
|
73
|
-
DigitalOriginal: digital_original,
|
74
|
-
label: label,
|
75
|
-
representationEntityType: entity_type,
|
76
|
-
contentType: content,
|
77
|
-
contextType: context,
|
78
|
-
hardwareUsed: hardware,
|
79
|
-
physicalCarrierMedia: carrier,
|
80
|
-
deliveryPriority: priority,
|
81
|
-
orderingSequence: order,
|
82
|
-
RepresentationCode: representation_code,
|
83
|
-
RepresentationOriginalName: original_name,
|
84
|
-
UserDefinedA: user_a,
|
85
|
-
UserDefinedB: user_b,
|
86
|
-
UserDefinedC: user_c,
|
87
|
-
}.cleanup
|
88
|
-
tech_data << GeneralRepCharacteristics.new(data) unless data.empty?
|
89
|
-
# Object characteristics
|
90
|
-
data = {
|
91
|
-
groupID: group_id
|
92
|
-
}.cleanup
|
93
|
-
tech_data << ObjectCharacteristics.new(data) unless data.empty?
|
94
|
-
# Preservation level
|
95
|
-
if preservation_levels
|
96
|
-
data_list = []
|
97
|
-
preservation_levels.each do |preservation_level|
|
98
|
-
data = {
|
99
|
-
preservationLevelValue: preservation_level[:value],
|
100
|
-
preservationLevelRole: preservation_level[:role],
|
101
|
-
preservationLevelRationale: preservation_level[:rationale],
|
102
|
-
preservationLevelDateAssigned: preservation_level[:date],
|
103
|
-
}.cleanup
|
104
|
-
data_list << OpenStruct.new(data) unless data.empty?
|
105
|
-
end
|
106
|
-
tech_data << PreservationLevel.new(array: data_list) unless data_list.empty?
|
107
|
-
end
|
108
|
-
# Dependencies
|
109
|
-
if env_dependencies
|
110
|
-
data_list = []
|
111
|
-
env_dependencies.each do |dependency|
|
112
|
-
data = {
|
113
|
-
dependencyName: dependency[:name],
|
114
|
-
dependencyIdentifierType1: dependency[:type1],
|
115
|
-
dependencyIdentifierValue1: dependency[:value1],
|
116
|
-
dependencyIdentifierType2: dependency[:type2],
|
117
|
-
dependencyIdentifierValue2: dependency[:value2],
|
118
|
-
dependencyIdentifierType3: dependency[:type3],
|
119
|
-
dependencyIdentifierValue3: dependency[:value3],
|
120
|
-
}.cleanup
|
121
|
-
data_list << OpenStruct.new(data) unless data.empty?
|
122
|
-
end
|
123
|
-
tech_data << EnvironmentDependencies.new(array: data_list) unless data_list.empty?
|
124
|
-
end
|
125
|
-
# Hardware registry id
|
126
|
-
if hardware_ids
|
127
|
-
data_list = []
|
128
|
-
hardware_ids.each do |id|
|
129
|
-
data = {
|
130
|
-
registryId: id
|
131
|
-
}.cleanup
|
132
|
-
data_list << OpenStruct.new(data) unless data.empty?
|
133
|
-
end
|
134
|
-
tech_data << EnvHardwareRegistry.new(array: data_list) unless data_list.empty?
|
135
|
-
end
|
136
|
-
# Software registry id
|
137
|
-
if software_ids
|
138
|
-
data_list = []
|
139
|
-
software_ids.each do |id|
|
140
|
-
data = {
|
141
|
-
registryId: id
|
142
|
-
}.cleanup
|
143
|
-
data_list << OpenStruct.new(data) unless data.empty?
|
144
|
-
end
|
145
|
-
tech_data << EnvSoftwareRegistry.new(array: data_list) unless data_list.empty?
|
146
|
-
end
|
147
|
-
# Hardware
|
148
|
-
if hardware_infos
|
149
|
-
data_list = []
|
150
|
-
hardware_infos.each do |hardware|
|
151
|
-
data = {
|
152
|
-
hardwareName: hardware[:name],
|
153
|
-
hardwareType: hardware[:type],
|
154
|
-
hardwareOtherInformation: hardware[:info],
|
155
|
-
}.cleanup
|
156
|
-
data_list << OpenStruct.new(data) unless data.empty?
|
157
|
-
end
|
158
|
-
tech_data << EnvironmentHardware.new(array: data_list) unless data_list.empty?
|
159
|
-
end
|
160
|
-
# Software
|
161
|
-
if software_infos
|
162
|
-
data_list = []
|
163
|
-
software_infos.each do |software|
|
164
|
-
data = {
|
165
|
-
softwareName: software[:name],
|
166
|
-
softwareVersion: software[:version],
|
167
|
-
softwareType: software[:type],
|
168
|
-
softwareOtherInformation: software[:info],
|
169
|
-
softwareDependancy: software[:dependency],
|
170
|
-
}.cleanup
|
171
|
-
data_list << OpenStruct.new(data) unless data.empty?
|
172
|
-
end
|
173
|
-
tech_data << EnvironmentSoftware.new(array: data_list) unless data_list.empty?
|
174
|
-
end
|
175
|
-
# Relationship
|
176
|
-
if relationship_infos
|
177
|
-
data_list = []
|
178
|
-
relationship_infos.each do |relationship|
|
179
|
-
data = {
|
180
|
-
relationshipType: relationship[:type],
|
181
|
-
relationshipSubType: relationship[:subtype],
|
182
|
-
relatedObjectIdentifierType1: relationship[:type1],
|
183
|
-
relatedObjectIdentifierValue1: relationship[:id1],
|
184
|
-
relatedObjectSequence1: relationship[:seq1],
|
185
|
-
relatedObjectIdentifierType2: relationship[:type2],
|
186
|
-
relatedObjectIdentifierValue2: relationship[:id2],
|
187
|
-
relatedObjectSequence2: relationship[:seq2],
|
188
|
-
relatedObjectIdentifierType3: relationship[:type3],
|
189
|
-
relatedObjectIdentifierValue3: relationship[:id3],
|
190
|
-
relatedObjectSequence3: relationship[:seq3],
|
191
|
-
}.cleanup
|
192
|
-
data_list << OpenStruct.new(data) unless data.empty?
|
193
|
-
end
|
194
|
-
tech_data << RelationShip.new(array: data_list) unless data_list.empty?
|
195
|
-
end
|
196
|
-
# Environment
|
197
|
-
if environments
|
198
|
-
data_list = []
|
199
|
-
environments.each do |environment|
|
200
|
-
data = {
|
201
|
-
environmentCharacteristic: environment[:characteristic],
|
202
|
-
environmentPurpose: environment[:purpose],
|
203
|
-
environmentNote: environment[:note],
|
204
|
-
}.cleanup
|
205
|
-
data_list << OpenStruct.new(data) unless data.empty?
|
206
|
-
end
|
207
|
-
tech_data << Environment.new(array: data_list) unless data_list.empty?
|
208
|
-
end
|
209
|
-
# Finally assemble technical section
|
210
|
-
dnx[:tech] = tech_data unless tech_data.empty?
|
211
|
-
# Rights section
|
212
|
-
rights_data = []
|
213
|
-
data = {
|
214
|
-
policyId: access_right_id
|
215
|
-
}.cleanup
|
216
|
-
rights_data << AccessRightsPolicy.new(data) unless data.empty?
|
217
|
-
dnx[:rights] = rights_data unless rights_data.empty?
|
218
|
-
# Source metadata
|
219
|
-
if source_metadata
|
220
|
-
source_metadata.each_with_index do |metadata, i|
|
221
|
-
dnx["source-#{metadata[:type].to_s.upcase}-#{i}"] = metadata[:data]
|
222
|
-
end
|
223
|
-
end
|
224
|
-
dnx
|
225
|
-
end
|
226
|
-
|
227
|
-
end
|
228
|
-
|
229
47
|
# Container class for creating a file in the METS.
|
230
48
|
class File
|
231
49
|
include MetsObject
|
@@ -291,7 +109,7 @@ module Libis
|
|
291
109
|
fileLocation: location,
|
292
110
|
fileOriginalName: original || target_name,
|
293
111
|
fileOriginalPath: target_path,
|
294
|
-
# fileOriginalID:
|
112
|
+
# fileOriginalID: CGI.escape(location),
|
295
113
|
# fileExtension: ::File.extname(orig_name),
|
296
114
|
fileMIMEType: mimetype,
|
297
115
|
fileSizeBytes: size,
|
@@ -524,6 +342,188 @@ module Libis
|
|
524
342
|
|
525
343
|
end
|
526
344
|
|
345
|
+
# Container class for creating a representation in the METS.
|
346
|
+
class Representation
|
347
|
+
include MetsObject
|
348
|
+
|
349
|
+
# The currently allowed attributes on this class. The attributes will typically be used in {DnxSection}s.
|
350
|
+
attr_accessor :preservation_type, :usage_type, :representation_code, :entity_type, :access_right_id,
|
351
|
+
:user_a, :user_b, :user_c,
|
352
|
+
:group_id, :priority, :order,
|
353
|
+
:digital_original, :content, :context, :hardware, :carrier, :original_name,
|
354
|
+
:preservation_levels, :env_dependencies, :hardware_ids, :software_ids,
|
355
|
+
:hardware_infos, :software_infos, :relationship_infos, :environments,
|
356
|
+
:dc_record, :source_metadata
|
357
|
+
|
358
|
+
# The id that will be used in the XML file to reference this representation.
|
359
|
+
def xml_id
|
360
|
+
"rep#{@id}"
|
361
|
+
end
|
362
|
+
|
363
|
+
# This method creates the appropriate {DnxSection}s based on what attributes are filled in.
|
364
|
+
def amd
|
365
|
+
dnx = {}
|
366
|
+
tech_data = []
|
367
|
+
# General characteristics
|
368
|
+
data = {
|
369
|
+
preservationType: preservation_type,
|
370
|
+
usageType: usage_type,
|
371
|
+
DigitalOriginal: digital_original,
|
372
|
+
label: label,
|
373
|
+
representationEntityType: entity_type,
|
374
|
+
contentType: content,
|
375
|
+
contextType: context,
|
376
|
+
hardwareUsed: hardware,
|
377
|
+
physicalCarrierMedia: carrier,
|
378
|
+
deliveryPriority: priority,
|
379
|
+
orderingSequence: order,
|
380
|
+
RepresentationCode: representation_code,
|
381
|
+
RepresentationOriginalName: original_name,
|
382
|
+
UserDefinedA: user_a,
|
383
|
+
UserDefinedB: user_b,
|
384
|
+
UserDefinedC: user_c,
|
385
|
+
}.cleanup
|
386
|
+
tech_data << GeneralRepCharacteristics.new(data) unless data.empty?
|
387
|
+
# Object characteristics
|
388
|
+
data = {
|
389
|
+
groupID: group_id
|
390
|
+
}.cleanup
|
391
|
+
tech_data << ObjectCharacteristics.new(data) unless data.empty?
|
392
|
+
# Preservation level
|
393
|
+
if preservation_levels
|
394
|
+
data_list = []
|
395
|
+
preservation_levels.each do |preservation_level|
|
396
|
+
data = {
|
397
|
+
preservationLevelValue: preservation_level[:value],
|
398
|
+
preservationLevelRole: preservation_level[:role],
|
399
|
+
preservationLevelRationale: preservation_level[:rationale],
|
400
|
+
preservationLevelDateAssigned: preservation_level[:date],
|
401
|
+
}.cleanup
|
402
|
+
data_list << OpenStruct.new(data) unless data.empty?
|
403
|
+
end
|
404
|
+
tech_data << PreservationLevel.new(array: data_list) unless data_list.empty?
|
405
|
+
end
|
406
|
+
# Dependencies
|
407
|
+
if env_dependencies
|
408
|
+
data_list = []
|
409
|
+
env_dependencies.each do |dependency|
|
410
|
+
data = {
|
411
|
+
dependencyName: dependency[:name],
|
412
|
+
dependencyIdentifierType1: dependency[:type1],
|
413
|
+
dependencyIdentifierValue1: dependency[:value1],
|
414
|
+
dependencyIdentifierType2: dependency[:type2],
|
415
|
+
dependencyIdentifierValue2: dependency[:value2],
|
416
|
+
dependencyIdentifierType3: dependency[:type3],
|
417
|
+
dependencyIdentifierValue3: dependency[:value3],
|
418
|
+
}.cleanup
|
419
|
+
data_list << OpenStruct.new(data) unless data.empty?
|
420
|
+
end
|
421
|
+
tech_data << EnvironmentDependencies.new(array: data_list) unless data_list.empty?
|
422
|
+
end
|
423
|
+
# Hardware registry id
|
424
|
+
if hardware_ids
|
425
|
+
data_list = []
|
426
|
+
hardware_ids.each do |id|
|
427
|
+
data = {
|
428
|
+
registryId: id
|
429
|
+
}.cleanup
|
430
|
+
data_list << OpenStruct.new(data) unless data.empty?
|
431
|
+
end
|
432
|
+
tech_data << EnvHardwareRegistry.new(array: data_list) unless data_list.empty?
|
433
|
+
end
|
434
|
+
# Software registry id
|
435
|
+
if software_ids
|
436
|
+
data_list = []
|
437
|
+
software_ids.each do |id|
|
438
|
+
data = {
|
439
|
+
registryId: id
|
440
|
+
}.cleanup
|
441
|
+
data_list << OpenStruct.new(data) unless data.empty?
|
442
|
+
end
|
443
|
+
tech_data << EnvSoftwareRegistry.new(array: data_list) unless data_list.empty?
|
444
|
+
end
|
445
|
+
# Hardware
|
446
|
+
if hardware_infos
|
447
|
+
data_list = []
|
448
|
+
hardware_infos.each do |hardware|
|
449
|
+
data = {
|
450
|
+
hardwareName: hardware[:name],
|
451
|
+
hardwareType: hardware[:type],
|
452
|
+
hardwareOtherInformation: hardware[:info],
|
453
|
+
}.cleanup
|
454
|
+
data_list << OpenStruct.new(data) unless data.empty?
|
455
|
+
end
|
456
|
+
tech_data << EnvironmentHardware.new(array: data_list) unless data_list.empty?
|
457
|
+
end
|
458
|
+
# Software
|
459
|
+
if software_infos
|
460
|
+
data_list = []
|
461
|
+
software_infos.each do |software|
|
462
|
+
data = {
|
463
|
+
softwareName: software[:name],
|
464
|
+
softwareVersion: software[:version],
|
465
|
+
softwareType: software[:type],
|
466
|
+
softwareOtherInformation: software[:info],
|
467
|
+
softwareDependancy: software[:dependency],
|
468
|
+
}.cleanup
|
469
|
+
data_list << OpenStruct.new(data) unless data.empty?
|
470
|
+
end
|
471
|
+
tech_data << EnvironmentSoftware.new(array: data_list) unless data_list.empty?
|
472
|
+
end
|
473
|
+
# Relationship
|
474
|
+
if relationship_infos
|
475
|
+
data_list = []
|
476
|
+
relationship_infos.each do |relationship|
|
477
|
+
data = {
|
478
|
+
relationshipType: relationship[:type],
|
479
|
+
relationshipSubType: relationship[:subtype],
|
480
|
+
relatedObjectIdentifierType1: relationship[:type1],
|
481
|
+
relatedObjectIdentifierValue1: relationship[:id1],
|
482
|
+
relatedObjectSequence1: relationship[:seq1],
|
483
|
+
relatedObjectIdentifierType2: relationship[:type2],
|
484
|
+
relatedObjectIdentifierValue2: relationship[:id2],
|
485
|
+
relatedObjectSequence2: relationship[:seq2],
|
486
|
+
relatedObjectIdentifierType3: relationship[:type3],
|
487
|
+
relatedObjectIdentifierValue3: relationship[:id3],
|
488
|
+
relatedObjectSequence3: relationship[:seq3],
|
489
|
+
}.cleanup
|
490
|
+
data_list << OpenStruct.new(data) unless data.empty?
|
491
|
+
end
|
492
|
+
tech_data << RelationShip.new(array: data_list) unless data_list.empty?
|
493
|
+
end
|
494
|
+
# Environment
|
495
|
+
if environments
|
496
|
+
data_list = []
|
497
|
+
environments.each do |environment|
|
498
|
+
data = {
|
499
|
+
environmentCharacteristic: environment[:characteristic],
|
500
|
+
environmentPurpose: environment[:purpose],
|
501
|
+
environmentNote: environment[:note],
|
502
|
+
}.cleanup
|
503
|
+
data_list << OpenStruct.new(data) unless data.empty?
|
504
|
+
end
|
505
|
+
tech_data << Environment.new(array: data_list) unless data_list.empty?
|
506
|
+
end
|
507
|
+
# Finally assemble technical section
|
508
|
+
dnx[:tech] = tech_data unless tech_data.empty?
|
509
|
+
# Rights section
|
510
|
+
rights_data = []
|
511
|
+
data = {
|
512
|
+
policyId: access_right_id
|
513
|
+
}.cleanup
|
514
|
+
rights_data << AccessRightsPolicy.new(data) unless data.empty?
|
515
|
+
dnx[:rights] = rights_data unless rights_data.empty?
|
516
|
+
# Source metadata
|
517
|
+
if source_metadata
|
518
|
+
source_metadata.each_with_index do |metadata, i|
|
519
|
+
dnx["source-#{metadata[:type].to_s.upcase}-#{i}"] = metadata[:data]
|
520
|
+
end
|
521
|
+
end
|
522
|
+
dnx
|
523
|
+
end
|
524
|
+
|
525
|
+
end
|
526
|
+
|
527
527
|
# Container class for creating a structmap in the METS.
|
528
528
|
class Map
|
529
529
|
include MetsObject
|
data/lib/libis/tools/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libis-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Dekeyser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -386,7 +386,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
386
386
|
- !ruby/object:Gem::Version
|
387
387
|
version: '0'
|
388
388
|
requirements: []
|
389
|
-
rubygems_version: 3.
|
389
|
+
rubygems_version: 3.3.7
|
390
390
|
signing_key:
|
391
391
|
specification_version: 4
|
392
392
|
summary: LIBIS toolbox.
|