diff options
| author | Xinhui | 2017-08-31 15:32:12 +0200 | 
|---|---|---|
| committer | Xinhui | 2017-08-31 15:32:12 +0200 | 
| commit | 69e786ccb4a08b045708670d712ac1343e053099 (patch) | |
| tree | 6ee3721c67d3cd465ceb4837c248a0edb27ef4a8 /app | |
| parent | db91d342ccf229f66f1bed2a2fe11bceccff58be (diff) | |
| download | chouette-core-69e786ccb4a08b045708670d712ac1343e053099.tar.bz2 | |
Refactoring objectid support & spec
Diffstat (limited to 'app')
| -rw-r--r-- | app/models/concerns/stif_netex_attributes_support.rb | 53 | 
1 files changed, 21 insertions, 32 deletions
diff --git a/app/models/concerns/stif_netex_attributes_support.rb b/app/models/concerns/stif_netex_attributes_support.rb index 5eb5285cf..782a75295 100644 --- a/app/models/concerns/stif_netex_attributes_support.rb +++ b/app/models/concerns/stif_netex_attributes_support.rb @@ -2,14 +2,12 @@ module StifNetexAttributesSupport    extend ActiveSupport::Concern    included do - -    validates_presence_of :objectid -    validates :objectid, uniqueness: true      validates_numericality_of :object_version +    validates :objectid, uniqueness: true, presence: true      validate :objectid_format_compliance +    after_save :build_objectid      before_validation :default_values, on: :create -    # before_save :increment_workbench_local_id    end    module ClassMethods @@ -22,44 +20,35 @@ module StifNetexAttributesSupport      end    end -  def objectid -    Chouette::StifNetexObjectid.new read_attribute(:objectid) -  end - -  def provider_id -    self.referential.workbench.organisation.name.parameterize +  def objectid_format_compliance +    errors.add :objectid, I18n.t("activerecord.errors.models.stif_netex.invalid_object_id") if !objectid.valid?    end -  def object_type -    self.model_name +  def build_objectid +    if objectid.include? ':__pending_id__' +      self.objectid = Chouette::StifNetexObjectid.create(self.provider_id, self.model_name, self.local_id, self.boiv_id) +      self.save +    end    end -  def local_id -    '' -  end +  def default_values +    self.object_version ||= 1 -  def boiv_id -    'LOC' +    if self.objectid.to_s.empty? +      local_id = "__pending_id__#{rand(50)+ rand(50)}" +      self.objectid = Chouette::StifNetexObjectid.create(self.provider_id, self.model_name, local_id, self.boiv_id) +    end    end -  def objectid_format_compliance -    errors.add :objectid, I18n.t("activerecord.errors.models.stif_netex.invalid_object_id") if !objectid.valid? +  def objectid +    Chouette::StifNetexObjectid.new read_attribute(:objectid)    end -  def default_values -    if self.objectid.to_s.empty? -      self.objectid = Chouette::StifNetexObjectid.create(provider_id, object_type, local_id, boiv_id) -    end -    self.object_version ||= 1 +  def provider_id +    self.referential.workbench.organisation.name.parameterize    end -  def increment_workbench_local_id -    # workbench_object_identifier = self.referential.workbench.worbench_object_identifiers.find_or_create_by_object_class(self.class) -    # result = WorbenchObjectIdentifier.increment_counter(:last_local_id, 1) -    # counter = 3 -    # # Ecrire le code pour répéter l'opération 3 fois au cas ou l'enregistrement échouerait. -    # while result == false && counter <= 3 -    #  ..... -    # end +  def boiv_id +    'LOC'    end  end  | 
