lib/ddr/models/indexing.rb in ddr-models-2.6.2 vs lib/ddr/models/indexing.rb in ddr-models-2.7.0.rc1
- old
+ new
@@ -1,186 +1,183 @@
require 'time'
-module Ddr
- module Models
- module Indexing
+module Ddr::Models
+ module Indexing
- include Ddr::Index::Fields
+ include Ddr::Index::Fields
- def self.const_missing(name)
- Ddr::Index::Fields.const_missing(name)
- end
+ def self.const_missing(name)
+ Ddr::Index::Fields.const_missing(name)
+ end
- def to_solr(solr_doc=Hash.new, opts={})
- solr_doc = super(solr_doc, opts)
- solr_doc.merge index_fields
- end
+ def to_solr(solr_doc=Hash.new, opts={})
+ solr_doc = super(solr_doc, opts)
+ solr_doc.merge index_fields
+ end
- def index_fields
- fields = {
- ACCESS_ROLE => roles.to_json,
- ADMIN_SET => admin_set,
- ADMIN_SET_TITLE => admin_set_title,
- ARRANGER_FACET => desc_metadata_values('arranger'),
- ASPACE_ID => aspace_id,
- ATTACHED_FILES_HAVING_CONTENT => attached_files_having_content.keys,
- BOX_NUMBER_FACET => desc_metadata_values('box_number'),
- CATEGORY_FACET => desc_metadata_values('category'),
- COLLECTION_TITLE => collection_title,
- COMPANY_FACET => desc_metadata_values('company'),
- COMPOSER_FACET => desc_metadata_values('composer'),
- CONTRIBUTOR_FACET => contributor,
- CREATOR_FACET => creator,
- DATE_FACET => date,
- DATE_SORT => date_sort,
- DEPOSITOR => depositor,
- DISPLAY_FORMAT => display_format,
- DOI => adminMetadata.doi,
- EAD_ID => ead_id,
- ENGRAVER_FACET => desc_metadata_values('engraver'),
- FOLDER_FACET => desc_metadata_values('folder'),
- FORMAT_FACET => format,
- GENRE_FACET => desc_metadata_values('genre'),
- IDENTIFIER_ALL => all_identifiers,
- ILLUSTRATED_FACET => desc_metadata_values('illustrated'),
- ILLUSTRATOR_FACET => desc_metadata_values('illustrator'),
- INSTRUMENTATION_FACET => desc_metadata_values('instrumentation'),
- INTERNAL_URI => internal_uri,
- INTERVIEWER_NAME_FACET => desc_metadata_values('interviewer_name'),
- IS_LOCKED => is_locked,
- LICENSE => license,
- LICENSE_DESCRIPTION => rightsMetadata.license.description.first,
- LICENSE_TITLE => rightsMetadata.license.title.first,
- LICENSE_URL => rightsMetadata.license.url.first,
- LITHOGRAPHER_FACET => desc_metadata_values('lithographer'),
- LOCAL_ID => local_id,
- LYRICIST_FACET => desc_metadata_values('lyricist'),
- MEDIUM_FACET => desc_metadata_values('medium'),
- PERFORMER_FACET => desc_metadata_values('performer'),
- PERMANENT_ID => permanent_id,
- PERMANENT_URL => permanent_url,
- PLACEMENT_COMPANY_FACET => desc_metadata_values('placement_company'),
- POLICY_ROLE => roles.in_policy_scope.agents,
- PRODUCER_FACET => desc_metadata_values('producer'),
- PRODUCT_FACET => desc_metadata_values('product'),
- PUBLICATION_FACET => desc_metadata_values('publication'),
- PUBLISHER_FACET => publisher,
- RESEARCH_HELP_CONTACT => research_help_contact,
- RESOURCE_ROLE => roles.in_resource_scope.agents,
- ROLL_NUMBER_FACET => desc_metadata_values('roll_number'),
- SERIES_FACET => desc_metadata_values('series'),
- SETTING_FACET => desc_metadata_values('setting'),
- SPATIAL_FACET => desc_metadata_values('spatial'),
- SUBJECT_FACET => subject,
- SUBSERIES_FACET => desc_metadata_values('subseries'),
- TEMPORAL_FACET => desc_metadata_values('temporal'),
- TITLE => title_display,
- TONE_FACET => desc_metadata_values('tone'),
- TYPE_FACET => type,
- VOLUME_FACET => desc_metadata_values('volume'),
- WORKFLOW_STATE => workflow_state,
- YEAR_FACET => year_facet,
- }
- if respond_to? :fixity_checks
- last_fixity_check = fixity_checks.last
- fields.merge!(last_fixity_check.to_solr) if last_fixity_check
- end
- if respond_to? :virus_checks
- last_virus_check = virus_checks.last
- fields.merge!(last_virus_check.to_solr) if last_virus_check
- end
- if has_content?
- fields[CONTENT_CREATE_DATE] = Ddr::Utils.solr_date(content.createDate)
- fields[CONTENT_CONTROL_GROUP] = content.controlGroup
- fields[CONTENT_SIZE] = content_size
- fields[CONTENT_SIZE_HUMAN] = content_human_size
- fields[MEDIA_TYPE] = content_type
- fields[MEDIA_MAJOR_TYPE] = content_major_type
- fields[MEDIA_SUB_TYPE] = content_sub_type
- fields.merge! techmd.index_fields
- end
- if has_multires_image?
- fields[MULTIRES_IMAGE_FILE_PATH] = multires_image_file_path
- end
- if has_struct_metadata?
- fields[STRUCT_MAPS] = structure.struct_maps.to_json
- end
- if has_extracted_text?
- fields[EXTRACTED_TEXT] = extractedText.content
- end
- if is_a? Component
- fields[COLLECTION_URI] = collection_uri
- end
- if is_a? Collection
- fields[DEFAULT_LICENSE_DESCRIPTION] = defaultRights.license.description.first
- fields[DEFAULT_LICENSE_TITLE] = defaultRights.license.title.first
- fields[DEFAULT_LICENSE_URL] = defaultRights.license.url.first
- fields[ADMIN_SET_FACET] = admin_set_facet
- fields[COLLECTION_FACET] = collection_facet
- end
- if is_a? Item
- fields[ADMIN_SET_FACET] = admin_set_facet
- fields[COLLECTION_FACET] = collection_facet
- fields[ALL_TEXT] = all_text
- end
- fields
+ def index_fields
+ fields = {
+ ACCESS_ROLE => roles.to_json,
+ ADMIN_SET => admin_set,
+ ADMIN_SET_TITLE => admin_set_title,
+ ARRANGER_FACET => desc_metadata_values('arranger'),
+ ASPACE_ID => aspace_id,
+ ATTACHED_FILES_HAVING_CONTENT => attached_files_having_content.keys,
+ BOX_NUMBER_FACET => desc_metadata_values('box_number'),
+ CATEGORY_FACET => desc_metadata_values('category'),
+ COLLECTION_TITLE => collection_title,
+ COMPANY_FACET => desc_metadata_values('company'),
+ COMPOSER_FACET => desc_metadata_values('composer'),
+ CONTRIBUTOR_FACET => contributor,
+ CREATOR_FACET => creator,
+ DATE_FACET => date,
+ DATE_SORT => date_sort,
+ DC_IS_PART_OF => desc_metadata_values('isPartOf'),
+ DEPOSITOR => depositor,
+ DISPLAY_FORMAT => display_format,
+ DOI => adminMetadata.doi,
+ EAD_ID => ead_id,
+ ENGRAVER_FACET => desc_metadata_values('engraver'),
+ FOLDER_FACET => desc_metadata_values('folder'),
+ FORMAT_FACET => format,
+ GENRE_FACET => desc_metadata_values('genre'),
+ IDENTIFIER_ALL => all_identifiers,
+ ILLUSTRATED_FACET => desc_metadata_values('illustrated'),
+ ILLUSTRATOR_FACET => desc_metadata_values('illustrator'),
+ INGESTED_BY => ingested_by,
+ INGESTION_DATE => ingestion_date,
+ INSTRUMENTATION_FACET => desc_metadata_values('instrumentation'),
+ INTERNAL_URI => internal_uri,
+ INTERVIEWER_NAME_FACET => desc_metadata_values('interviewer_name'),
+ IS_FORMAT_OF => desc_metadata_values('isFormatOf'),
+ IS_LOCKED => is_locked,
+ LICENSE => license,
+ LITHOGRAPHER_FACET => desc_metadata_values('lithographer'),
+ LOCAL_ID => local_id,
+ LYRICIST_FACET => desc_metadata_values('lyricist'),
+ MEDIUM_FACET => desc_metadata_values('medium'),
+ PERFORMER_FACET => desc_metadata_values('performer'),
+ PERMANENT_ID => permanent_id,
+ PERMANENT_URL => permanent_url,
+ PLACEMENT_COMPANY_FACET => desc_metadata_values('placement_company'),
+ POLICY_ROLE => roles.in_policy_scope.agents,
+ PRODUCER_FACET => desc_metadata_values('producer'),
+ PRODUCT_FACET => desc_metadata_values('product'),
+ PUBLICATION_FACET => desc_metadata_values('publication'),
+ PUBLISHER_FACET => publisher,
+ RESEARCH_HELP_CONTACT => research_help_contact,
+ RESOURCE_ROLE => roles.in_resource_scope.agents,
+ RIGHTS_NOTE => rights_note,
+ ROLL_NUMBER_FACET => desc_metadata_values('roll_number'),
+ SERIES_FACET => desc_metadata_values('series'),
+ SETTING_FACET => desc_metadata_values('setting'),
+ SPATIAL_FACET => desc_metadata_values('spatial'),
+ SUBJECT_FACET => subject,
+ SUBSERIES_FACET => desc_metadata_values('subseries'),
+ TEMPORAL_FACET => desc_metadata_values('temporal'),
+ TITLE => title_display,
+ TONE_FACET => desc_metadata_values('tone'),
+ TYPE_FACET => type,
+ VOLUME_FACET => desc_metadata_values('volume'),
+ WORKFLOW_STATE => workflow_state,
+ YEAR_FACET => year_facet,
+ }
+ if respond_to? :fixity_checks
+ last_fixity_check = fixity_checks.last
+ fields.merge!(last_fixity_check.to_solr) if last_fixity_check
end
-
- def title_display
- return title.first if title.present?
- return identifier.first if identifier.present?
- return original_filename if respond_to?(:original_filename) && original_filename.present?
- "[#{pid}]"
+ if respond_to? :virus_checks
+ last_virus_check = virus_checks.last
+ fields.merge!(last_virus_check.to_solr) if last_virus_check
end
-
- def all_identifiers
- identifier + [local_id, permanent_id, pid].compact
+ if has_content?
+ fields[CONTENT_CREATE_DATE] = Ddr::Utils.solr_date(content.createDate)
+ fields[CONTENT_CONTROL_GROUP] = content.controlGroup
+ fields[CONTENT_SIZE] = content_size
+ fields[CONTENT_SIZE_HUMAN] = content_human_size
+ fields[MEDIA_TYPE] = content_type
+ fields[MEDIA_MAJOR_TYPE] = content_major_type
+ fields[MEDIA_SUB_TYPE] = content_sub_type
+ fields.merge! techmd.index_fields
end
-
- def associated_collection
- # XXX Can/should we use SolrDocument here?
- # I.e., ::SolrDocument.find(admin_policy_id)
- admin_policy
+ if has_multires_image?
+ fields[MULTIRES_IMAGE_FILE_PATH] = multires_image_file_path
end
-
- def admin_set_facet
- if admin_set.present?
- admin_set
- elsif associated_collection.present?
- associated_collection.admin_set
- end
+ if has_struct_metadata?
+ fields[STRUCTURE] = structure.dereferenced_structure.to_json
end
-
- def admin_set_title
- code = if admin_set.present?
- admin_set
- elsif associated_collection.present?
- associated_collection.admin_set
- end
- if as = AdminSet.find_by_code(code)
- as.title
- end
+ if has_extracted_text?
+ fields[EXTRACTED_TEXT] = extractedText.content
end
-
- def collection_facet
- associated_collection.internal_uri if associated_collection.present?
+ if is_a? Component
+ fields[COLLECTION_URI] = collection_uri
end
+ if is_a? Collection
+ fields[ADMIN_SET_FACET] = admin_set_facet
+ fields[COLLECTION_FACET] = collection_facet
+ end
+ if is_a? Item
+ fields[ADMIN_SET_FACET] = admin_set_facet
+ fields[COLLECTION_FACET] = collection_facet
+ fields[ALL_TEXT] = all_text
+ end
+ fields
+ end
- def collection_title
- if instance_of?(Collection)
- title_display
- elsif associated_collection.present?
- associated_collection.title_display
- end
+ def title_display
+ return title.first if title.present?
+ return identifier.first if identifier.present?
+ return original_filename if respond_to?(:original_filename) && original_filename.present?
+ "[#{pid}]"
+ end
+
+ def all_identifiers
+ identifier + [local_id, permanent_id, pid].compact
+ end
+
+ def associated_collection
+ # XXX Can/should we use SolrDocument here?
+ # I.e., ::SolrDocument.find(admin_policy_id)
+ admin_policy
+ end
+
+ def admin_set_facet
+ if admin_set.present?
+ admin_set
+ elsif associated_collection.present?
+ associated_collection.admin_set
end
+ end
- def date_sort
- date.first
+ def admin_set_title
+ code = if admin_set.present?
+ admin_set
+ elsif associated_collection.present?
+ associated_collection.admin_set
+ end
+ if as = AdminSet.find_by_code(code)
+ as.title
end
+ end
- def year_facet
- YearFacet.call(self)
+ def collection_facet
+ associated_collection.internal_uri if associated_collection.present?
+ end
+
+ def collection_title
+ if instance_of?(Collection)
+ title_display
+ elsif associated_collection.present?
+ associated_collection.title_display
end
+ end
+ def date_sort
+ date.first
end
+
+ def year_facet
+ YearFacet.call(self)
+ end
+
end
end