Module: Dor
- Extended by:
- ActiveSupport::Autoload
- Defined in:
- lib/dor/config.rb,
lib/dor/version.rb,
lib/dor-services.rb,
lib/dor/exceptions.rb,
lib/dor/models/set.rb,
lib/dor/models/item.rb,
lib/dor/models/geoable.rb,
lib/dor/workflow/graph.rb,
lib/dor/models/abstract.rb,
lib/dor/models/editable.rb,
lib/dor/models/eventable.rb,
lib/dor/models/shelvable.rb,
lib/dor/workflow/process.rb,
lib/dor/models/collection.rb,
lib/dor/models/governable.rb,
lib/dor/models/itemizable.rb,
lib/dor/models/rightsable.rb,
lib/dor/workflow/document.rb,
lib/dor/models/contentable.rb,
lib/dor/models/describable.rb,
lib/dor/models/embargoable.rb,
lib/dor/models/preservable.rb,
lib/dor/models/processable.rb,
lib/dor/models/publishable.rb,
lib/dor/models/releaseable.rb,
lib/dor/models/versionable.rb,
lib/dor/models/assembleable.rb,
lib/dor/models/identifiable.rb,
lib/dor/datastreams/events_ds.rb,
lib/dor/services/suri_service.rb,
lib/dor/models/workflow_object.rb,
lib/dor/services/merge_service.rb,
lib/dor/datastreams/workflow_ds.rb,
lib/dor/services/search_service.rb,
lib/dor/services/cleanup_service.rb,
lib/dor/services/indexing_service.rb,
lib/dor/services/metadata_service.rb,
lib/dor/models/admin_policy_object.rb,
lib/dor/datastreams/geo_metadata_ds.rb,
lib/dor/services/sdr_ingest_service.rb,
lib/dor/datastreams/desc_metadata_ds.rb,
lib/dor/datastreams/role_metadata_ds.rb,
lib/dor/services/registration_service.rb,
lib/dor/datastreams/rights_metadata_ds.rb,
lib/dor/services/cleanup_reset_service.rb,
lib/dor/datastreams/content_metadata_ds.rb,
lib/dor/datastreams/embargo_metadata_ds.rb,
lib/dor/datastreams/version_metadata_ds.rb,
lib/dor/services/digital_stacks_service.rb,
lib/dor/datastreams/identity_metadata_ds.rb,
lib/dor/services/reset_workspace_service.rb,
lib/dor/datastreams/simple_dublin_core_ds.rb,
lib/dor/datastreams/workflow_definition_ds.rb,
lib/dor/services/technical_metadata_service.rb,
lib/dor/datastreams/default_object_rights_ds.rb,
lib/dor/datastreams/administrative_metadata_ds.rb
Defined Under Namespace
Modules: Assembleable, Contentable, Describable, Editable, Embargoable, Eventable, Geoable, Governable, Identifiable, Itemizable, Preservable, Processable, Publishable, Releaseable, Rightsable, Shelvable, Versionable, Versioning, Workflow Classes: Abstract, AdminPolicyObject, AdministrativeMetadataDS, Agreement, CleanupResetService, CleanupService, Collection, Configuration, ContentMetadataDS, DefaultObjectRightsDS, DescMetadataDS, DigitalStacksService, DuplicateIdError, EmbargoMetadataDS, EventsDS, Exception, GeoMetadataDS, IdentityMetadataDS, IndexingService, Item, MergeService, MetadataError, MetadataService, ParameterError, RegistrationService, ResetWorkspaceService, RightsMetadataDS, RoleMetadataDS, SdrIngestService, SearchService, Set, SimpleDublinCoreDs, SuriService, TechnicalMetadataService, VersionMetadataDS, VersionTag, WorkflowDefinitionDs, WorkflowDs, WorkflowObject
Constant Summary collapse
- Config =
Configuration.new(YAML.load(File.read(File.('../../../config/config_defaults.yml', __FILE__))))
- VERSION =
'5.16.0'.freeze
- INDEX_VERSION_FIELD =
'dor_services_version_ssi'.freeze
- @@registered_classes =
{}
Class Method Summary collapse
- .configure(*args, &block) ⇒ Object
- .ensure_models_loaded! ⇒ Object deprecated Deprecated.
-
.find(pid, opts = {}) ⇒ Object
Get objectType information from solr and load the correct class the first time, saving the overhead of using ActiveFedora::Base#adapt_to.
-
.find_all(query, opts = {}) ⇒ Object
TODO: return enumerable and lazy load_instance TODO: restrict fieldlist (fl) for non-:lightweight queries.
-
.load_instance(pid) ⇒ Object
Load an object and inspect its identityMetadata to figure out what class to adapt it to.
- .logger ⇒ Object
- .root ⇒ Object
Instance Method Summary collapse
Class Method Details
.configure(*args, &block) ⇒ Object
15 16 17 |
# File 'lib/dor-services.rb', line 15 def configure(*args, &block) Dor::Config.configure *args, &block end |
.ensure_models_loaded! ⇒ Object
62 63 64 65 |
# File 'lib/dor-services.rb', line 62 def ensure_models_loaded! ActiveSupport::Deprecation.warn 'Dor.ensure_models_loaded! is unnecessary and has been deprecated.' eager_load! end |
.find(pid, opts = {}) ⇒ Object
Get objectType information from solr and load the correct class the first time, saving the overhead of using ActiveFedora::Base#adapt_to. It falls back to Dor.load_instance() if the item is not in the index, or is improperly indexed.
34 35 36 37 |
# File 'lib/dor-services.rb', line 34 def find(pid, opts = {}) opts[:rows] = 1 # we know we are going to just pay attention to the .first doc anyway find_all(%(id:"#{pid}"), opts).first || load_instance(pid) end |
.find_all(query, opts = {}) ⇒ Object
TODO: return enumerable and lazy load_instance TODO: restrict fieldlist (fl) for non-:lightweight queries
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/dor-services.rb', line 41 def find_all(query, opts = {}) resp = SearchService.query query, opts resp['response']['docs'].collect do |solr_doc| doc_version = solr_doc[INDEX_VERSION_FIELD].first rescue '0.0.0' doc_version = Gem::Version.new(doc_version) object_type = Array(solr_doc[ActiveFedora::SolrService.solr_name('objectType', :symbol)]).first object_class = registered_classes[object_type] || ActiveFedora::Base if opts[:lightweight] && doc_version >= Gem::Version.new('3.1.0') begin object_class.load_instance_from_solr solr_doc['id'], solr_doc rescue Exception => e Dor.logger.warn("Exception: '#{e.}' trying to load #{solr_doc['id']} from solr. Loading from Fedora") load_instance(solr_doc['id']) end else load_instance solr_doc['id'] end end end |
.load_instance(pid) ⇒ Object
Load an object and inspect its identityMetadata to figure out what class to adapt it to. This is necessary when the object is not indexed, or the index is missing the objectType property.
23 24 25 26 27 |
# File 'lib/dor-services.rb', line 23 def load_instance(pid) obj = Dor::Abstract.find pid, cast: false return nil if obj.new_record? obj.adapt_to_cmodel end |
.logger ⇒ Object
71 72 73 74 75 76 77 78 |
# File 'lib/dor-services.rb', line 71 def logger require 'logger' @logger ||= if defined?(::Rails) && ::Rails.respond_to?(:logger) Rails.logger else Logger.new(STDOUT) end end |
.root ⇒ Object
67 68 69 |
# File 'lib/dor-services.rb', line 67 def root File.dirname(__FILE__) end |