active-fedora 9.13.0 → 10.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -19
- data/lib/active_fedora.rb +0 -17
- data/lib/active_fedora/associations.rb +0 -16
- data/lib/active_fedora/associations/builder/association.rb +3 -19
- data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +1 -3
- data/lib/active_fedora/attached_files.rb +2 -108
- data/lib/active_fedora/attributes.rb +4 -100
- data/lib/active_fedora/core.rb +0 -6
- data/lib/active_fedora/datastreams.rb +0 -2
- data/lib/active_fedora/errors.rb +0 -9
- data/lib/active_fedora/file.rb +9 -22
- data/lib/active_fedora/file_configurator.rb +1 -32
- data/lib/active_fedora/identifiable.rb +0 -6
- data/lib/active_fedora/ldp_resource.rb +0 -12
- data/lib/active_fedora/qualified_dublin_core_datastream.rb +1 -1
- data/lib/active_fedora/query_result_builder.rb +0 -17
- data/lib/active_fedora/rdf/datastream_indexing.rb +0 -11
- data/lib/active_fedora/rdf/indexing_service.rb +1 -1
- data/lib/active_fedora/rdf/rdf_datastream.rb +0 -10
- data/lib/active_fedora/relation/finder_methods.rb +2 -21
- data/lib/active_fedora/solr_query_builder.rb +0 -16
- data/lib/active_fedora/solr_service.rb +2 -89
- data/lib/active_fedora/version.rb +1 -1
- data/lib/active_fedora/versionable.rb +0 -8
- data/spec/config_helper.rb +0 -4
- data/spec/integration/attached_files_spec.rb +1 -108
- data/spec/integration/attributes_spec.rb +14 -94
- data/spec/integration/direct_container_spec.rb +2 -2
- data/spec/integration/file_spec.rb +23 -13
- data/spec/integration/indexing_spec.rb +4 -4
- data/spec/integration/json_serialization_spec.rb +4 -57
- data/spec/integration/ntriples_datastream_spec.rb +77 -139
- data/spec/integration/relation_delegation_spec.rb +16 -18
- data/spec/integration/{model_spec.rb → scoping_spec.rb} +10 -14
- data/spec/integration/solr_hit_spec.rb +4 -20
- data/spec/integration/solr_instance_loader_spec.rb +1 -13
- data/spec/integration/versionable_spec.rb +0 -9
- data/spec/samples/models/mods_article.rb +1 -6
- data/spec/spec_helper.rb +0 -3
- data/spec/unit/attached_files_spec.rb +29 -127
- data/spec/unit/attributes_spec.rb +51 -475
- data/spec/unit/base_active_model_spec.rb +12 -47
- data/spec/unit/base_extra_spec.rb +1 -1
- data/spec/unit/code_configurator_spec.rb +2 -10
- data/spec/unit/core_spec.rb +3 -18
- data/spec/unit/file_configurator_spec.rb +0 -80
- data/spec/unit/file_spec.rb +0 -6
- data/spec/unit/has_and_belongs_to_many_association_spec.rb +0 -7
- data/spec/unit/inheritance_spec.rb +0 -12
- data/spec/unit/ntriples_datastream_spec.rb +2 -74
- data/spec/unit/property_spec.rb +0 -3
- data/spec/unit/query_spec.rb +0 -7
- data/spec/unit/querying_spec.rb +24 -0
- data/spec/unit/rdf/indexing_service_spec.rb +32 -20
- data/spec/unit/rdf_resource_datastream_spec.rb +37 -97
- data/spec/unit/solr_query_builder_spec.rb +0 -8
- data/spec/unit/solr_service_spec.rb +0 -13
- metadata +6 -19
- data/config/predicate_mappings.yml +0 -51
- data/lib/active_fedora/attributes/om_attribute.rb +0 -26
- data/lib/active_fedora/attributes/rdf_datastream_attribute.rb +0 -44
- data/lib/active_fedora/attributes/stream_attribute.rb +0 -43
- data/lib/active_fedora/datastream.rb +0 -9
- data/lib/active_fedora/model.rb +0 -31
- data/lib/active_fedora/predicates.rb +0 -122
- data/lib/active_fedora/simple_datastream.rb +0 -92
- data/spec/fixtures/rails_root/config/predicate_mappings.yml +0 -31
- data/spec/integration/field_to_solr_name_spec.rb +0 -36
- data/spec/unit/base_datastream_management_spec.rb +0 -19
- data/spec/unit/model_spec.rb +0 -30
- data/spec/unit/predicates_spec.rb +0 -126
- data/spec/unit/simple_datastream_spec.rb +0 -101
@@ -1,51 +0,0 @@
|
|
1
|
-
# The default namespace maps to the default namespace for generating relationships from solr
|
2
|
-
:default_namespace: info:fedora/fedora-system:def/relations-external#
|
3
|
-
|
4
|
-
# namespace mappings---
|
5
|
-
# you can add specific mappings for your institution by providing the following:
|
6
|
-
# namespace_uri:
|
7
|
-
# :relationship_symbol: relationship_identifier
|
8
|
-
#
|
9
|
-
# For example, if you have the following element in your relationships:
|
10
|
-
#
|
11
|
-
# <oai:itemID>oai:example.edu:changeme:500</oai:itemID>
|
12
|
-
#
|
13
|
-
# With the last two lines of this file uncommented, the relationships hash of your object will include:
|
14
|
-
# :oai_item_id => ["info:fedora/oai:example.edu:changeme:500"]
|
15
|
-
#
|
16
|
-
:predicate_mapping:
|
17
|
-
info:fedora/fedora-system:def/relations-external#:
|
18
|
-
:conforms_to: conformsTo
|
19
|
-
:has_annotation: hasAnnotation
|
20
|
-
:has_collection_member: hasCollectionMember
|
21
|
-
:has_constituent: hasConstituent
|
22
|
-
:has_dependent: hasDependent
|
23
|
-
:has_derivation: hasDerivation
|
24
|
-
:has_description: hasDescription
|
25
|
-
:has_equivalent: hasEquivalent
|
26
|
-
:has_metadata: hasMetadata
|
27
|
-
:has_member: hasMember
|
28
|
-
:has_model: hasModel
|
29
|
-
:has_part: hasPart
|
30
|
-
:has_subset: hasSubset
|
31
|
-
:has_topic: hasTopic
|
32
|
-
:is_annotation_of: isAnnotationOf
|
33
|
-
:is_constituent_of: isConstituentOf
|
34
|
-
:is_dependent_of: isDependentOf
|
35
|
-
:is_derivation_of: isDerivationOf
|
36
|
-
:is_description_of: isDescriptionOf
|
37
|
-
:is_member_of: isMemberOf
|
38
|
-
:is_member_of_collection: isMemberOfCollection
|
39
|
-
:is_metadata_for: isMetadataFor
|
40
|
-
:is_part_of: isPartOf
|
41
|
-
:is_subset_of: isSubsetOf
|
42
|
-
:is_topic_of: isTopicOf
|
43
|
-
http://fedora.info/definitions/v4/model#:
|
44
|
-
:is_contractor_of: isContractorOf
|
45
|
-
:is_deployment_of: isDeploymentOf
|
46
|
-
:has_service: hasService
|
47
|
-
:has_model: hasModel
|
48
|
-
http://www.openarchives.org/OAI/2.0/:
|
49
|
-
:oai_item_id: itemID
|
50
|
-
http://projecthydra.org/ns/relations#:
|
51
|
-
:is_governed_by: isGovernedBy
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module ActiveFedora
|
2
|
-
# Class for attributes that are delegated to an OmDatastream
|
3
|
-
|
4
|
-
class OmAttribute < StreamAttribute
|
5
|
-
# @param [ActiveFedora::Base] obj the object that has the attribute
|
6
|
-
# @param [Object] v value to write to the attribute
|
7
|
-
def writer(obj, v)
|
8
|
-
ds = file_for_attribute(obj, delegate_target)
|
9
|
-
obj.mark_as_changed(field) if obj.value_has_changed?(field, v)
|
10
|
-
terminology = at || [field]
|
11
|
-
ds.send(:update_indexed_attributes, terminology => v)
|
12
|
-
end
|
13
|
-
|
14
|
-
# @param [ActiveFedora::Base] obj the object that has the attribute
|
15
|
-
# @param [Object] opts extra options that are passed to the target reader
|
16
|
-
def reader(obj, *opts)
|
17
|
-
ds = file_for_attribute(obj, delegate_target)
|
18
|
-
terminology = at || [field]
|
19
|
-
if terminology.length == 1 && opts.present?
|
20
|
-
ds.send(terminology.first, *opts)
|
21
|
-
else
|
22
|
-
ds.send(:term_values, *terminology)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module ActiveFedora
|
2
|
-
# Class for attributes that are delegated to a RDFDatastream
|
3
|
-
|
4
|
-
class RdfDatastreamAttribute < StreamAttribute
|
5
|
-
# @param [ActiveFedora::Base] obj the object that has the attribute
|
6
|
-
# @param [Object] v value to write to the attribute
|
7
|
-
def writer(obj, v)
|
8
|
-
node = file_for_attribute(obj, delegate_target)
|
9
|
-
obj.mark_as_changed(field) if obj.value_has_changed?(field, v)
|
10
|
-
term = if at
|
11
|
-
vals = at.dup
|
12
|
-
while vals.length > 1
|
13
|
-
node = node.send(vals.shift)
|
14
|
-
node = node.build if node.empty?
|
15
|
-
node = node.first
|
16
|
-
end
|
17
|
-
vals.first
|
18
|
-
else
|
19
|
-
field
|
20
|
-
end
|
21
|
-
node.send("#{term}=", v)
|
22
|
-
end
|
23
|
-
|
24
|
-
# @param [ActiveFedora::Base] obj the object that has the attribute
|
25
|
-
def reader(obj)
|
26
|
-
node = file_for_attribute(obj, delegate_target)
|
27
|
-
term = if at
|
28
|
-
vals = at.dup
|
29
|
-
while vals.length > 1
|
30
|
-
node = node.send(vals.shift)
|
31
|
-
node = if node.empty?
|
32
|
-
node.build
|
33
|
-
else
|
34
|
-
node.first
|
35
|
-
end
|
36
|
-
end
|
37
|
-
vals.first
|
38
|
-
else
|
39
|
-
field
|
40
|
-
end
|
41
|
-
node.send(term)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
module ActiveFedora
|
2
|
-
# Abstract class for attributes that are delegated to a serialized representation such as a NonRDFSource
|
3
|
-
#
|
4
|
-
# @abstract
|
5
|
-
# @attr [String] delegate_target
|
6
|
-
# @attr [String] at
|
7
|
-
# @attr [String] target_class
|
8
|
-
|
9
|
-
class StreamAttribute < DelegatedAttribute
|
10
|
-
attr_accessor :delegate_target, :at, :target_class
|
11
|
-
|
12
|
-
# @param [Symbol] field the field to find or create
|
13
|
-
# @param [Hash] args
|
14
|
-
# @option args [String] :delegate_target the path to the delegate
|
15
|
-
# @option args [Class] :klass the class to create
|
16
|
-
# @option args [true,false] :multiple (false) true for multi-value fields
|
17
|
-
# @option args [Array<Symbol>] :at path to a deep node
|
18
|
-
def initialize(field, args = {})
|
19
|
-
super
|
20
|
-
self.delegate_target = args.fetch(:delegate_target)
|
21
|
-
self.target_class = args.fetch(:klass)
|
22
|
-
self.at = args.fetch(:at, nil)
|
23
|
-
end
|
24
|
-
|
25
|
-
# Gives the primary solr name for a column. If there is more than one indexer on the field definition, it gives the first
|
26
|
-
def primary_solr_name
|
27
|
-
@datastream ||= target_class.new
|
28
|
-
raise NoMethodError, "the file '#{target_class}' doesn't respond to 'primary_solr_name'" unless @datastream.respond_to?(:primary_solr_name)
|
29
|
-
@datastream.primary_solr_name(field, delegate_target)
|
30
|
-
end
|
31
|
-
|
32
|
-
def type
|
33
|
-
raise NoMethodError, "the file '#{target_class}' doesn't respond to 'type'" unless target_class.respond_to?(:type)
|
34
|
-
target_class.type(field)
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def file_for_attribute(obj, delegate_target)
|
40
|
-
obj.attached_files[delegate_target] || raise(ArgumentError, "Undefined file: `#{delegate_target}' in property #{field}")
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
data/lib/active_fedora/model.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
module ActiveFedora
|
2
|
-
# = ActiveFedora
|
3
|
-
# This module mixes various methods into the including class,
|
4
|
-
# much in the way ActiveRecord does.
|
5
|
-
module Model
|
6
|
-
# @deprecated
|
7
|
-
# Convenience method for getting class constant based on a string
|
8
|
-
# @example
|
9
|
-
# ActiveFedora::Model.class_from_string("Om")
|
10
|
-
# => Om
|
11
|
-
# ActiveFedora::Model.class_from_string("ActiveFedora::RdfNode::TermProxy")
|
12
|
-
# => ActiveFedora::RdfNode::TermProxy
|
13
|
-
# @example Search within ActiveFedora::RdfNode for a class called "TermProxy"
|
14
|
-
# ActiveFedora::Model.class_from_string("TermProxy", ActiveFedora::RdfNode)
|
15
|
-
# => ActiveFedora::RdfNode::TermProxy
|
16
|
-
def self.class_from_string(*args)
|
17
|
-
Deprecation.warn("ActiveFedora::Model.class_from_string has been deprecated and will be removed in ActiveFedora 10.0. Use ActiveFedora::ModelClassifier.class_from_string instead")
|
18
|
-
ActiveFedora::ModelClassifier.class_from_string(*args)
|
19
|
-
end
|
20
|
-
|
21
|
-
# @deprecated
|
22
|
-
# Takes a Fedora URI for a cModel, and returns a
|
23
|
-
# corresponding Model if available
|
24
|
-
# This method should reverse ClassMethods#to_class_uri
|
25
|
-
# @return [Class, False] the class of the model or false, if it does not exist
|
26
|
-
def self.from_class_uri(model_value)
|
27
|
-
Deprecation.warn("ActiveFedora::Model.from_class_uri has been deprecated and will be removed in ActiveFedora 10.0. Use ActiveFedora::ModelClassifier.from_class_uri instead")
|
28
|
-
ActiveFedora::ModelClassifier.new(Array(model_value)).best_model
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,122 +0,0 @@
|
|
1
|
-
module ActiveFedora
|
2
|
-
module Predicates
|
3
|
-
def self.short_predicate(predicate)
|
4
|
-
# for this regex to short-circuit correctly, namespaces must be sorted into descending order by length
|
5
|
-
if match = /^(#{Predicates.predicate_mappings.keys.sort.reverse.join('|')})(.+)$/.match(predicate.to_str)
|
6
|
-
namespace = match[1]
|
7
|
-
predicate = match[2]
|
8
|
-
Predicates.predicate_mappings[namespace].invert[predicate]
|
9
|
-
elsif predicate.is_a? ::RDF::URI
|
10
|
-
predicate.to_s.split('/', 4).last.gsub(/(\/|#)/, '_').underscore
|
11
|
-
else
|
12
|
-
raise "Unable to parse predicate: #{predicate}"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.find_graph_predicate(predicate)
|
17
|
-
Deprecation.warn("find_graph_predicate has been deprecated and will be removed in ActiveFedora 10.0")
|
18
|
-
# TODO, these could be cached
|
19
|
-
case predicate
|
20
|
-
when :has_model, "hasModel", :hasModel
|
21
|
-
xmlns = "http://fedora.info/definitions/v4/model#"
|
22
|
-
begin
|
23
|
-
rel_predicate = predicate_lookup(predicate, xmlns)
|
24
|
-
rescue UnregisteredPredicateError
|
25
|
-
xmlns = nil
|
26
|
-
rel_predicate = nil
|
27
|
-
end
|
28
|
-
else
|
29
|
-
xmlns = "info:fedora/fedora-system:def/relations-external#"
|
30
|
-
begin
|
31
|
-
rel_predicate = predicate_lookup(predicate, xmlns)
|
32
|
-
rescue UnregisteredPredicateError
|
33
|
-
xmlns = nil
|
34
|
-
rel_predicate = nil
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
unless xmlns && rel_predicate
|
39
|
-
rel_predicate, xmlns = find_predicate(predicate)
|
40
|
-
end
|
41
|
-
|
42
|
-
vocabularies[xmlns][rel_predicate]
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.vocabularies(vocabs = {})
|
46
|
-
Deprecation.warn("vocabularies has been deprecated and will be removed in ActiveFedora 10.0")
|
47
|
-
@vocabularies ||= vocabs
|
48
|
-
predicate_mappings.keys.each do |ns|
|
49
|
-
@vocabularies[ns] = ::RDF::Vocabulary.new(ns) unless @vocabularies.key? ns
|
50
|
-
end
|
51
|
-
@vocabularies
|
52
|
-
end
|
53
|
-
|
54
|
-
# If predicate is a symbol, looks up the predicate in the predicate_mappings
|
55
|
-
# If predicate is not a Symbol, returns the predicate untouched
|
56
|
-
# @raise UnregisteredPredicateError if the predicate is a symbol but is not found in the predicate_mappings
|
57
|
-
def self.predicate_lookup(predicate, namespace = "info:fedora/fedora-system:def/relations-external#")
|
58
|
-
if predicate.class == Symbol
|
59
|
-
if predicate_mappings[namespace].key?(predicate)
|
60
|
-
return predicate_mappings[namespace][predicate]
|
61
|
-
else
|
62
|
-
raise ActiveFedora::UnregisteredPredicateError
|
63
|
-
end
|
64
|
-
end
|
65
|
-
predicate
|
66
|
-
end
|
67
|
-
|
68
|
-
def self.predicate_config=(value)
|
69
|
-
unless value.nil? || (value.is_a?(Hash) && [:predicate_mapping, :default_namespace].all? { |key| value.key? key })
|
70
|
-
raise TypeError, "predicate_config must specify :predicate_mapping and :default_namespace"
|
71
|
-
end
|
72
|
-
@@predicate_config = value
|
73
|
-
end
|
74
|
-
|
75
|
-
def self.predicate_config
|
76
|
-
@@predicate_config ||= ActiveFedora.predicate_config
|
77
|
-
end
|
78
|
-
|
79
|
-
def self.predicate_namespaces
|
80
|
-
Deprecation.warn("predicate_namespaces has been deprecated and will be removed in ActiveFedora 10.0")
|
81
|
-
predicate_config[:predicate_namespaces] ||= {}
|
82
|
-
end
|
83
|
-
|
84
|
-
def self.predicate_mappings
|
85
|
-
predicate_config[:predicate_mapping]
|
86
|
-
end
|
87
|
-
|
88
|
-
def self.default_predicate_namespace
|
89
|
-
predicate_config[:default_namespace]
|
90
|
-
end
|
91
|
-
|
92
|
-
def self.find_predicate(predicate)
|
93
|
-
predicate_mappings.each do |namespace, predicates|
|
94
|
-
if predicates.fetch(predicate, nil)
|
95
|
-
return predicates[predicate], namespace
|
96
|
-
end
|
97
|
-
end
|
98
|
-
raise ActiveFedora::UnregisteredPredicateError, "Unregistered predicate: #{predicate.inspect}"
|
99
|
-
end
|
100
|
-
|
101
|
-
# Add/Modify predicates without destroying the other predicate configs
|
102
|
-
#
|
103
|
-
# @example
|
104
|
-
# ActiveFedora::Predicates.set_predicates({
|
105
|
-
# "http://projecthydra.org/ns/relations#"=>{has_profile:"hasProfile"},
|
106
|
-
# "info:fedora/fedora-system:def/relations-external#"=>{
|
107
|
-
# references:"references",
|
108
|
-
# has_derivation: "cameFrom"
|
109
|
-
# },
|
110
|
-
# })
|
111
|
-
def self.set_predicates(new_predicates)
|
112
|
-
predicate_config = ActiveFedora::Predicates.predicate_config
|
113
|
-
new_predicates.each_pair do |ns, predicate_confs|
|
114
|
-
predicate_config[:predicate_mapping][ns] ||= {}
|
115
|
-
predicate_confs.each_pair do |property, value|
|
116
|
-
predicate_config[:predicate_mapping][ns][property] = value
|
117
|
-
end
|
118
|
-
end
|
119
|
-
predicate_config
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
module ActiveFedora
|
2
|
-
# This class represents a simple xml datastream.
|
3
|
-
class SimpleDatastream < OmDatastream
|
4
|
-
extend Deprecation
|
5
|
-
class_attribute :class_fields
|
6
|
-
attr_accessor :fields
|
7
|
-
self.class_fields = []
|
8
|
-
|
9
|
-
set_terminology do |t|
|
10
|
-
t.root(path: "fields", xmlns: nil)
|
11
|
-
end
|
12
|
-
|
13
|
-
define_template :creator do |xml, name|
|
14
|
-
xml.creator do
|
15
|
-
xml.text(name)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
# Constructor. this class will call self.field for each DCTERM. In short, all DCTERMS fields will already exist
|
20
|
-
# when this method returns. Each term is marked as a multivalue string.
|
21
|
-
def initialize(digital_object = nil, dsid = nil, options = {}, &block)
|
22
|
-
Deprecation.warn(SimpleDatastream, "ActiveFedora::SimpleDatastream is deprecated and will be removed in ActiveFedora 10.0")
|
23
|
-
self.fields = {}
|
24
|
-
super
|
25
|
-
end
|
26
|
-
|
27
|
-
# This method generates the various accessor and mutator methods on self for the datastream metadata attributes.
|
28
|
-
# each field will have the 2 magic methods:
|
29
|
-
# name=(arg)
|
30
|
-
# name
|
31
|
-
#
|
32
|
-
#
|
33
|
-
# 'datatype' is a datatype, currently :string, :integer and :date are supported.
|
34
|
-
#
|
35
|
-
# opts is an options hash, which will affect the generation of the xml representation of this datastream.
|
36
|
-
#
|
37
|
-
# Currently supported modifiers:
|
38
|
-
# For +SimpleDatastream+:
|
39
|
-
# :element_attrs =>{:foo=>:bar} - hash of xml element attributes
|
40
|
-
# :xml_node => :nodename - The xml node to be used to represent this object (in dcterms namespace)
|
41
|
-
# :encoding=>foo, or encodings_scheme - causes an xsi:type attribute to be set to 'foo'
|
42
|
-
# :multiple=>true - mark this field as a multivalue field (on by default)
|
43
|
-
#
|
44
|
-
#
|
45
|
-
# There is quite a good example of this class in use in spec/examples/oral_history.rb
|
46
|
-
#
|
47
|
-
# !! Careful: If you declare two fields that correspond to the same xml node without any qualifiers to differentiate them,
|
48
|
-
# you will end up replicating the values in the underlying datastream, resulting in mysterious dubling, quadrupling, etc.
|
49
|
-
# whenever you edit the field's values.
|
50
|
-
def field(name, datatype = :string, opts = {})
|
51
|
-
@fields[name.to_s.to_sym] = { type: datatype, values: [] }.merge(opts)
|
52
|
-
# add term to template
|
53
|
-
self.class.class_fields << name.to_s
|
54
|
-
# add term to terminology
|
55
|
-
return if self.class.terminology.has_term?(name.to_sym)
|
56
|
-
term = OM::XML::Term.new(name.to_sym, { type: datatype }, self.class.terminology)
|
57
|
-
self.class.terminology.add_term(term)
|
58
|
-
term.generate_xpath_queries!
|
59
|
-
end
|
60
|
-
|
61
|
-
def update_indexed_attributes(params = {}, opts = {})
|
62
|
-
raise "can't modify frozen #{self.class}" if frozen?
|
63
|
-
# if the params are just keys, not an array, make then into an array.
|
64
|
-
new_params = {}
|
65
|
-
params.each do |key, val|
|
66
|
-
if key.is_a? Array
|
67
|
-
new_params[key] = val
|
68
|
-
else
|
69
|
-
new_params[[key.to_sym]] = val
|
70
|
-
end
|
71
|
-
end
|
72
|
-
super(new_params, opts)
|
73
|
-
end
|
74
|
-
|
75
|
-
def self.xml_template
|
76
|
-
Nokogiri::XML::Document.parse("<fields/>")
|
77
|
-
end
|
78
|
-
|
79
|
-
def to_solr(solr_doc = {}, _opts = {}) # :nodoc:
|
80
|
-
@fields.each do |field_key, field_info|
|
81
|
-
next if field_key == :location ## FIXME HYDRA-825
|
82
|
-
things = send(field_key)
|
83
|
-
next unless things
|
84
|
-
field_symbol = ActiveFedora.index_field_mapper.solr_name(field_key, type: field_info[:type])
|
85
|
-
things.val.each do |val|
|
86
|
-
::Solrizer::Extractor.insert_solr_field_value(solr_doc, field_symbol, val.to_s)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
solr_doc
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
:default_namespace: info:fedora/fedora-system:def/relations-external#
|
2
|
-
|
3
|
-
:predicate_mapping:
|
4
|
-
info:fedora/fedora-system:def/relations-external#:
|
5
|
-
:is_derivation_of: isDerivationOf
|
6
|
-
:is_metadata_for: isMetadataFor
|
7
|
-
:is_member_of_collection: isMemberOfCollection
|
8
|
-
:has_derivation: hasDerivation
|
9
|
-
:is_annotation_of: isAnnotationOf
|
10
|
-
:is_constituent_of: isConstituentOf
|
11
|
-
:is_dependent_of: isDependentOf
|
12
|
-
:has_collection_member: hasCollectionMember
|
13
|
-
:has_annotation: hasAnnotation
|
14
|
-
:has_constituent: hasConstituent
|
15
|
-
:has_dependent: hasDependent
|
16
|
-
:is_part_of: isPartOf
|
17
|
-
:has_equivalent: hasEquivalent
|
18
|
-
:is_subset_of: isSubsetOf
|
19
|
-
:is_description_of: isDescriptionOf
|
20
|
-
:is_member_of: isMemberOf
|
21
|
-
:has_model: hasModel
|
22
|
-
:conforms_to: conformsTo
|
23
|
-
:has_metadata: hasMetadata
|
24
|
-
:has_subset: hasSubset
|
25
|
-
:has_description: hasDescription
|
26
|
-
:has_part: hasPart
|
27
|
-
:has_member: hasMember
|
28
|
-
http://fedora.info/definitions/v4/model#:
|
29
|
-
:has_model: hasModel
|
30
|
-
# http://www.openarchives.org/OAI/2.0/:
|
31
|
-
# :oai_item_id: itemID
|