diff options
38 files changed, 371 insertions, 458 deletions
| diff --git a/app/models/chouette/access_point.rb b/app/models/chouette/access_point.rb index 43c8e1b3a..317b19b26 100644 --- a/app/models/chouette/access_point.rb +++ b/app/models/chouette/access_point.rb @@ -5,6 +5,8 @@ class Chouette::AccessPoint < Chouette::TridentActiveRecord    # FIXME http://jira.codehaus.org/browse/JRUBY-6358    self.primary_key = "id"    include Geokit::Mappable +  include ProjectionFields +    has_many :access_links, :dependent => :destroy    belongs_to :stop_area diff --git a/app/models/chouette/company.rb b/app/models/chouette/company.rb index d0375b2e6..8ddd4c37d 100644 --- a/app/models/chouette/company.rb +++ b/app/models/chouette/company.rb @@ -1,4 +1,5 @@  class Chouette::Company < Chouette::TridentActiveRecord +  include CompanyRestrictions    has_many :lines    validates_format_of :registration_number, :with => %r{\A[0-9A-Za-z_-]+\Z}, :allow_nil => true, :allow_blank => true diff --git a/app/models/chouette/connection_link.rb b/app/models/chouette/connection_link.rb index 045f7c1d9..e225c2fae 100644 --- a/app/models/chouette/connection_link.rb +++ b/app/models/chouette/connection_link.rb @@ -1,4 +1,5 @@  class Chouette::ConnectionLink < Chouette::TridentActiveRecord +  include ConnectionLinkRestrictions    # FIXME http://jira.codehaus.org/browse/JRUBY-6358    self.primary_key = "id" diff --git a/app/models/chouette/group_of_line.rb b/app/models/chouette/group_of_line.rb index 1c1ae5f4c..f00db3164 100644 --- a/app/models/chouette/group_of_line.rb +++ b/app/models/chouette/group_of_line.rb @@ -1,4 +1,5 @@  class Chouette::GroupOfLine < Chouette::TridentActiveRecord +  include GroupOfLineRestrictions    # FIXME http://jira.codehaus.org/browse/JRUBY-6358    self.primary_key = "id" diff --git a/app/models/chouette/journey_pattern.rb b/app/models/chouette/journey_pattern.rb index d48733edb..9b2b2a9da 100644 --- a/app/models/chouette/journey_pattern.rb +++ b/app/models/chouette/journey_pattern.rb @@ -1,4 +1,5 @@  class Chouette::JourneyPattern < Chouette::TridentActiveRecord +  include JourneyPatternRestrictions    # FIXME http://jira.codehaus.org/browse/JRUBY-6358    self.primary_key = "id" diff --git a/app/models/chouette/line.rb b/app/models/chouette/line.rb index d69203233..b1e9940d3 100644 --- a/app/models/chouette/line.rb +++ b/app/models/chouette/line.rb @@ -1,4 +1,5 @@  class Chouette::Line < Chouette::TridentActiveRecord +  include LineRestrictions    # FIXME http://jira.codehaus.org/browse/JRUBY-6358    self.primary_key = "id" diff --git a/app/models/chouette/network.rb b/app/models/chouette/network.rb index a631d70ec..c8926506c 100644 --- a/app/models/chouette/network.rb +++ b/app/models/chouette/network.rb @@ -1,4 +1,5 @@  class Chouette::Network < Chouette::TridentActiveRecord +  include NetworkRestrictions    # FIXME http://jira.codehaus.org/browse/JRUBY-6358    self.primary_key = "id" diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb index d5e39ac12..8949a6bc2 100644 --- a/app/models/chouette/route.rb +++ b/app/models/chouette/route.rb @@ -1,4 +1,6 @@  class Chouette::Route < Chouette::TridentActiveRecord +  include RouteRestrictions +    # FIXME http://jira.codehaus.org/browse/JRUBY-6358    self.primary_key = "id" diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb index b7cdd313a..70d2edcbd 100644 --- a/app/models/chouette/stop_area.rb +++ b/app/models/chouette/stop_area.rb @@ -5,6 +5,9 @@ class Chouette::StopArea < Chouette::TridentActiveRecord    # FIXME http://jira.codehaus.org/browse/JRUBY-6358    self.primary_key = "id"    include Geokit::Mappable +  include ProjectionFields +  include StopAreaRestrictions +    has_many :stop_points, :dependent => :destroy    has_many :access_points, :dependent => :destroy    has_many :access_links, :dependent => :destroy @@ -152,7 +155,7 @@ class Chouette::StopArea < Chouette::TridentActiveRecord    def default_position      # for first StopArea ... the bounds is nil :( -    Chouette::StopArea.bounds and Chouette::StopArea.bounds.center +      Chouette::StopArea.bounds ? Chouette::StopArea.bounds.center : self.referential.envelope.center    end    def self.near(origin, distance = 0.3) diff --git a/app/models/chouette/time_table.rb b/app/models/chouette/time_table.rb index 033c39f1c..9af80fbb7 100644 --- a/app/models/chouette/time_table.rb +++ b/app/models/chouette/time_table.rb @@ -1,4 +1,5 @@  class Chouette::TimeTable < Chouette::TridentActiveRecord +  include TimeTableRestrictions    # FIXME http://jira.codehaus.org/browse/JRUBY-6358    self.primary_key = "id" @@ -29,6 +30,10 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord    validates_associated :dates    validates_associated :periods +  def presenter +    @presenter ||= ::TimeTablePresenter.new( self) +  end +    def self.start_validity_period      [Chouette::TimeTable.minimum(:start_date)].compact.min    end @@ -445,6 +450,5 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord      tt.comment = I18n.t("activerecord.copy", :name => self.comment)      tt    end -  end diff --git a/app/models/chouette/trident_active_record.rb b/app/models/chouette/trident_active_record.rb index b89b85863..225d7bb4b 100644 --- a/app/models/chouette/trident_active_record.rb +++ b/app/models/chouette/trident_active_record.rb @@ -12,10 +12,19 @@ class Chouette::TridentActiveRecord < Chouette::ActiveRecord      def self.object_id_key        model_name      end + +    def referential +      @referential ||= Referential.where(:slug => Apartment::Tenant.current).first! +    end + +    def hub_restricted? +      referential.data_format == "hub" +    end      def prefix -      "NINOXE" +      self.referential.prefix      end +      def prepare_auto_columns        # logger.info 'calling before_validation'        # logger.info 'start before_validation : '+self.objectid.to_s diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 44a9f8975..17d4d952f 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -1,6 +1,6 @@  module Chouette    class VehicleJourney < TridentActiveRecord - +    include VehicleJourneyRestrictions      # FIXME http://jira.codehaus.org/browse/JRUBY-6358      self.primary_key = "id" @@ -43,6 +43,11 @@ module Chouette      accepts_nested_attributes_for :vehicle_journey_at_stops, :allow_destroy => true + +    def presenter +      @presenter ||= ::VehicleJourneyPresenter.new( self) +    end +      def transport_mode_name        # return nil if transport_mode is nil        transport_mode && Chouette::TransportMode.new( transport_mode.underscore) diff --git a/app/models/concerns/company_restrictions.rb b/app/models/concerns/company_restrictions.rb new file mode 100644 index 000000000..3a5f17da8 --- /dev/null +++ b/app/models/concerns/company_restrictions.rb @@ -0,0 +1,25 @@ +module CompanyRestrictions +  extend ActiveSupport::Concern + +  included do +    include ObjectidRestrictions + +    with_options if: :hub_restricted? do |g| +      # HUB-7 +      g.validate :specific_objectid +      # HUB-8 +      #g.validates_length_of :name, :minimum => 1, :maximum => 75 +      g.validates :name, length: { in: 1..75 } +      # HUB-9 +      #g.validates_format_of :registration_number, :with => %r{\A[\d]{1,8}\z} +      #g.validates_uniqueness_of :registration_number +      g.validates :registration_number, +                  uniqueness: true, +                  length: { in: 1..8 }, +                  numericality: { only_integer: true } +    end +  end +  def specific_objectid +    validate_specific_objectid(3) +  end +end diff --git a/app/models/concerns/connection_link_restrictions.rb b/app/models/concerns/connection_link_restrictions.rb new file mode 100644 index 000000000..dd10d3659 --- /dev/null +++ b/app/models/concerns/connection_link_restrictions.rb @@ -0,0 +1,13 @@ +module ConnectionLinkRestrictions +  extend ActiveSupport::Concern + +  included do +    include ObjectidRestrictions + +    with_options if: :hub_restricted? do |cl| +      # HUB-34 +      cl.validates :link_distance, numericality: { less_than_or_equal_to: 10000.to_f } +    end +  end +end + diff --git a/app/models/concerns/group_of_line_restrictions.rb b/app/models/concerns/group_of_line_restrictions.rb new file mode 100644 index 000000000..a3bea08a8 --- /dev/null +++ b/app/models/concerns/group_of_line_restrictions.rb @@ -0,0 +1,25 @@ +module GroupOfLineRestrictions +  extend ActiveSupport::Concern + +  included do +    include ObjectidRestrictions + +    with_options if: :hub_restricted? do |g| +      # HUB-11 +      g.validate :specific_objectid +      # HUB-12 +      #g.validates_length_of :name, :minimum => 1, :maximum => 75 +      g.validates :name, length: { in: 1..75 } +      # HUB-13 +      #g.validates_format_of :registration_number, :with => %r{\A[\d]{1,8}\z} +      #g.validates_uniqueness_of :registration_number +      g.validates :registration_number, +                  uniqueness: true, +                  numericality: { only_integer: true }, +                  length: { in: 1..8 } +    end +  end +  def specific_objectid +    validate_specific_objectid(6) +  end +end diff --git a/app/models/concerns/journey_pattern_restrictions.rb b/app/models/concerns/journey_pattern_restrictions.rb new file mode 100644 index 000000000..e8d5d203d --- /dev/null +++ b/app/models/concerns/journey_pattern_restrictions.rb @@ -0,0 +1,20 @@ +module JourneyPatternRestrictions +  extend ActiveSupport::Concern + +  included do +    include ObjectidRestrictions + +    with_options if: :hub_restricted? do |jp| +      # HUB-39 +      jp.validate :specific_objectid +      # HUB-40 +      jp.validates :registration_number, numericality: { less_than: 10 ** 8 } +      # HUB-41 +      #jp.validates_length_of :name, :maximum => 75, :allow_blank => true, :allow_nil => true +      jp.validates :name, length: { maximum: 75 }, allow_blank: true +    end +  end +  def specific_objectid +    validate_specific_objectid( 30) +  end +end diff --git a/app/models/concerns/line_restrictions.rb b/app/models/concerns/line_restrictions.rb new file mode 100644 index 000000000..c76d5ba19 --- /dev/null +++ b/app/models/concerns/line_restrictions.rb @@ -0,0 +1,29 @@ +module LineRestrictions +  extend ActiveSupport::Concern + + +  included do +    include ObjectidRestrictions + +    with_options if: :hub_restricted? do |l| +      # HUB-15 +      #l.validates_format_of :objectid, :with => %r{\A\w+:\w+:[\w]{1,14}\z} +      l.validate :specific_objectid +      # HUB-16 +      #l.validates_format_of :number, :with => %r{\A[\w]{1,6}\z} +      l.validates :number, length: { in: 1..6 }, format: { with: /\A[\w]+\z/ } +      # HUB-17 & HUB-22 +      #l.validates_length_of :name, :maximum => 75 +      l.validates :name, length: { maximum: 75 }, uniqueness: true, allow_blank: true +      # HUB-21 +      #l.validates :registration_number, :numericality => { :less_than => 10 ** 8 } +      l.validates :registration_number, presence: true, numericality: { less_than: 10 ** 8 } +      # HUB-22 +      #l.validates_uniqueness_of :name, :allow_blank => true +    end +  end + +  def specific_objectid +    validate_specific_objectid( 14) +  end +end diff --git a/app/models/concerns/network_restrictions.rb b/app/models/concerns/network_restrictions.rb new file mode 100644 index 000000000..9c5d159b6 --- /dev/null +++ b/app/models/concerns/network_restrictions.rb @@ -0,0 +1,25 @@ +module NetworkRestrictions +  extend ActiveSupport::Concern + +  included do +    include ObjectidRestrictions + +    with_options if: :hub_restricted? do |n| +      # HUB-3 +      n.validate :specific_objectid +      # HUB-4 +      #n.validates_length_of :name, :minimum => 1, :maximum => 75 +      n.validates :name, length: { in: 1..75 } +      # HUB-5 +      #n.validates_format_of :registration_number, :with => %r{\A[\d]{1,8}\z} +      #n.validates_uniqueness_of :registration_number +      n.validates :registration_number, +                  uniqueness: true, +                  numericality: { only_integer: true }, +                  length: { in: 1..8 } +    end +  end +  def specific_objectid +    validate_specific_objectid( 3) +  end +end diff --git a/lib/ninoxe_extension/hub/objectid_restrictions.rb b/app/models/concerns/objectid_restrictions.rb index 1a71b9e62..4e905bdc2 100644 --- a/lib/ninoxe_extension/hub/objectid_restrictions.rb +++ b/app/models/concerns/objectid_restrictions.rb @@ -1,5 +1,4 @@ -# -*- coding: utf-8 -*- -module NinoxeExtension::Hub::ObjectidRestrictions +module ObjectidRestrictions      extend ActiveSupport::Concern      included do diff --git a/app/models/concerns/projection_fields.rb b/app/models/concerns/projection_fields.rb new file mode 100644 index 000000000..2d7222f73 --- /dev/null +++ b/app/models/concerns/projection_fields.rb @@ -0,0 +1,60 @@ +module ProjectionFields +  extend ActiveSupport::Concern + +  included do +    #attr_accessible :projection_x,:projection_y,:projection_xy + +    # add projection_type set on pre-insert and pre_update action +  before_save :set_projections +  def set_projections +    if ! self.coordinates.blank? +      self.long_lat_type = 'WGS84' +    else +      self.long_lat_type = nil +    end +  end + +  def projection +    if self.referential.projection_type.nil? || self.referential.projection_type.empty? +      nil +    else +      self.referential.projection_type +    end +  end +  @point = nil + +  def projection_x +    if self.long_lat_type.nil? || self.projection.nil? +      nil +    else +      @point ||= GeoRuby::SimpleFeatures::Point::from_lat_lng(Geokit::LatLng.new(self.latitude,self.longitude)).project_to(self.projection.to_i) +      @point.x +    end +  end +  def projection_y +    if self.long_lat_type.nil? || self.projection.nil? +      nil +    else +      @point ||= GeoRuby::SimpleFeatures::Point::from_lat_lng(Geokit::LatLng.new(self.latitude,self.longitude)).project_to(self.projection.to_i) +      @point.y +    end +  end +  def projection_xy +    if self.long_lat_type.nil? || self.projection.nil? +      nil +    else +      @point ||= GeoRuby::SimpleFeatures::Point::from_lat_lng(Geokit::LatLng.new(self.latitude,self.longitude)).project_to(self.projection.to_i) +      @point.x.to_s+","+@point.y.to_s +    end +  end +  def projection_x=(dummy) +    # dummy method +  end +  def projection_y=(dummy) +    # dummy method +  end +  def projection_xy=(dummy) +    # dummy method +  end +  end +end diff --git a/app/models/concerns/route_restrictions.rb b/app/models/concerns/route_restrictions.rb new file mode 100644 index 000000000..5a098d86f --- /dev/null +++ b/app/models/concerns/route_restrictions.rb @@ -0,0 +1,25 @@ +module RouteRestrictions +  extend ActiveSupport::Concern + +  included do +    include ObjectidRestrictions +    validate :max_instance_limitation, :wayback_code_limitation + +    # HUB-37 +    def wayback_code_limitation +      return unless hub_restricted? +      errors.add( :wayback_code, I18n.t('hub.routes.wayback_code_exclusive')) if line.routes.reject {|r| r.id==id}.map(&:wayback_code).include?( wayback_code) +    end + +    # HUB-37 +    def max_instance_limitation +      return unless hub_restricted? +      errors.add( :flash, I18n.t('hub.routes.max_by_line')) if 2 < line.routes.size +    end + +    # HUB-38 +    with_options if: :hub_restricted? do |route| +      route.validates_format_of :objectid, :with => %r{\A\w+:\w+:([\w]{1,8}|__pending_id__\d+)\z} +    end +  end +end diff --git a/app/models/concerns/stop_area_restrictions.rb b/app/models/concerns/stop_area_restrictions.rb new file mode 100644 index 000000000..38a57b55a --- /dev/null +++ b/app/models/concerns/stop_area_restrictions.rb @@ -0,0 +1,63 @@ +module StopAreaRestrictions +  extend ActiveSupport::Concern + +  def physical? +    self.area_type=="BoardingPosition" ||  self.area_type=="Quay" +  end +  def commercial? +    self.area_type=="CommercialStopPoint" +  end +  def physical_hub_restricted? +    hub_restricted? && physical? +  end +  def commercial_hub_restricted? +    hub_restricted? && commercial? +  end +  def commercial_and_physical_hub_restricted? +    physical_hub_restricted? || commercial_hub_restricted? +  end +  # def specific_objectid +  #   validate_specific_objectid( 12) +  # end + +  included do +    include ObjectidRestrictions + + +    with_options if: :commercial_and_physical_hub_restricted? do |sa| +      # HUB-23 +      sa.validate :specific_objectid +      #sa.validates_length_of :name, :minimum => 1, :maximum => 75 +      sa.validates :name, length: { in: 1..75 } +    end + +    with_options if: :commercial_hub_restricted? do |sa| +      # HUB-24 +      #sa.validates_length_of :nearest_topic_name, :maximum => 255, :allow_blank => true, :allow_nil => true +      sa.validates :nearest_topic_name, length: { maximum: 255 }, allow_blank: true +    end + +    with_options if: :physical_hub_restricted? do |sa| +      # HUB-25 +      #sa.validates_length_of :nearest_topic_name, :maximum => 60, :allow_blank => true, :allow_nil => true +      sa.validates :nearest_topic_name, length: { maximum: 60 }, allow_blank: true +      # HUB-28 +      #sa.validates_presence_of :coordinates +      sa.validates :coordinates, presence: true +      # HUB-29 +      #sa.validates_length_of :city_name, :minimum => 1, :maximum => 80 +      sa.validates :city_name, length: { in: 1..80 } +      # HUB-30 +      #sa.validates_format_of :country_code, :with => %r{\A[\d]{5}\z} +      sa.validates :country_code, presence: true, numericality: { only_integer: true }, length: { is: 5 } +      # HUB-31 +      #sa.validates_length_of :comment, :maximum => 255, :allow_blank => true, :allow_nil => true +      sa.validates :comment, length: { maximum: 255 }, allow_blank: true +      #sa.validates :registration_number, :numericality => { :less_than => 10 ** 8 } +      sa.validates :registration_number, presence: true, numericality: { less_than: 10 ** 8 } +    end +  end +  def specific_objectid +    validate_specific_objectid(12) +  end +end diff --git a/app/models/concerns/time_table_restrictions.rb b/app/models/concerns/time_table_restrictions.rb new file mode 100644 index 000000000..51576833c --- /dev/null +++ b/app/models/concerns/time_table_restrictions.rb @@ -0,0 +1,18 @@ +module TimeTableRestrictions +  extend ActiveSupport::Concern + +  included do +    include ObjectidRestrictions + +    with_options if: :hub_restricted? do |tt| +      # HUB-44 +      tt.validate :specific_objectid +      # HUB-45 +      #tt.validates_length_of :comment, :maximum => 75, :allow_blank => true, :allow_nil => true +      tt.validates :comment, length: { maximum: 75 }, allow_blank: true +    end +  end +  def specific_objectid +    validate_specific_objectid( 6) +  end +end diff --git a/app/models/concerns/vehicle_journey_restrictions.rb b/app/models/concerns/vehicle_journey_restrictions.rb new file mode 100644 index 000000000..1f024eb04 --- /dev/null +++ b/app/models/concerns/vehicle_journey_restrictions.rb @@ -0,0 +1,15 @@ +module VehicleJourneyRestrictions +  extend ActiveSupport::Concern + +  included do +    include ObjectidRestrictions + +    # HUB-42 +    with_options if: :hub_restricted? do |vj| +      vj.validate :specific_objectid +    end +  end +  def specific_objectid +    validate_specific_objectid( 8) +  end +end diff --git a/app/models/referential.rb b/app/models/referential.rb index 7c6de6bf9..1f0c5bcfd 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -201,81 +201,4 @@ class Referential < ActiveRecord::Base      bounds = read_attribute(:bounds)      GeoRuby::SimpleFeatures::Geometry.from_ewkt(bounds.present? ? bounds : default_bounds ).envelope    end - -  ## -  # In Development environment where cache_classes = false -  # each time a controller rb file is saved -  # ninoxe models are reloaded without after_initialize from config/initializers -  # so for development confort, it's better to keep here that after_initialize -Rails.application.config.after_initialize do - -  Chouette::TridentActiveRecord - -  class Chouette::TridentActiveRecord - -    # add referential relationship for objectid and localization functions -    def referential -      @referential ||= Referential.where(:slug => Apartment::Tenant.current).first! -    end - -    def hub_restricted? -      referential.data_format == "hub" -    end - -    # override prefix for good prefix in objectid generation -    def prefix -      self.referential.prefix -    end - -  end - -  # Hub constraints -  Chouette::Route; class Chouette::Route; include NinoxeExtension::Hub::RouteRestrictions; end -  Chouette::JourneyPattern; class Chouette::JourneyPattern; include NinoxeExtension::Hub::JourneyPatternRestrictions; end -  Chouette::VehicleJourney; class Chouette::VehicleJourney; include NinoxeExtension::Hub::VehicleJourneyRestrictions; end -  Chouette::TimeTable; class Chouette::TimeTable; include NinoxeExtension::Hub::TimeTableRestrictions; end -  Chouette::ConnectionLink; class Chouette::ConnectionLink; include NinoxeExtension::Hub::ConnectionLinkRestrictions; end -  Chouette::StopArea; class Chouette::StopArea; include NinoxeExtension::Hub::StopAreaRestrictions; end -  Chouette::Line; class Chouette::Line; include NinoxeExtension::Hub::LineRestrictions; end -  Chouette::GroupOfLine; class Chouette::GroupOfLine; include NinoxeExtension::Hub::GroupOfLineRestrictions; end -  Chouette::Company; class Chouette::Company; include NinoxeExtension::Hub::CompanyRestrictions; end -  Chouette::Network; class Chouette::Network; include NinoxeExtension::Hub::NetworkRestrictions; end - -  Chouette::TimeTable - -  class Chouette::TimeTable -    def presenter -      @presenter ||= ::TimeTablePresenter.new( self) -    end -  end - -  Chouette::VehicleJourney - -  class Chouette::VehicleJourney -    def presenter -      @presenter ||= ::VehicleJourneyPresenter.new( self) -    end -  end - -  Chouette::StopArea - -  class Chouette::StopArea -    include  NinoxeExtension::ProjectionFields - -    # override default_position method to add referential envelope when no stoparea is positioned -    def default_position -      # for first StopArea ... the bounds is nil , set to referential center -      Chouette::StopArea.bounds ? Chouette::StopArea.bounds.center : self.referential.envelope.center -    end - - -  end - -  Chouette::AccessPoint - -  class Chouette::AccessPoint -    include  NinoxeExtension::ProjectionFields -  end - -end  end diff --git a/lib/ninoxe_extension/hub/company_restrictions.rb b/lib/ninoxe_extension/hub/company_restrictions.rb deleted file mode 100644 index ee194a046..000000000 --- a/lib/ninoxe_extension/hub/company_restrictions.rb +++ /dev/null @@ -1,28 +0,0 @@ -module NinoxeExtension::Hub -  module CompanyRestrictions -    extend ActiveSupport::Concern - -    included do -      include ObjectidRestrictions - -      with_options if: :hub_restricted? do |g| -        # HUB-7 -        g.validate :specific_objectid -        # HUB-8 -        #g.validates_length_of :name, :minimum => 1, :maximum => 75 -        g.validates :name, length: { in: 1..75 } -        # HUB-9 -        #g.validates_format_of :registration_number, :with => %r{\A[\d]{1,8}\z} -        #g.validates_uniqueness_of :registration_number -        g.validates :registration_number, -                    uniqueness: true, -                    length: { in: 1..8 }, -                    numericality: { only_integer: true } -      end -    end -    def specific_objectid -      validate_specific_objectid(3) -    end -  end -end - diff --git a/lib/ninoxe_extension/hub/connection_link_restrictions.rb b/lib/ninoxe_extension/hub/connection_link_restrictions.rb deleted file mode 100644 index 6d4c3046f..000000000 --- a/lib/ninoxe_extension/hub/connection_link_restrictions.rb +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- -module NinoxeExtension::Hub -  module ConnectionLinkRestrictions -    extend ActiveSupport::Concern - -    included do -      include ObjectidRestrictions - -      with_options if: :hub_restricted? do |cl| -        # HUB-34 -        cl.validates :link_distance, numericality: { less_than_or_equal_to: 10000.to_f } -      end -    end -  end -end - diff --git a/lib/ninoxe_extension/hub/group_of_line_restrictions.rb b/lib/ninoxe_extension/hub/group_of_line_restrictions.rb deleted file mode 100644 index 26e5c5d5c..000000000 --- a/lib/ninoxe_extension/hub/group_of_line_restrictions.rb +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -module NinoxeExtension::Hub -  module GroupOfLineRestrictions -    extend ActiveSupport::Concern - -    included do -      include ObjectidRestrictions - -      with_options if: :hub_restricted? do |g| -        # HUB-11 -        g.validate :specific_objectid -        # HUB-12 -        #g.validates_length_of :name, :minimum => 1, :maximum => 75 -        g.validates :name, length: { in: 1..75 } -        # HUB-13 -        #g.validates_format_of :registration_number, :with => %r{\A[\d]{1,8}\z} -        #g.validates_uniqueness_of :registration_number -        g.validates :registration_number, -                    uniqueness: true, -                    numericality: { only_integer: true }, -                    length: { in: 1..8 } -      end -    end -    def specific_objectid -      validate_specific_objectid(6) -    end -  end -end - diff --git a/lib/ninoxe_extension/hub/journey_pattern_restrictions.rb b/lib/ninoxe_extension/hub/journey_pattern_restrictions.rb deleted file mode 100644 index f3ec2cdbd..000000000 --- a/lib/ninoxe_extension/hub/journey_pattern_restrictions.rb +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -module NinoxeExtension::Hub -  module JourneyPatternRestrictions -    extend ActiveSupport::Concern - -    included do -      include ObjectidRestrictions - -      with_options if: :hub_restricted? do |jp| -        # HUB-39 -        jp.validate :specific_objectid -        # HUB-40 -        jp.validates :registration_number, numericality: { less_than: 10 ** 8 } -        # HUB-41 -        #jp.validates_length_of :name, :maximum => 75, :allow_blank => true, :allow_nil => true -        jp.validates :name, length: { maximum: 75 }, allow_blank: true -      end -    end -    def specific_objectid -      validate_specific_objectid( 30) -    end -  end -end - diff --git a/lib/ninoxe_extension/hub/line_restrictions.rb b/lib/ninoxe_extension/hub/line_restrictions.rb deleted file mode 100644 index bdae3d77c..000000000 --- a/lib/ninoxe_extension/hub/line_restrictions.rb +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -module NinoxeExtension::Hub -  module LineRestrictions -    extend ActiveSupport::Concern - - -    included do -      include ObjectidRestrictions - -      with_options if: :hub_restricted? do |l| -        # HUB-15 -        #l.validates_format_of :objectid, :with => %r{\A\w+:\w+:[\w]{1,14}\z} -        l.validate :specific_objectid -        # HUB-16 -        #l.validates_format_of :number, :with => %r{\A[\w]{1,6}\z} -        l.validates :number, length: { in: 1..6 }, format: { with: /\A[\w]+\z/ } -        # HUB-17 & HUB-22 -        #l.validates_length_of :name, :maximum => 75 -        l.validates :name, length: { maximum: 75 }, uniqueness: true, allow_blank: true -        # HUB-21 -        #l.validates :registration_number, :numericality => { :less_than => 10 ** 8 } -        l.validates :registration_number, presence: true, numericality: { less_than: 10 ** 8 } -        # HUB-22 -        #l.validates_uniqueness_of :name, :allow_blank => true -      end -    end - -    def specific_objectid -      validate_specific_objectid( 14) -    end -  end -end - diff --git a/lib/ninoxe_extension/hub/network_restrictions.rb b/lib/ninoxe_extension/hub/network_restrictions.rb deleted file mode 100644 index deba1f75e..000000000 --- a/lib/ninoxe_extension/hub/network_restrictions.rb +++ /dev/null @@ -1,28 +0,0 @@ -module NinoxeExtension::Hub -  module NetworkRestrictions -    extend ActiveSupport::Concern - -    included do -      include ObjectidRestrictions - -      with_options if: :hub_restricted? do |n| -        # HUB-3 -        n.validate :specific_objectid -        # HUB-4 -        #n.validates_length_of :name, :minimum => 1, :maximum => 75 -        n.validates :name, length: { in: 1..75 } -        # HUB-5 -        #n.validates_format_of :registration_number, :with => %r{\A[\d]{1,8}\z} -        #n.validates_uniqueness_of :registration_number -        n.validates :registration_number, -                    uniqueness: true, -                    numericality: { only_integer: true }, -                    length: { in: 1..8 } -      end -    end -    def specific_objectid -      validate_specific_objectid( 3) -    end -  end -end - diff --git a/lib/ninoxe_extension/hub/route_restrictions.rb b/lib/ninoxe_extension/hub/route_restrictions.rb deleted file mode 100644 index 6304d3559..000000000 --- a/lib/ninoxe_extension/hub/route_restrictions.rb +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -module NinoxeExtension::Hub -  module RouteRestrictions -    extend ActiveSupport::Concern - -    included do -      include ObjectidRestrictions -      validate :max_instance_limitation, :wayback_code_limitation - -      # HUB-37 -      def wayback_code_limitation -        return unless hub_restricted? -        errors.add( :wayback_code, I18n.t('hub.routes.wayback_code_exclusive')) if line.routes.reject {|r| r.id==id}.map(&:wayback_code).include?( wayback_code) -      end - -      # HUB-37 -      def max_instance_limitation -        return unless hub_restricted? -        errors.add( :flash, I18n.t('hub.routes.max_by_line')) if 2 < line.routes.size -      end - -      # HUB-38 -      with_options if: :hub_restricted? do |route| -        route.validates_format_of :objectid, :with => %r{\A\w+:\w+:([\w]{1,8}|__pending_id__\d+)\z} -      end -    end -  end -end - diff --git a/lib/ninoxe_extension/hub/stop_area_restrictions.rb b/lib/ninoxe_extension/hub/stop_area_restrictions.rb deleted file mode 100644 index 17df9dba1..000000000 --- a/lib/ninoxe_extension/hub/stop_area_restrictions.rb +++ /dev/null @@ -1,67 +0,0 @@ -# -*- coding: utf-8 -*- -module NinoxeExtension::Hub -  module StopAreaRestrictions -    extend ActiveSupport::Concern - -    def physical? -      self.area_type=="BoardingPosition" ||  self.area_type=="Quay" -    end -    def commercial? -      self.area_type=="CommercialStopPoint" -    end -    def physical_hub_restricted? -      hub_restricted? && physical? -    end -    def commercial_hub_restricted? -      hub_restricted? && commercial? -    end -    def commercial_and_physical_hub_restricted? -      physical_hub_restricted? || commercial_hub_restricted? -    end -    # def specific_objectid -    #   validate_specific_objectid( 12) -    # end - -    included do -      include ObjectidRestrictions - - -      with_options if: :commercial_and_physical_hub_restricted? do |sa| -        # HUB-23 -        sa.validate :specific_objectid -        #sa.validates_length_of :name, :minimum => 1, :maximum => 75 -        sa.validates :name, length: { in: 1..75 } -      end - -      with_options if: :commercial_hub_restricted? do |sa| -        # HUB-24 -        #sa.validates_length_of :nearest_topic_name, :maximum => 255, :allow_blank => true, :allow_nil => true -        sa.validates :nearest_topic_name, length: { maximum: 255 }, allow_blank: true -      end - -      with_options if: :physical_hub_restricted? do |sa| -        # HUB-25 -        #sa.validates_length_of :nearest_topic_name, :maximum => 60, :allow_blank => true, :allow_nil => true -        sa.validates :nearest_topic_name, length: { maximum: 60 }, allow_blank: true -        # HUB-28 -        #sa.validates_presence_of :coordinates -        sa.validates :coordinates, presence: true -        # HUB-29 -        #sa.validates_length_of :city_name, :minimum => 1, :maximum => 80 -        sa.validates :city_name, length: { in: 1..80 } -        # HUB-30 -        #sa.validates_format_of :country_code, :with => %r{\A[\d]{5}\z} -        sa.validates :country_code, presence: true, numericality: { only_integer: true }, length: { is: 5 } -        # HUB-31 -        #sa.validates_length_of :comment, :maximum => 255, :allow_blank => true, :allow_nil => true -        sa.validates :comment, length: { maximum: 255 }, allow_blank: true -        #sa.validates :registration_number, :numericality => { :less_than => 10 ** 8 } -        sa.validates :registration_number, presence: true, numericality: { less_than: 10 ** 8 } -      end -    end -    def specific_objectid -      validate_specific_objectid(12) -    end -  end -end - diff --git a/lib/ninoxe_extension/hub/time_table_restrictions.rb b/lib/ninoxe_extension/hub/time_table_restrictions.rb deleted file mode 100644 index b61d1e05a..000000000 --- a/lib/ninoxe_extension/hub/time_table_restrictions.rb +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -module NinoxeExtension::Hub -  module TimeTableRestrictions -    extend ActiveSupport::Concern - -    included do -      include ObjectidRestrictions - -      with_options if: :hub_restricted? do |tt| -        # HUB-44 -        tt.validate :specific_objectid -        # HUB-45 -        #tt.validates_length_of :comment, :maximum => 75, :allow_blank => true, :allow_nil => true -        tt.validates :comment, length: { maximum: 75 }, allow_blank: true -      end -    end -    def specific_objectid -      validate_specific_objectid( 6) -    end -  end -end - diff --git a/lib/ninoxe_extension/hub/vehicle_journey_restrictions.rb b/lib/ninoxe_extension/hub/vehicle_journey_restrictions.rb deleted file mode 100644 index b1a493207..000000000 --- a/lib/ninoxe_extension/hub/vehicle_journey_restrictions.rb +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -module NinoxeExtension::Hub -  module VehicleJourneyRestrictions -    extend ActiveSupport::Concern - -    included do -      include ObjectidRestrictions - -      # HUB-42 -      with_options if: :hub_restricted? do |vj| -        vj.validate :specific_objectid -      end -    end -    def specific_objectid -      validate_specific_objectid( 8) -    end -  end -end - diff --git a/lib/ninoxe_extension/projection_fields.rb b/lib/ninoxe_extension/projection_fields.rb deleted file mode 100644 index 25d30df94..000000000 --- a/lib/ninoxe_extension/projection_fields.rb +++ /dev/null @@ -1,63 +0,0 @@ -   -  module NinoxeExtension::ProjectionFields  -    extend ActiveSupport::Concern - -    included do -      #attr_accessible :projection_x,:projection_y,:projection_xy -   -      # add projection_type set on pre-insert and pre_update action -    before_save :set_projections -    def set_projections -      if ! self.coordinates.blank? -        self.long_lat_type = 'WGS84' -      else -        self.long_lat_type = nil -      end -    end - -    def projection -      if self.referential.projection_type.nil? || self.referential.projection_type.empty? -        nil -      else -        self.referential.projection_type -      end -    end -    @point = nil - -    def projection_x -      if self.long_lat_type.nil? || self.projection.nil? -        nil -      else -        @point ||= GeoRuby::SimpleFeatures::Point::from_lat_lng(Geokit::LatLng.new(self.latitude,self.longitude)).project_to(self.projection.to_i) -        @point.x -      end -    end -    def projection_y -      if self.long_lat_type.nil? || self.projection.nil? -        nil -      else -        @point ||= GeoRuby::SimpleFeatures::Point::from_lat_lng(Geokit::LatLng.new(self.latitude,self.longitude)).project_to(self.projection.to_i) -        @point.y -      end -    end -    def projection_xy -      if self.long_lat_type.nil? || self.projection.nil? -        nil -      else -        @point ||= GeoRuby::SimpleFeatures::Point::from_lat_lng(Geokit::LatLng.new(self.latitude,self.longitude)).project_to(self.projection.to_i) -        @point.x.to_s+","+@point.y.to_s -      end -    end -    def projection_x=(dummy) -      # dummy method -    end -    def projection_y=(dummy) -      # dummy method -    end -    def projection_xy=(dummy) -      # dummy method -    end -    end -  end - - diff --git a/spec/models/chouette/stop_area_spec.rb b/spec/models/chouette/stop_area_spec.rb index b237f08ef..3b19aa17c 100644 --- a/spec/models/chouette/stop_area_spec.rb +++ b/spec/models/chouette/stop_area_spec.rb @@ -243,9 +243,9 @@ describe Chouette::StopArea, :type => :model do    describe "#default_position" do -    it "should return nil when StopArea.bounds is nil" do +    it "should return referential center point when StopArea.bounds is nil" do        allow(Chouette::StopArea).to receive_messages :bounds => nil -      expect(subject.default_position).to be_nil +      expect(subject.default_position).not_to be_nil      end      it "should return StopArea.bounds center" do diff --git a/spec/models/chouette/trident_active_record_spec.rb b/spec/models/chouette/trident_active_record_spec.rb index 9728a2923..654dd6685 100644 --- a/spec/models/chouette/trident_active_record_spec.rb +++ b/spec/models/chouette/trident_active_record_spec.rb @@ -31,31 +31,31 @@ describe Chouette::TridentActiveRecord, :type => :model do    describe "#prepare_auto_columns" do      it "should left objectid" do -      tm = Chouette::TimeTable.new :comment => "merge1" , :objectid => "NINOXE:Timetable:merge1" +      tm = Chouette::TimeTable.new :comment => "merge1" , :objectid => "first:Timetable:merge1"        tm.prepare_auto_columns -      expect(tm.objectid).to eq("NINOXE:Timetable:merge1") +      expect(tm.objectid).to eq("first:Timetable:merge1")      end      it "should add pending_id to objectid" do        tm = Chouette::TimeTable.new :comment => "merge1"        tm.prepare_auto_columns -      expect(tm.objectid.start_with?("NINOXE:Timetable:__pending_id__")).to be_truthy +      expect(tm.objectid.start_with?("first:Timetable:__pending_id__")).to be_truthy      end      it "should set id to objectid" do        tm = Chouette::TimeTable.new :comment => "merge1"        tm.save -      expect(tm.objectid).to eq("NINOXE:Timetable:"+tm.id.to_s) +      expect(tm.objectid).to eq("first:Timetable:"+tm.id.to_s)      end      it "should detect objectid conflicts" do        tm = Chouette::TimeTable.new :comment => "merge1"        tm.save -      tm.objectid = "NINOXE:Timetable:"+(tm.id+1).to_s +      tm.objectid = "first:Timetable:"+(tm.id+1).to_s        tm.save        tm = Chouette::TimeTable.new :comment => "merge1"        tm.save -      expect(tm.objectid).to eq("NINOXE:Timetable:"+tm.id.to_s+"_1") +      expect(tm.objectid).to eq("first:Timetable:"+tm.id.to_s+"_1")      end    end @@ -65,48 +65,48 @@ describe Chouette::TridentActiveRecord, :type => :model do      it "should build automatic objectid when empty" do        g1 = Chouette::GroupOfLine.new( :name => "g1")        g1.save -      expect(g1.objectid).to eq("NINOXE:GroupOfLine:"+g1.id.to_s) +      expect(g1.objectid).to eq("first:GroupOfLine:"+g1.id.to_s)      end      it "should build automatic objectid with fixed when only suffix given" do        g1 = Chouette::GroupOfLine.new( :name => "g1")        g1.objectid = "toto"        g1.save -      expect(g1.objectid).to eq("NINOXE:GroupOfLine:toto") +      expect(g1.objectid).to eq("first:GroupOfLine:toto")      end      it "should build automatic objectid with extension when already exists" do        g1 = Chouette::GroupOfLine.new( :name => "g1")        g1.save        cnt = g1.id + 1 -      g1.objectid = "NINOXE:GroupOfLine:"+cnt.to_s +      g1.objectid = "first:GroupOfLine:"+cnt.to_s        g1.save        g2 = Chouette::GroupOfLine.new( :name => "g2")        g2.save -      expect(g2.objectid).to eq("NINOXE:GroupOfLine:"+g2.id.to_s+"_1") +      expect(g2.objectid).to eq("first:GroupOfLine:"+g2.id.to_s+"_1")      end      it "should build automatic objectid with extension when already exists" do        g1 = Chouette::GroupOfLine.new( :name => "g1")        g1.save        cnt = g1.id + 2 -      g1.objectid = "NINOXE:GroupOfLine:"+cnt.to_s +      g1.objectid = "first:GroupOfLine:"+cnt.to_s        g1.save        g2 = Chouette::GroupOfLine.new( :name => "g2") -      g2.objectid = "NINOXE:GroupOfLine:"+cnt.to_s+"_1" +      g2.objectid = "first:GroupOfLine:"+cnt.to_s+"_1"        g2.save        g3 = Chouette::GroupOfLine.new( :name => "g3")        g3.save -      expect(g3.objectid).to eq("NINOXE:GroupOfLine:"+g3.id.to_s+"_2") +      expect(g3.objectid).to eq("first:GroupOfLine:"+g3.id.to_s+"_2")      end      it "should build automatic objectid when id cleared" do        g1 = Chouette::GroupOfLine.new( :name => "g1") -      g1.objectid = "NINOXE:GroupOfLine:xxxx" +      g1.objectid = "first:GroupOfLine:xxxx"        g1.save        g1.objectid = nil        g1.save -      expect(g1.objectid).to eq("NINOXE:GroupOfLine:"+g1.id.to_s) +      expect(g1.objectid).to eq("first:GroupOfLine:"+g1.id.to_s)      end    end | 
