ddr-models 1.11.8 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/component.rb +1 -0
  3. data/app/models/item.rb +13 -2
  4. data/config/initializers/active_fedora_base.rb +9 -5
  5. data/config/initializers/subscriptions.rb +3 -0
  6. data/config/locales/groups.en.yml +0 -7
  7. data/lib/ddr/auth/remote_group_service.rb +2 -11
  8. data/lib/ddr/datastreams.rb +5 -4
  9. data/lib/ddr/datastreams/{admin_metadata_datastream.rb → administrative_metadata_datastream.rb} +2 -2
  10. data/lib/ddr/datastreams/descriptive_metadata_datastream.rb +4 -45
  11. data/lib/ddr/datastreams/metadata_datastream.rb +44 -0
  12. data/lib/ddr/datastreams/structural_metadata_datastream.rb +24 -0
  13. data/lib/ddr/events.rb +2 -2
  14. data/lib/ddr/events/deletion_event.rb +12 -0
  15. data/lib/ddr/events/event.rb +0 -15
  16. data/lib/ddr/events/preservation_event_behavior.rb +4 -2
  17. data/lib/ddr/index_fields.rb +32 -36
  18. data/lib/ddr/managers/permanent_id_manager.rb +2 -1
  19. data/lib/ddr/metadata.rb +0 -3
  20. data/lib/ddr/models.rb +1 -1
  21. data/lib/ddr/models/base.rb +4 -0
  22. data/lib/ddr/models/describable.rb +5 -5
  23. data/lib/ddr/models/has_admin_metadata.rb +1 -1
  24. data/lib/ddr/models/has_children.rb +1 -5
  25. data/lib/ddr/models/has_content.rb +10 -0
  26. data/lib/ddr/models/has_struct_metadata.rb +57 -0
  27. data/lib/ddr/models/indexing.rb +0 -10
  28. data/lib/ddr/models/solr_document.rb +1 -5
  29. data/lib/ddr/models/version.rb +1 -1
  30. data/lib/ddr/notifications.rb +2 -1
  31. data/lib/ddr/utils.rb +2 -2
  32. data/lib/ddr/vocab.rb +3 -0
  33. data/lib/ddr/vocab/asset.rb +3 -0
  34. data/lib/ddr/{metadata → vocab}/duke_terms.rb +2 -2
  35. data/lib/ddr/{metadata → vocab}/rdf_vocabulary_parser.rb +2 -2
  36. data/lib/ddr/{metadata → vocab}/sources/duketerms.rdf.xml +0 -0
  37. data/lib/ddr/{metadata → vocab}/vocabulary.rb +2 -2
  38. data/spec/dummy/log/development.log +0 -3829
  39. data/spec/dummy/log/test.log +0 -46079
  40. data/spec/factories/test_model_factories.rb +0 -57
  41. data/spec/models/collection_spec.rb +0 -5
  42. data/spec/models/descriptive_metadata_datastream_spec.rb +20 -4
  43. data/spec/models/events_spec.rb +8 -0
  44. data/spec/models/has_struct_metadata_spec.rb +34 -0
  45. data/spec/models/item_spec.rb +13 -1
  46. data/spec/support/shared_examples_for_ddr_models.rb +11 -1
  47. data/spec/support/shared_examples_for_describables.rb +5 -5
  48. data/spec/support/shared_examples_for_events.rb +4 -40
  49. metadata +13 -23
  50. data/lib/ddr/datastreams/content_metadata_datastream.rb +0 -147
  51. data/lib/ddr/datastreams/preservation_metadata_datastream.rb +0 -13
  52. data/lib/ddr/events/preservation_event_type.rb +0 -24
  53. data/lib/ddr/models/has_content_metadata.rb +0 -16
  54. data/spec/fixtures/contentMetadata.xml +0 -37
  55. data/spec/models/solr_document_spec.rb +0 -23
  56. data/spec/services/remote_group_service_spec.rb +0 -16
  57. data/spec/support/shared_examples_for_event_loggables.rb +0 -3
  58. data/spec/support/shared_examples_for_has_content_metadata.rb +0 -74
  59. data/spec/support/shared_examples_for_licensable.rb +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d10e1ba304fa1a393709a4501e99bafb3faefb5
4
- data.tar.gz: a45c8a2567782b1a6f06734a80974c6aae2912ba
3
+ metadata.gz: e6a7d4a0eb5bff65cd422cdecc6c9a80a1676b13
4
+ data.tar.gz: 16e2b9cd1b296430fdae20b3de5c680acae7c2a5
5
5
  SHA512:
6
- metadata.gz: da57bd80925a6054c93f0740e7f7c6fc9fd9429bf8291c1a3ac9adf158832816ae96a070dfab993dda69fb1706816111197b980e44f8a4180846566631cd7a40
7
- data.tar.gz: ac8cd9b2a5d146ade89a34a773f167631f4a70e287ff6bf7057febe4227fab5c7094313a147bae3324917cb3b48c96191dbe2fcf15aec5e3b01ed4a1972638d1
6
+ metadata.gz: ca20806ec02e8961c8463a0a2a56e52ae58a5c4e6bd53a32bcef760f54d9b6ebaa235621c9a278a8938c6d2889b43cd3f059526edc9167086011cf080f9e7079
7
+ data.tar.gz: d6b05541a63bccf94273ed2b536bd4af1c827d1f3f1c637e8e43ae55881fc455dfe9e2c07492b03c825e8a9081686c2f9296cb39a02b21a2cd29282445eb5573
@@ -6,6 +6,7 @@
6
6
  class Component < Ddr::Models::Base
7
7
 
8
8
  include Ddr::Models::HasContent
9
+ include Ddr::Models::HasStructMetadata
9
10
 
10
11
  belongs_to :parent, :property => :is_part_of, :class_name => 'Item'
11
12
  belongs_to :target, :property => :has_external_target, :class_name => 'Target'
@@ -5,7 +5,6 @@
5
5
  #
6
6
  class Item < Ddr::Models::Base
7
7
 
8
- include Ddr::Models::HasContentMetadata
9
8
  include Ddr::Models::HasChildren
10
9
 
11
10
  has_many :children, property: :is_part_of, class_name: 'Component'
@@ -20,5 +19,17 @@ class Item < Ddr::Models::Base
20
19
  alias_method :collection, :parent
21
20
  alias_method :collection_id, :parent_id
22
21
  alias_method :collection=, :parent=
23
-
22
+
23
+ def children_by_file_use
24
+ file_uses = {}
25
+ sort_key = "#{Ddr::IndexFields::FILE_USE} ASC, #{Ddr::IndexFields::ORDER} ASC"
26
+ results = ActiveFedora::SolrService.query(association_query(:children), rows: 999999, sort: sort_key)
27
+ objs = ActiveFedora::SolrService.lazy_reify_solr_results(results)
28
+ objs.each do |obj|
29
+ file_uses[obj.file_use] ||= []
30
+ file_uses[obj.file_use] << obj
31
+ end
32
+ file_uses
33
+ end
34
+
24
35
  end
@@ -25,10 +25,6 @@ module ActiveFedora
25
25
  can_have_content? && content.has_content?
26
26
  end
27
27
 
28
- def has_content_metadata?
29
- self.is_a?(DulHydra::HasContentMetadata) && self.datastreams[Ddr::Datastreams::CONTENT_METADATA].has_content?
30
- end
31
-
32
28
  def describable?
33
29
  self.is_a? Ddr::Models::Describable
34
30
  end
@@ -45,7 +41,15 @@ module ActiveFedora
45
41
  ds = self.datastreams[Ddr::Datastreams::RIGHTS_METADATA]
46
42
  ds && ds.size && ds.size > 0
47
43
  end
48
-
44
+
45
+ def can_have_struct_metadata?
46
+ datastreams.include? Ddr::Datastreams::STRUCT_METADATA
47
+ end
48
+
49
+ def has_struct_metadata?
50
+ can_have_struct_metadata? && structMetadata.has_content?
51
+ end
52
+
49
53
  def can_have_thumbnail?
50
54
  datastreams.include? "thumbnail"
51
55
  end
@@ -13,3 +13,6 @@ ActiveSupport::Notifications.subscribe(Ddr::Notifications::CREATION, Ddr::Events
13
13
 
14
14
  # Update
15
15
  ActiveSupport::Notifications.subscribe(Ddr::Notifications::UPDATE, Ddr::Events::UpdateEvent)
16
+
17
+ # Deletion
18
+ ActiveSupport::Notifications.subscribe(Ddr::Notifications::DELETION, Ddr::Events::DeletionEvent)
@@ -2,12 +2,5 @@ en:
2
2
  groups:
3
3
  public: Public
4
4
  registered: Duke Community
5
- duke:
6
- staff: Duke Staff
7
- faculty: Duke Faculty
8
- student: Duke Students
9
- affiliate: Duke Affiliates
10
- alumni: Duke Alumni
11
- emeritus: Duke Emeritus Faculty
12
5
  # Grouper group example:
13
6
  # "duke:library:repository:ddr:archivists": Archivists
@@ -2,10 +2,6 @@ module Ddr
2
2
  module Auth
3
3
  class RemoteGroupService < GroupService
4
4
 
5
- AFFILIATIONS = %w( faculty student staff affiliate alumni emeritus )
6
- AFFILIATION_GROUP_MAP = AFFILIATIONS.map { |a| [a, "duke.#{a}"] }.to_h
7
- AFFILIATION_RE = Regexp.new('(%{a})(?=@duke\.edu)' % {a: AFFILIATIONS.join("|")})
8
-
9
5
  attr_reader :env
10
6
 
11
7
  def initialize(env = nil)
@@ -13,12 +9,12 @@ module Ddr
13
9
  end
14
10
 
15
11
  def append_groups
16
- GrouperService.repository_group_names + AFFILIATION_GROUP_MAP.values
12
+ GrouperService.repository_group_names
17
13
  end
18
14
 
19
15
  def append_user_groups(user)
20
16
  if env && env.key?(Ddr::Auth.remote_groups_env_key)
21
- remote_groups + affiliation_groups
17
+ remote_groups
22
18
  else
23
19
  GrouperService.user_group_names(user)
24
20
  end
@@ -34,11 +30,6 @@ module Ddr
34
30
  groups
35
31
  end
36
32
 
37
- def affiliation_groups
38
- affiliations = env["affiliation"] ? env["affiliation"].scan(AFFILIATION_RE).flatten : []
39
- affiliations.map { |affiliation| AFFILIATION_GROUP_MAP[affiliation] }.compact
40
- end
41
-
42
33
  end
43
34
  end
44
35
  end
@@ -4,14 +4,15 @@ module Ddr
4
4
  module Datastreams
5
5
  extend ActiveSupport::Autoload
6
6
 
7
+ ADMIN_METADATA = "adminMetadata"
7
8
  CONTENT = "content"
8
- CONTENT_METADATA = "contentMetadata"
9
9
  DC = "DC"
10
10
  DEFAULT_RIGHTS = "defaultRights"
11
11
  DESC_METADATA = "descMetadata"
12
12
  PROPERTIES = "properties"
13
13
  RELS_EXT = "RELS-EXT"
14
14
  RIGHTS_METADATA = "rightsMetadata"
15
+ STRUCT_METADATA = "structMetadata"
15
16
  THUMBNAIL = "thumbnail"
16
17
 
17
18
  CHECKSUM_TYPE_MD5 = "MD5"
@@ -22,11 +23,11 @@ module Ddr
22
23
 
23
24
  CHECKSUM_TYPES = [ CHECKSUM_TYPE_MD5, CHECKSUM_TYPE_SHA1, CHECKSUM_TYPE_SHA256, CHECKSUM_TYPE_SHA384, CHECKSUM_TYPE_SHA512 ]
24
25
 
25
- autoload :AdminMetadataDatastream
26
- autoload :ContentMetadataDatastream
26
+ autoload :MetadataDatastream
27
+ autoload :AdministrativeMetadataDatastream
27
28
  autoload :DescriptiveMetadataDatastream
28
- #autoload :PreservationMetadataDatastream
29
29
  autoload :PropertiesDatastream
30
+ autoload :StructuralMetadataDatastream
30
31
  autoload :DatastreamBehavior
31
32
 
32
33
  end
@@ -2,7 +2,7 @@ require "rdf-vocab"
2
2
 
3
3
  module Ddr
4
4
  module Datastreams
5
- class AdminMetadataDatastream < ActiveFedora::NtriplesRDFDatastream
5
+ class AdministrativeMetadataDatastream < MetadataDatastream
6
6
 
7
7
  property :permanent_id, predicate: Ddr::Vocab::Asset.permanentId
8
8
 
@@ -15,7 +15,7 @@ module Ddr
15
15
  property :workflow_state, predicate: Ddr::Vocab::Asset.workflowState
16
16
 
17
17
  Ddr::Vocab::Roles.each do |term|
18
- property Ddr::Metadata::Vocabulary.term_name(Ddr::Vocab::Roles, term),
18
+ property Ddr::Vocab::Vocabulary.term_name(Ddr::Vocab::Roles, term),
19
19
  predicate: term do |index|
20
20
  index.as :symbol
21
21
  end
@@ -1,9 +1,9 @@
1
1
  module Ddr
2
2
  module Datastreams
3
- class DescriptiveMetadataDatastream < ActiveFedora::NtriplesRDFDatastream
3
+ class DescriptiveMetadataDatastream < MetadataDatastream
4
4
 
5
5
  class_attribute :vocabularies
6
- self.vocabularies = [RDF::DC, Ddr::Metadata::DukeTerms].freeze
6
+ self.vocabularies = [RDF::DC, Ddr::Vocab::DukeTerms].freeze
7
7
 
8
8
  def self.default_attributes
9
9
  super.merge(:mimeType => 'application/n-triples')
@@ -22,57 +22,16 @@ module Ddr
22
22
  indexers.fetch(term_name, default_indexers)
23
23
  end
24
24
 
25
- def self.term_names
26
- terms = []
27
- vocabularies.each do |vocab|
28
- terms |= Ddr::Metadata::Vocabulary.term_names(vocab)
29
- end
30
- terms.sort
31
- end
32
-
33
25
  # Add terms from the vocabularies as properties
34
26
  vocabularies.each do |vocab|
35
- Ddr::Metadata::Vocabulary.property_terms(vocab).each do |term|
36
- term_name = Ddr::Metadata::Vocabulary.term_name(vocab, term)
27
+ Ddr::Vocab::Vocabulary.property_terms(vocab).each do |term|
28
+ term_name = Ddr::Vocab::Vocabulary.term_name(vocab, term)
37
29
  property term_name, predicate: term do |index|
38
30
  index.as *indexers_for(term_name)
39
31
  end
40
32
  end
41
33
  end
42
34
 
43
- # Returns ActiveFedora::Rdf::Term now that this is an RDF datastream
44
- def values term
45
- term == :format ? self.format : self.send(term)
46
- end
47
-
48
- # Update term with values
49
- # Note that empty values (nil or "") are rejected from values array
50
- def set_values term, values
51
- if values.respond_to?(:reject!)
52
- values.reject! { |v| v.blank? }
53
- else
54
- values = nil if values.blank?
55
- end
56
- begin
57
- self.send("#{term}=", values)
58
- rescue NoMethodError
59
- raise ArgumentError, "No such term: #{term}"
60
- end
61
- end
62
-
63
- # Add value to term
64
- # Note that empty value (nil or "") is not added
65
- def add_value term, value
66
- begin
67
- unless value.blank?
68
- values = values(term).to_a << value
69
- set_values term, values
70
- end
71
- rescue NoMethodError
72
- raise ArgumentError, "No such term: #{term}"
73
- end
74
- end
75
-
76
35
  # Override ActiveFedora::Rdf::Indexing#apply_prefix(name) to not
77
36
  # prepend the index field name with a string based on the datastream id.
78
37
  def apply_prefix(name)
@@ -0,0 +1,44 @@
1
+ module Ddr
2
+ module Datastreams
3
+ class MetadataDatastream < ActiveFedora::NtriplesRDFDatastream
4
+
5
+ def self.term_names
6
+ properties.keys.map(&:to_sym).sort
7
+ end
8
+
9
+ # Returns ActiveTriplesTerm now that this is an RDF datastream
10
+ def values term
11
+ term == :format ? self.format : self.send(term)
12
+ end
13
+
14
+ # Update term with values
15
+ # Note that empty values (nil or "") are rejected from values array
16
+ def set_values term, values
17
+ if values.respond_to?(:reject!)
18
+ values.reject! { |v| v.blank? }
19
+ else
20
+ values = nil if values.blank?
21
+ end
22
+ begin
23
+ self.send("#{term}=", values)
24
+ rescue NoMethodError
25
+ raise ArgumentError, "No such term: #{term}"
26
+ end
27
+ end
28
+
29
+ # Add value to term
30
+ # Note that empty value (nil or "") is not added
31
+ def add_value term, value
32
+ begin
33
+ unless value.blank?
34
+ values = values(term).to_a << value
35
+ set_values term, values
36
+ end
37
+ rescue NoMethodError
38
+ raise ArgumentError, "No such term: #{term}"
39
+ end
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,24 @@
1
+ require "rdf-vocab"
2
+
3
+ module Ddr
4
+ module Datastreams
5
+ class StructuralMetadataDatastream < MetadataDatastream
6
+
7
+ # analogous to METS fileSec "USE" attribute
8
+ property :file_use, predicate: Ddr::Vocab::Asset.fileUse do |index|
9
+ index.as :stored_sortable
10
+ end
11
+
12
+ # analogous to METS fileSec "SEQ" or structMap "ORDER" attribute
13
+ property :order, predicate: Ddr::Vocab::Asset.order do |index|
14
+ index.as :stored_sortable
15
+ end
16
+
17
+ # analogous to METS fileSec "GROUPID" attribute
18
+ property :file_group, predicate: Ddr::Vocab::Asset.fileGroup do |index|
19
+ index.as :stored_sortable
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -4,14 +4,14 @@ module Ddr
4
4
 
5
5
  autoload :Event
6
6
  autoload :CreationEvent
7
+ autoload :DeletionEvent
7
8
  autoload :FixityCheckEvent
8
9
  autoload :IngestionEvent
9
10
  autoload :UpdateEvent
10
11
  autoload :ValidationEvent
11
12
  autoload :VirusCheckEvent
12
- autoload :PreservationEventType
13
13
  autoload :PreservationEventBehavior
14
14
  autoload :ReindexObjectAfterSave
15
15
 
16
16
  end
17
- end
17
+ end
@@ -0,0 +1,12 @@
1
+ module Ddr
2
+ module Events
3
+ class DeletionEvent < Event
4
+
5
+ include PreservationEventBehavior
6
+
7
+ self.description = "Object deleted"
8
+ self.preservation_event_type = :del
9
+
10
+ end
11
+ end
12
+ end
@@ -34,7 +34,6 @@ module Ddr
34
34
 
35
35
  validates_presence_of :event_date_time, :pid
36
36
  validates :outcome, inclusion: {in: OUTCOMES, message: "\"%{value}\" is not a valid event outcome"}
37
- validate :object_exists # unless/until we have a deaccession-type of event
38
37
 
39
38
  after_initialize :set_defaults
40
39
  before_save { failure! if exception.present? }
@@ -126,13 +125,6 @@ module Ddr
126
125
  event_date_time.utc.strftime DATE_TIME_FORMAT
127
126
  end
128
127
 
129
- # Return boolean indicator of object existence
130
- def object_exists?
131
- !object.nil?
132
- rescue ActiveFedora::ObjectNotFoundError => e
133
- false
134
- end
135
-
136
128
  protected
137
129
 
138
130
  def set_defaults
@@ -147,13 +139,6 @@ module Ddr
147
139
  }
148
140
  end
149
141
 
150
- # Validation method
151
- def object_exists
152
- unless object_exists?
153
- errors.add(:pid, "Object \"#{pid}\" does not exist in the repository")
154
- end
155
- end
156
-
157
142
  def default_software
158
143
  DDR_SOFTWARE
159
144
  end
@@ -1,3 +1,5 @@
1
+ require "rdf-vocab"
2
+
1
3
  module Ddr
2
4
  module Events
3
5
  module PreservationEventBehavior
@@ -16,7 +18,7 @@ module Ddr
16
18
 
17
19
  def as_premis
18
20
  Ddr::Metadata::PremisEvent.new.tap do |doc|
19
- doc.event_type = PreservationEventType.label_for(preservation_event_type)
21
+ doc.event_type = RDF::Vocab::PremisEventType.label_for(preservation_event_type)
20
22
  doc.event_id_type = EVENT_ID_TYPE
21
23
  doc.event_id_value = id
22
24
  doc.event_detail = summary
@@ -34,4 +36,4 @@ module Ddr
34
36
 
35
37
  end
36
38
  end
37
- end
39
+ end
@@ -5,42 +5,38 @@ module Ddr
5
5
  ActiveFedora::SolrService.solr_name(*args)
6
6
  end
7
7
 
8
- ACTIVE_FEDORA_MODEL = solr_name :active_fedora_model, :stored_sortable
9
- COLLECTION_URI = solr_name :collection_uri, :symbol
10
- CONTENT_CONTROL_GROUP = solr_name :content_control_group, :searchable, type: :string
11
- CONTENT_METADATA_PARSED = solr_name :content_metadata_parsed, :symbol
12
- CONTENT_SIZE = solr_name :content_size, :stored_sortable, type: :integer
13
- CONTENT_SIZE_HUMAN = solr_name :content_size_human, :symbol
14
- DEFAULT_LICENSE_DESCRIPTION = solr_name :default_license_description, type: :string
15
- DEFAULT_LICENSE_TITLE = solr_name :default_license_title, type: :string
16
- DEFAULT_LICENSE_URL = solr_name :default_license_url, type: :string
17
- HAS_MODEL = solr_name :has_model, :symbol
18
- IDENTIFIER = solr_name :identifier, :stored_sortable
19
- INTERNAL_URI = solr_name :internal_uri, :stored_sortable
20
- IS_ATTACHED_TO = solr_name :is_attached_to, :symbol
21
- IS_EXTERNAL_TARGET_FOR = solr_name :is_external_target_for, :symbol
22
- IS_GOVERNED_BY = solr_name :is_governed_by, :symbol
23
- IS_MEMBER_OF = solr_name :is_member_of, :symbol
24
- IS_MEMBER_OF_COLLECTION = solr_name :is_member_of_collection, :symbol
25
- IS_PART_OF = solr_name :is_part_of, :symbol
26
- LAST_FIXITY_CHECK_ON = solr_name :last_fixity_check_on, :stored_sortable, type: :date
27
- LAST_FIXITY_CHECK_OUTCOME = solr_name :last_fixity_check_outcome, :symbol
28
- LAST_VIRUS_CHECK_ON = solr_name :last_virus_check_on, :stored_sortable, type: :date
29
- LAST_VIRUS_CHECK_OUTCOME = solr_name :last_virus_check_outcome, :symbol
30
- LICENSE_DESCRIPTION = solr_name :license_description, type: :string
31
- LICENSE_TITLE = solr_name :license_title, type: :string
32
- LICENSE_URL = solr_name :license_url, type: :string
33
- MEDIA_SUB_TYPE = solr_name :content_media_sub_type, :facetable
34
- MEDIA_MAJOR_TYPE = solr_name :content_media_major_type, :facetable
35
- MEDIA_TYPE = solr_name :content_media_type, :symbol
36
- OBJECT_PROFILE = solr_name :object_profile, :displayable
37
- OBJECT_STATE = solr_name :object_state, :stored_sortable
38
- OBJECT_CREATE_DATE = solr_name :system_create, :stored_sortable, type: :date
39
- OBJECT_MODIFIED_DATE = solr_name :system_modified, :stored_sortable, type: :date
40
- PERMANENT_ID = solr_name :permanent_id, :stored_sortable, type: :string
41
- PERMANENT_URL = solr_name :permanent_url, :stored_sortable, type: :string
42
- TITLE = solr_name :title, :stored_sortable
43
- WORKFLOW_STATE = solr_name :workflow_state, :stored_sortable
8
+ ACTIVE_FEDORA_MODEL = solr_name :active_fedora_model, :stored_sortable
9
+ COLLECTION_URI = solr_name :collection_uri, :symbol
10
+ CONTENT_CONTROL_GROUP = solr_name :content_control_group, :searchable, type: :string
11
+ CONTENT_SIZE = solr_name :content_size, :stored_sortable, type: :integer
12
+ CONTENT_SIZE_HUMAN = solr_name :content_size_human, :symbol
13
+ FILE_GROUP = solr_name :struct_metadata__file_group, :stored_sortable
14
+ FILE_USE = solr_name :struct_metadata__file_use, :stored_sortable
15
+ HAS_MODEL = solr_name :has_model, :symbol
16
+ IDENTIFIER = solr_name :identifier, :stored_sortable
17
+ INTERNAL_URI = solr_name :internal_uri, :stored_sortable
18
+ IS_ATTACHED_TO = solr_name :is_attached_to, :symbol
19
+ IS_EXTERNAL_TARGET_FOR = solr_name :is_external_target_for, :symbol
20
+ IS_GOVERNED_BY = solr_name :is_governed_by, :symbol
21
+ IS_MEMBER_OF = solr_name :is_member_of, :symbol
22
+ IS_MEMBER_OF_COLLECTION = solr_name :is_member_of_collection, :symbol
23
+ IS_PART_OF = solr_name :is_part_of, :symbol
24
+ LAST_FIXITY_CHECK_ON = solr_name :last_fixity_check_on, :stored_sortable, type: :date
25
+ LAST_FIXITY_CHECK_OUTCOME = solr_name :last_fixity_check_outcome, :symbol
26
+ LAST_VIRUS_CHECK_ON = solr_name :last_virus_check_on, :stored_sortable, type: :date
27
+ LAST_VIRUS_CHECK_OUTCOME = solr_name :last_virus_check_outcome, :symbol
28
+ MEDIA_SUB_TYPE = solr_name :content_media_sub_type, :facetable
29
+ MEDIA_MAJOR_TYPE = solr_name :content_media_major_type, :facetable
30
+ MEDIA_TYPE = solr_name :content_media_type, :symbol
31
+ OBJECT_PROFILE = solr_name :object_profile, :displayable
32
+ OBJECT_STATE = solr_name :object_state, :stored_sortable
33
+ OBJECT_CREATE_DATE = solr_name :system_create, :stored_sortable, type: :date
34
+ OBJECT_MODIFIED_DATE = solr_name :system_modified, :stored_sortable, type: :date
35
+ ORDER = solr_name :struct_metadata__order, :stored_sortable, type: :integer
36
+ PERMANENT_ID = solr_name :permanent_id, :stored_sortable, type: :string
37
+ PERMANENT_URL = solr_name :permanent_url, :stored_sortable, type: :string
38
+ TITLE = solr_name :title, :stored_sortable
39
+ WORKFLOW_STATE = solr_name :workflow_state, :stored_sortable
44
40
 
45
41
  end
46
42
  end