Class: Dor::StatusService
- Inherits:
-
Object
- Object
- Dor::StatusService
- Defined in:
- lib/dor/services/status_service.rb
Overview
Query the processing status of an item. This has a dependency on the workflow service (app) to get milestones.
Constant Summary collapse
- STATUS_CODE_DISP_TXT =
verbiage we want to use to describe an item when it has completed a particular step
{ 0 => 'Unknown Status', # if there are no milestones for the current version, someone likely messed up the versioning process. 1 => 'Registered', 2 => 'In accessioning', 3 => 'In accessioning (described)', 4 => 'In accessioning (described, published)', 5 => 'In accessioning (described, published, deposited)', 6 => 'Accessioned', 7 => 'Accessioned (indexed)', 8 => 'Accessioned (indexed, ingested)', 9 => 'Opened' }.freeze
- STEPS =
milestones from accessioning and the order they happen in
{ 'registered' => 1, 'submitted' => 2, 'described' => 3, 'published' => 4, 'deposited' => 5, 'accessioned' => 6, 'indexed' => 7, 'shelved' => 8, 'opened' => 9 }.freeze
Class Method Summary collapse
- .status(work, include_time = false) ⇒ Object
-
.status_info(work) ⇒ Hash{Symbol => Object}
Including :current_version, :status_code and :status_time.
Instance Method Summary collapse
-
#initialize(work) ⇒ StatusService
constructor
A new instance of StatusService.
- #milestones ⇒ Object
-
#status(include_time = false) ⇒ String
Single composed status from status_info.
-
#status_info ⇒ Hash{Symbol => Object}
Including :current_version, :status_code and :status_time.
Constructor Details
#initialize(work) ⇒ StatusService
Returns a new instance of StatusService.
43 44 45 |
# File 'lib/dor/services/status_service.rb', line 43 def initialize(work) @work = work end |
Class Method Details
.status(work, include_time = false) ⇒ Object
39 40 41 |
# File 'lib/dor/services/status_service.rb', line 39 def self.status(work, include_time = false) new(work).status(include_time) end |
.status_info(work) ⇒ Hash{Symbol => Object}
Returns including :current_version, :status_code and :status_time.
35 36 37 |
# File 'lib/dor/services/status_service.rb', line 35 def self.status_info(work) new(work).status_info end |
Instance Method Details
#milestones ⇒ Object
78 79 80 |
# File 'lib/dor/services/status_service.rb', line 78 def milestones @milestones ||= Dor::Config.workflow.client.get_milestones('dor', work.pid) end |
#status(include_time = false) ⇒ String
Returns single composed status from status_info.
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/dor/services/status_service.rb', line 66 def status(include_time = false) status_info_hash = status_info current_version = status_info_hash[:current_version] status_code = status_info_hash[:status_code] status_time = status_info_hash[:status_time] # use the translation table to get the appropriate verbage for the latest step result = "v#{current_version} #{STATUS_CODE_DISP_TXT[status_code]}" result += " #{format_date(status_time)}" if include_time result end |
#status_info ⇒ Hash{Symbol => Object}
Returns including :current_version, :status_code and :status_time.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/dor/services/status_service.rb', line 48 def status_info status_code = 0 status_time = nil # for each milestone in the current version, see if it comes after the current 'last' step, if so, make it the last and record the date/time current_milestones.each do |m| m_name = m[:milestone] m_time = m[:at].utc.xmlschema next unless STEPS.key?(m_name) && (!status_time || m_time > status_time) status_code = STEPS[m_name] status_time = m_time end { current_version: current_version, status_code: status_code, status_time: status_time } end |