Class: Ddr::Events::Event
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Ddr::Events::Event
- Defined in:
- lib/ddr/events/event.rb
Direct Known Subclasses
CreationEvent, DeletionEvent, FixityCheckEvent, IngestionEvent, UpdateEvent, ValidationEvent, VirusCheckEvent
Constant Summary collapse
- DATE_TIME_FORMAT =
Event date time - for PREMIS and Solr
"%Y-%m-%dT%H:%M:%S.%LZ"
- DEFAULT_SORT_ORDER =
set default ordering
"event_date_time ASC"
- SUCCESS =
Outcomes
"success"
- FAILURE =
"failure"
- OUTCOMES =
[SUCCESS, FAILURE]
- VALID =
Validation constants
"VALID"
- INVALID =
"INVALID"
- SYSTEM =
For rendering “performed by” when no associated user
"SYSTEM"
- DDR_SOFTWARE =
"ddr-models #{Ddr::Models::VERSION}"
Class Method Summary collapse
-
.call(*args) ⇒ Object
Receive message sent by ActiveSupport::Notifications.
-
.for_object(obj) ⇒ Object
Scopes.
- .for_pid(pid) ⇒ Object
-
.repository_software ⇒ Object
Repository software version – e.g., “Fedora Repository 3.7.0”.
Instance Method Summary collapse
- #comment_or_summary ⇒ Object
-
#display_type ⇒ Object
Rendering methods.
-
#event_date_time_s ⇒ Object
Return a date/time formatted as a string suitable for use as a PREMIS eventDateTime.
- #failure! ⇒ Object
- #failure? ⇒ Boolean
-
#object ⇒ Object
Object getter and setter.
- #object=(obj) ⇒ Object
- #performed_by ⇒ Object
-
#pid=(pid) ⇒ Object
Override pid setter to clear cached object instance variable.
-
#success! ⇒ Object
Outcome methods.
- #success? ⇒ Boolean
-
#user=(user) ⇒ Object
Sets user_key to user.user_key For compatibility with ddr-models <= 1.9.0.
Class Method Details
.call(*args) ⇒ Object
Receive message sent by ActiveSupport::Notifications
42 43 44 45 |
# File 'lib/ddr/events/event.rb', line 42 def self.call(*args) notification = ActiveSupport::Notifications::Event.new(*args) create(notification.payload) end |
.for_object(obj) ⇒ Object
Scopes
56 57 58 |
# File 'lib/ddr/events/event.rb', line 56 def self.for_object(obj) for_pid(obj.pid) end |
.for_pid(pid) ⇒ Object
60 61 62 |
# File 'lib/ddr/events/event.rb', line 60 def self.for_pid(pid) where(pid: pid) end |
.repository_software ⇒ Object
Repository software version – e.g., “Fedora Repository 3.7.0”
48 49 50 51 52 |
# File 'lib/ddr/events/event.rb', line 48 def self.repository_software @@repository_software ||= ActiveFedora::Base.connection_for_pid(0).repository_profile .values_at(:repositoryName, :repositoryVersion) .join(" ") end |
Instance Method Details
#comment_or_summary ⇒ Object
75 76 77 |
# File 'lib/ddr/events/event.rb', line 75 def comment_or_summary comment.present? ? comment : summary end |
#display_type ⇒ Object
Rendering methods
66 67 68 69 |
# File 'lib/ddr/events/event.rb', line 66 def display_type # Ddr::Events::UpdateEvent => "Update" @display_type ||= self.class.to_s.split("::").last.sub("Event", "").titleize end |
#event_date_time_s ⇒ Object
Return a date/time formatted as a string suitable for use as a PREMIS eventDateTime. Format also works for Solr. Force to UTC.
124 125 126 |
# File 'lib/ddr/events/event.rb', line 124 def event_date_time_s event_date_time.utc.strftime DATE_TIME_FORMAT end |
#failure! ⇒ Object
89 90 91 |
# File 'lib/ddr/events/event.rb', line 89 def failure! self.outcome = FAILURE end |
#failure? ⇒ Boolean
93 94 95 |
# File 'lib/ddr/events/event.rb', line 93 def failure? outcome == FAILURE end |
#object ⇒ Object
Object getter and setter
99 100 101 |
# File 'lib/ddr/events/event.rb', line 99 def object @object ||= ActiveFedora::Base.find(pid) if pid end |
#object=(obj) ⇒ Object
109 110 111 112 113 |
# File 'lib/ddr/events/event.rb', line 109 def object=(obj) raise ArgumentError, "Can't set to new object" if obj.new_record? self.pid = obj.pid @object = obj end |
#performed_by ⇒ Object
71 72 73 |
# File 'lib/ddr/events/event.rb', line 71 def performed_by user_key || SYSTEM end |
#pid=(pid) ⇒ Object
Override pid setter to clear cached object instance variable
116 117 118 119 |
# File 'lib/ddr/events/event.rb', line 116 def pid=(pid) @object = nil super end |
#success! ⇒ Object
Outcome methods
81 82 83 |
# File 'lib/ddr/events/event.rb', line 81 def success! self.outcome = SUCCESS end |
#success? ⇒ Boolean
85 86 87 |
# File 'lib/ddr/events/event.rb', line 85 def success? outcome == SUCCESS end |
#user=(user) ⇒ Object
Sets user_key to user.user_key For compatibility with ddr-models <= 1.9.0
105 106 107 |
# File 'lib/ddr/events/event.rb', line 105 def user=(user) self.user_key = user.user_key end |