ddr-models 3.0.0.beta.11 → 3.0.0.beta.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ddr/datastreams.rb +5 -1
- data/lib/ddr/managers/permanent_id_manager.rb +5 -4
- data/lib/ddr/models.rb +1 -0
- data/lib/ddr/models/base.rb +9 -4
- data/lib/ddr/models/file.rb +9 -1
- data/lib/ddr/models/metadata/administrative_metadata.rb +53 -0
- data/lib/ddr/models/metadata/descriptive_metadata.rb +7 -0
- data/lib/ddr/models/metadata/metadata.rb +26 -2
- data/lib/ddr/models/version.rb +1 -1
- data/spec/models/administrative_metadata_spec.rb +31 -0
- data/spec/models/descriptive_metadata_spec.rb +5 -0
- data/spec/models/has_admin_metadata_spec.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f083a735027958d5b91d4c88489f3fb4aa89c5d
|
4
|
+
data.tar.gz: 0a23cbc2083fa5981c83b51bd1fbf886a4b98e40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a140e0f42c7ccfceee28286980a357be7673b942b04d61ac032d8c6dd0c2f4d267318ea81f79830dce77c404c72ed2f9972efc99ae0eafe6481d10df59075454
|
7
|
+
data.tar.gz: c93e6bb6856409f9ef4fdd728839fc84f41b62073df089792b8b566895aec1b4aa61b0ccd82158538ee3310891a6176a37c78919a623a78de7dbc5dabdf4e778
|
data/lib/ddr/datastreams.rb
CHANGED
@@ -13,10 +13,14 @@ module Ddr
|
|
13
13
|
|
14
14
|
def self.const_missing(name)
|
15
15
|
case name
|
16
|
-
when :CONTENT, :
|
16
|
+
when :CONTENT, :EXTRACTED_TEXT, :FITS, :STRUCT_METADATA, :THUMBNAIL
|
17
17
|
Deprecation.warn(self, "Ddr::Datastreams::#{name} is deprecated." \
|
18
18
|
" Use Ddr::Models::File::#{name} instead.")
|
19
19
|
Ddr::Models::File.const_get(name)
|
20
|
+
when :DESC_METADATA
|
21
|
+
Deprecation.warn(self, "Ddr::Datastreams::DESC_METADATA is deprecated." \
|
22
|
+
" Use Ddr::Models::Metadata::DESC_METADATA instead.")
|
23
|
+
Ddr::Models::Metadata::DESC_METADATA
|
20
24
|
when :FitsDatastream
|
21
25
|
Deprecation.warn(self, "Ddr::Datastreams::FitsDatastream is deprecated." \
|
22
26
|
" Use Ddr::Models::FitsXmlFile instead.")
|
@@ -10,10 +10,11 @@ module Ddr
|
|
10
10
|
#
|
11
11
|
class PermanentIdManager
|
12
12
|
|
13
|
-
PERMANENT_URL_BASE
|
13
|
+
PERMANENT_URL_BASE = "http://id.library.duke.edu/"
|
14
14
|
ASSIGN_EVENT_SUMMARY = "Permanent ID assignment"
|
15
|
-
SOFTWARE
|
16
|
-
FCREPO3_PID
|
15
|
+
SOFTWARE = Ezid::Client.version
|
16
|
+
FCREPO3_PID = "fcrepo3.pid"
|
17
|
+
FCREPO4_ID = "fcrepo4.id"
|
17
18
|
|
18
19
|
attr_reader :object
|
19
20
|
|
@@ -56,7 +57,7 @@ EZID Metadata:
|
|
56
57
|
def default_metadata
|
57
58
|
{ :profile => "dc",
|
58
59
|
:export => "no",
|
59
|
-
|
60
|
+
FCREPO4_ID => object.id
|
60
61
|
}
|
61
62
|
end
|
62
63
|
|
data/lib/ddr/models.rb
CHANGED
data/lib/ddr/models/base.rb
CHANGED
@@ -35,6 +35,15 @@ module Ddr::Models
|
|
35
35
|
model_and_id
|
36
36
|
end
|
37
37
|
|
38
|
+
def adminMetadata
|
39
|
+
Deprecation.warn(Base, "`adminMetadata` is deprecated; use `admin_metadata` instead.")
|
40
|
+
admin_metadata
|
41
|
+
end
|
42
|
+
|
43
|
+
def admin_metadata
|
44
|
+
@admin_metadata ||= AdministrativeMetadata.new(self)
|
45
|
+
end
|
46
|
+
|
38
47
|
def descMetadata
|
39
48
|
Deprecation.warn(Base, "`descMetadata` is deprecated; use `desc_metadata` instead.")
|
40
49
|
desc_metadata
|
@@ -44,10 +53,6 @@ module Ddr::Models
|
|
44
53
|
@desc_metadata ||= DescriptiveMetadata.new(self)
|
45
54
|
end
|
46
55
|
|
47
|
-
def has_desc_metadata?
|
48
|
-
desc_metadata.has_content?
|
49
|
-
end
|
50
|
-
|
51
56
|
def desc_metadata_terms(*args)
|
52
57
|
return DescriptiveMetadata.unqualified_names.sort if args.empty?
|
53
58
|
arg = args.pop
|
data/lib/ddr/models/file.rb
CHANGED
@@ -5,7 +5,6 @@ module Ddr::Models
|
|
5
5
|
extend Deprecation
|
6
6
|
|
7
7
|
CONTENT = "content".freeze
|
8
|
-
DESC_METADATA = "descMetadata".freeze
|
9
8
|
EXTRACTED_TEXT = "extractedText".freeze
|
10
9
|
FITS = "fits".freeze
|
11
10
|
STRUCT_METADATA = "structMetadata".freeze
|
@@ -14,6 +13,15 @@ module Ddr::Models
|
|
14
13
|
DEFAULT_FILE_EXTENSION = "bin"
|
15
14
|
STRFTIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%LZ"
|
16
15
|
|
16
|
+
def self.const_missing(name)
|
17
|
+
case name
|
18
|
+
when :DESC_METADATA
|
19
|
+
Deprecation.warn(self, "Ddr::File::DESC_METADATA is deprecated." \
|
20
|
+
" Use Ddr::Models::Metadata::DESC_METADATA instead.")
|
21
|
+
Ddr::Models::Metadata::DESC_METADATA
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
17
25
|
def dsid
|
18
26
|
Deprecation.warn(File, "`dsid` is no longer a file method. Use `::File.basename(id)`.")
|
19
27
|
if id
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require "forwardable"
|
2
|
+
|
3
|
+
module Ddr::Models
|
4
|
+
class AdministrativeMetadata
|
5
|
+
extend Forwardable
|
6
|
+
include Metadata
|
7
|
+
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def field_names
|
11
|
+
[ :access_roles,
|
12
|
+
:admin_set,
|
13
|
+
:aspace_id,
|
14
|
+
:depositor,
|
15
|
+
:display_format,
|
16
|
+
:doi,
|
17
|
+
:ead_id,
|
18
|
+
:fcrepo3_pid,
|
19
|
+
:license,
|
20
|
+
:local_id,
|
21
|
+
:permanent_id,
|
22
|
+
:permanent_url,
|
23
|
+
:research_help_contact,
|
24
|
+
:workflow_state
|
25
|
+
]
|
26
|
+
end
|
27
|
+
|
28
|
+
alias_method :unqualified_names, :field_names
|
29
|
+
alias_method :field_readers, :field_names
|
30
|
+
|
31
|
+
def field_writers
|
32
|
+
field_names.map { |name| "#{name}=".to_sym }
|
33
|
+
end
|
34
|
+
|
35
|
+
def property_terms
|
36
|
+
field_names.each_with_object({}) do |term, memo|
|
37
|
+
memo[term] = term
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
attr_reader :object
|
44
|
+
|
45
|
+
def_delegators :object, *field_readers
|
46
|
+
def_delegators :object, *field_writers
|
47
|
+
|
48
|
+
def initialize(object)
|
49
|
+
@object = object
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
@@ -24,6 +24,13 @@ module Ddr::Models
|
|
24
24
|
def field_writers
|
25
25
|
field_names.map { |name| "#{name}=".to_sym }
|
26
26
|
end
|
27
|
+
|
28
|
+
def property_terms
|
29
|
+
mapping.terms.each_with_object({}) do |term, memo|
|
30
|
+
memo[term.unqualified_name] = term.qualified_name
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
27
34
|
end
|
28
35
|
|
29
36
|
self.mappings = [ MetadataMapping.dcterms, MetadataMapping.duketerms ].freeze
|
@@ -1,10 +1,29 @@
|
|
1
1
|
module Ddr::Models
|
2
2
|
module Metadata
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
ADMIN_METADATA = 'admin_metadata'.freeze
|
6
|
+
DESC_METADATA = 'desc_metadata'.freeze
|
7
|
+
|
8
|
+
included do
|
9
|
+
def self.property_term(term)
|
10
|
+
property_terms[term]
|
11
|
+
end
|
12
|
+
end
|
3
13
|
|
4
14
|
def values(term)
|
5
15
|
self.send(term)
|
6
16
|
end
|
7
17
|
|
18
|
+
# Update singular term with value
|
19
|
+
def set_value(term, value)
|
20
|
+
begin
|
21
|
+
self.send("#{term}=", value)
|
22
|
+
rescue NoMethodError
|
23
|
+
raise ArgumentError, "No such term: #{term}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
8
27
|
# Update term with values
|
9
28
|
# Note that empty values (nil or "") are rejected from values array
|
10
29
|
def set_values(term, values)
|
@@ -25,8 +44,13 @@ module Ddr::Models
|
|
25
44
|
def add_value(term, value)
|
26
45
|
begin
|
27
46
|
unless value.blank?
|
28
|
-
|
29
|
-
|
47
|
+
prop_term = self.class.property_term(term)
|
48
|
+
if object.class.properties[prop_term.to_s].multiple?
|
49
|
+
values = values(term).to_a << value
|
50
|
+
set_values term, values
|
51
|
+
else
|
52
|
+
set_value term, value
|
53
|
+
end
|
30
54
|
end
|
31
55
|
rescue NoMethodError
|
32
56
|
raise ArgumentError, "No such term: #{term}"
|
data/lib/ddr/models/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Ddr::Models
|
4
|
+
RSpec.describe AdministrativeMetadata do
|
5
|
+
|
6
|
+
let(:obj) { FactoryGirl.build(:item) }
|
7
|
+
|
8
|
+
describe ".property_term" do
|
9
|
+
it "should return the correct property term" do
|
10
|
+
expect(described_class.property_term(:local_id)).to eq(:local_id)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "using the set_values and add_value methods" do
|
15
|
+
let(:ds) { described_class.new(obj) }
|
16
|
+
before { ds.local_id = 'foo001' }
|
17
|
+
describe "#set_values" do
|
18
|
+
it "should set the value of the term to the one supplied" do
|
19
|
+
ds.set_value :local_id, 'bar002'
|
20
|
+
expect(ds.local_id).to eq('bar002')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
describe "#add_value" do
|
24
|
+
it "should set the term value to the supplied value" do
|
25
|
+
ds.add_value :local_id, 'bar002'
|
26
|
+
expect(ds.local_id).to eq('bar002')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -15,6 +15,11 @@ module Ddr::Models
|
|
15
15
|
expect(subject).to include(*Ddr::Vocab::Vocabulary.term_names(Ddr::Vocab::DukeTerms))
|
16
16
|
end
|
17
17
|
end
|
18
|
+
describe ".property_term" do
|
19
|
+
it "should return the correct property term" do
|
20
|
+
expect(described_class.property_term(:subject)).to eq(:dc_subject)
|
21
|
+
end
|
22
|
+
end
|
18
23
|
describe "using the set_values and add_value methods" do
|
19
24
|
let(:ds) { described_class.new(obj) }
|
20
25
|
before { ds.type = ["Photograph"] }
|
@@ -63,7 +63,7 @@ module Ddr::Models
|
|
63
63
|
it "sets default metadata" do
|
64
64
|
expect(identifier.profile).to eq("dc")
|
65
65
|
expect(identifier.export).to eq("no")
|
66
|
-
expect(identifier["
|
66
|
+
expect(identifier["fcrepo4.id"]).to eq(subject.id)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
describe "object destruction" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddr-models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.beta.
|
4
|
+
version: 3.0.0.beta.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Coble
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-02-
|
12
|
+
date: 2016-02-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -551,6 +551,7 @@ files:
|
|
551
551
|
- lib/ddr/models/licenses/inherited_license.rb
|
552
552
|
- lib/ddr/models/licenses/license.rb
|
553
553
|
- lib/ddr/models/licenses/parent_license.rb
|
554
|
+
- lib/ddr/models/metadata/administrative_metadata.rb
|
554
555
|
- lib/ddr/models/metadata/descriptive_metadata.rb
|
555
556
|
- lib/ddr/models/metadata/metadata.rb
|
556
557
|
- lib/ddr/models/metadata/metadata_mapping.rb
|
@@ -687,6 +688,7 @@ files:
|
|
687
688
|
- spec/managers/technical_metadata_manager_spec.rb
|
688
689
|
- spec/models/active_fedora_base_spec.rb
|
689
690
|
- spec/models/admin_set_spec.rb
|
691
|
+
- spec/models/administrative_metadata_spec.rb
|
690
692
|
- spec/models/attachment_spec.rb
|
691
693
|
- spec/models/collection_spec.rb
|
692
694
|
- spec/models/component_spec.rb
|
@@ -861,6 +863,7 @@ test_files:
|
|
861
863
|
- spec/managers/technical_metadata_manager_spec.rb
|
862
864
|
- spec/models/active_fedora_base_spec.rb
|
863
865
|
- spec/models/admin_set_spec.rb
|
866
|
+
- spec/models/administrative_metadata_spec.rb
|
864
867
|
- spec/models/attachment_spec.rb
|
865
868
|
- spec/models/collection_spec.rb
|
866
869
|
- spec/models/component_spec.rb
|