Class: TaxonNameRelationship::Iczn::Invalidating::Synonym::Objective

Inherits:
TaxonNameRelationship::Iczn::Invalidating::Synonym show all
Defined in:
app/models/taxon_name_relationship/iczn/invalidating/synonym/objective.rb

Defined Under Namespace

Classes: ReplacedHomonym, SynonymicHomonym, UnjustifiedEmendation, UnnecessaryReplacementName

Constant Summary collapse

NOMEN_URI =
'http://purl.obolibrary.org/obo/NOMEN_0000277'.freeze

Constants included from SoftValidation

SoftValidation::ANCESTORS_WITH_SOFT_VALIDATIONS

Instance Attribute Summary

Attributes inherited from TaxonNameRelationship

#no_cached, #object_taxon_name_id, #project_id, #subject_taxon_name_id, #type

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from TaxonNameRelationship::Iczn::Invalidating::Synonym

disjoint_object_classes, #object_status_connector_to_subject, #subject_status_connector_to_object, #sv_fix_not_specific_relationship, #sv_synonym_relationship

Methods inherited from TaxonNameRelationship::Iczn::Invalidating

assignable, disjoint_subject_classes, gbif_status_of_subject, nomenclatural_priority, #object_status_connector_to_subject, #similar_homonym_string, #subject_properties, #subject_status_connector_to_object

Methods inherited from TaxonNameRelationship::Iczn

disjoint_object_classes, disjoint_subject_classes, #sv_validate_priority, valid_object_ranks, valid_subject_ranks

Methods inherited from TaxonNameRelationship

assignable, collect_descendants_and_itself_to_s, collect_descendants_to_s, collect_to_s, disjoint_object_classes, disjoint_subject_classes, gbif_status_of_object, gbif_status_of_subject, #is_combination?, #is_invalidating?, nomen_uri, nomenclatural_priority, #nomenclature_date, #object_properties, #object_status_connector_to_subject, #object_status_tag, parent, required_taxon_name_relationships, #set_cached_names_for_taxon_names, #subject_and_object_in_same_project, #subject_invalid_statuses, #subject_properties, #subject_status_connector_to_object, #subject_status_tag, #sv_coordinated_taxa, #sv_coordinated_taxa_object, #sv_fix_combination_relationship, #sv_fix_coordinated_object_taxa, #sv_fix_coordinated_subject_taxa, #sv_fix_not_specific_relationship, #sv_fix_subject_parent_update, #sv_specific_relationship, #sv_synonym_linked_to_valid_name, #sv_synonym_relationship, #sv_validate_disjoint_object, #sv_validate_disjoint_relationships, #sv_validate_disjoint_subject, #sv_validate_priority, #sv_validate_required_relationships, #type_class, #type_class=, #type_name, valid_object_ranks, valid_subject_ranks, #validate_object_and_subject_both_protonyms, #validate_object_must_equal_subject_for_uncertain_placement, #validate_rank_group, #validate_subject_and_object_are_not_identical, #validate_subject_and_object_ranks, #validate_subject_and_object_share_code, #validate_type, #validate_uniqueness_of_typification_object

Methods included from SoftValidation

#clear_soft_validations, #fix_for, #fix_soft_validations, #soft_fixed?, #soft_valid?, #soft_validate, #soft_validated?, #soft_validations, #soft_validators

Methods included from Shared::IsData

#errors_excepting, #full_error_messages_excepting, #identical, #is_community?, #is_destroyable?, #is_editable?, #is_in_use?, #is_in_users_projects?, #metamorphosize, #similar

Methods included from Shared::Notes

#concatenated_notes_string, #reject_notes

Methods included from Shared::Citations

#cited?, #mark_citations_for_destruction, #nomenclature_date, #origin_citation_source_id, #reject_citations, #requires_citation?, #sources_by_topic_id

Methods included from Housekeeping

#has_polymorphic_relationship?

Methods inherited from ApplicationRecord

transaction_with_retry

Class Method Details

.assignment_methodObject



20
21
22
23
# File 'app/models/taxon_name_relationship/iczn/invalidating/synonym/objective.rb', line 20

def self.assignment_method
  # bus.set_as_iczn_objective_synonym_of(aus)
  :iczn_set_as_objective_synonym_of
end

.disjoint_taxon_name_relationshipsObject



5
6
7
8
9
10
# File 'app/models/taxon_name_relationship/iczn/invalidating/synonym/objective.rb', line 5

def self.disjoint_taxon_name_relationships
  self.parent.disjoint_taxon_name_relationships +
      self.collect_descendants_and_itself_to_s(TaxonNameRelationship::Iczn::Invalidating::Synonym::Suppression) +
      self.collect_to_s(TaxonNameRelationship::Iczn::Invalidating::Synonym,
          TaxonNameRelationship::Iczn::Invalidating::Synonym::ForgottenName)
end

.inverse_assignment_methodObject

as.



26
27
28
29
# File 'app/models/taxon_name_relationship/iczn/invalidating/synonym/objective.rb', line 26

def self.inverse_assignment_method
  # aus.iczn_objective_synonym = bus
  :iczn_objective_synonym
end

Instance Method Details

#object_statusObject



12
13
14
# File 'app/models/taxon_name_relationship/iczn/invalidating/synonym/objective.rb', line 12

def object_status
  'senior objective synonym'
end

#subject_statusObject



16
17
18
# File 'app/models/taxon_name_relationship/iczn/invalidating/synonym/objective.rb', line 16

def subject_status
  'objective synonym'
end

#sv_fix_objective_synonym_relationshipObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/models/taxon_name_relationship/iczn/invalidating/synonym/objective.rb', line 39

def sv_fix_objective_synonym_relationship
  fixed = false
  s = self.subject_taxon_name
  o = self.object_taxon_name
  if s.get_primary_type.empty?
    t2 = s
    t1 = o
  elsif o.get_primary_type.empty?
    t2 = o
    t1 = s
  else
    return false
  end

    types2 = t1.get_primary_type
    if !types2.empty?
      new_type_material = []
      types2.each do |t|
        new_type_material.push({type_type: t.type_type, protonym_id: t2.id, collection_object_id: t.collection_object_id, source: t.source})
      end
      t2.type_materials.build(new_type_material)
      fixed = true
    end

  if fixed
    begin
      Protonym.transaction do
        t2.save
      end
      return true
    rescue
      return false
    end
  end
end

#sv_not_specific_relationshipObject



75
76
77
# File 'app/models/taxon_name_relationship/iczn/invalidating/synonym/objective.rb', line 75

def sv_not_specific_relationship
  true
end

#sv_objective_synonym_relationshipObject



31
32
33
34
35
36
37
# File 'app/models/taxon_name_relationship/iczn/invalidating/synonym/objective.rb', line 31

def sv_objective_synonym_relationship
  s = self.subject_taxon_name
  o = self.object_taxon_name
  if (s.type_taxon_name != o.type_taxon_name ) || !s.has_same_primary_type(o)
    soft_validations.add(:type, "Objective synonyms #{s.cached_html} and #{o.cached_html} should have the same type")
  end
end