Module: Shared::IsDwcOccurrence
- Extended by:
- ActiveSupport::Concern
- Included in:
- CollectionObject::BiologicalCollectionObject
- Defined in:
- app/models/concerns/shared/is_dwc_occurrence.rb
Overview
Shared code for data classes that can be indexed/serialized as DwcOccurrence records
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- DWC_DELIMITER =
These probably belong in a global helper
' | '.freeze
- VIEW_EXCLUSIONS =
[ :footprintWKT ].freeze
Instance Method Summary collapse
-
#dwc_occurrence_attribute_values(mode = :all) ⇒ Array
An array of the values presently computed for this occurrence.
- #dwc_occurrence_attributes(taxonworks_fields = true) ⇒ Object
- #dwc_occurrence_id ⇒ Object
-
#get_dwc_occurrence ⇒ DwcOccurrence
Does not rebuild if exists.
-
#set_dwc_occurrence ⇒ DwcOccurrence
TODO: wrap in generic (reindex_dwc_occurrences method for use in InternalAttribute, TaxonDetermination, BiocurationClass and elsewhere).
Instance Method Details
#dwc_occurrence_attribute_values(mode = :all) ⇒ Array
Returns an array of the values presently computed for this occurrence.
102 103 104 |
# File 'app/models/concerns/shared/is_dwc_occurrence.rb', line 102 def dwc_occurrence_attribute_values(mode = :all) [id, dwc_occurrence.id] + self.class.dwc_attribute_vector(mode)[2..-1].collect{|a| a.name}.collect{|f| dwc_occurrence.send(f) } end |
#dwc_occurrence_attributes(taxonworks_fields = true) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'app/models/concerns/shared/is_dwc_occurrence.rb', line 79 def dwc_occurrence_attributes(taxonworks_fields = true) a = {} self.class::DWC_OCCURRENCE_MAP.each do |k,v| a[k] = send(v) end a[:occurrenceID] = dwc_occurrence_id if taxonworks_fields a[:project_id] = project_id # TODO: semantics of these may need to be revisited, particularly updated_by_id a[:created_by_id] = created_by_id a[:updated_by_id] = updated_by_id # !! Do not set updated_at here !! end a end |
#dwc_occurrence_id ⇒ Object
75 76 77 |
# File 'app/models/concerns/shared/is_dwc_occurrence.rb', line 75 def dwc_occurrence_id dwc_occurrence&.occurrence_identifier&.cached end |
#get_dwc_occurrence ⇒ DwcOccurrence
Returns does not rebuild if exists.
108 109 110 111 112 113 114 115 |
# File 'app/models/concerns/shared/is_dwc_occurrence.rb', line 108 def get_dwc_occurrence # TODO: why are extra queries fired if this is fired? if dwc_occurrence_persisted? dwc_occurrence else set_dwc_occurrence end end |
#set_dwc_occurrence ⇒ DwcOccurrence
TODO: wrap in generic (reindex_dwc_occurrences method for use in InternalAttribute, TaxonDetermination, BiocurationClass and elsewhere)
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/models/concerns/shared/is_dwc_occurrence.rb', line 53 def set_dwc_occurrence retried = false begin if dwc_occurrence_persisted? dwc_occurrence.generate_uuid_if_required dwc_occurrence.update_columns(dwc_occurrence_attributes) dwc_occurrence.touch(:updated_at) else create_dwc_occurrence!(dwc_occurrence_attributes) end rescue ActiveRecord::ActiveRecordError unless retried retried = true dwc_occurrence&.reload retry else raise end end dwc_occurrence end |