ninoxe 0.1.6 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/app/models/chouette/command.rb +3 -2
  2. data/app/models/chouette/route.rb +12 -11
  3. data/app/models/chouette/stop_point.rb +11 -5
  4. data/app/models/chouette/time_table.rb +19 -7
  5. data/app/models/chouette/time_table_date.rb +8 -1
  6. data/app/models/chouette/time_table_period.rb +6 -1
  7. data/app/models/chouette/trident_active_record.rb +12 -0
  8. data/config/database.yml +2 -0
  9. data/{spec/dummy/config/database.yml → config/database.yml.me} +2 -0
  10. data/lib/ninoxe/version.rb +1 -1
  11. data/lib/ninoxe.rb~ +7 -0
  12. metadata +131 -209
  13. checksums.yaml +0 -7
  14. data/spec/dummy/README.rdoc +0 -261
  15. data/spec/dummy/Rakefile +0 -6
  16. data/spec/dummy/app/assets/javascripts/application.js +0 -15
  17. data/spec/dummy/app/assets/stylesheets/application.css +0 -13
  18. data/spec/dummy/app/controllers/application_controller.rb +0 -3
  19. data/spec/dummy/app/helpers/application_helper.rb +0 -2
  20. data/spec/dummy/app/mailers/.gitkeep +0 -0
  21. data/spec/dummy/app/models/.gitkeep +0 -0
  22. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  23. data/spec/dummy/config/application.rb +0 -56
  24. data/spec/dummy/config/boot.rb +0 -10
  25. data/spec/dummy/config/environment.rb +0 -7
  26. data/spec/dummy/config/environments/development.rb +0 -37
  27. data/spec/dummy/config/environments/production.rb +0 -67
  28. data/spec/dummy/config/environments/test.rb +0 -37
  29. data/spec/dummy/config/initializers/active_record.rb +0 -2
  30. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  31. data/spec/dummy/config/initializers/inflections.rb +0 -15
  32. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  33. data/spec/dummy/config/initializers/secret_token.rb +0 -7
  34. data/spec/dummy/config/initializers/session_store.rb +0 -8
  35. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  36. data/spec/dummy/config/locales/en.yml +0 -5
  37. data/spec/dummy/config/routes.rb +0 -4
  38. data/spec/dummy/config.ru +0 -4
  39. data/spec/dummy/db/test.sqlite3 +0 -0
  40. data/spec/dummy/lib/assets/.gitkeep +0 -0
  41. data/spec/dummy/log/.gitkeep +0 -0
  42. data/spec/dummy/public/404.html +0 -26
  43. data/spec/dummy/public/422.html +0 -26
  44. data/spec/dummy/public/500.html +0 -25
  45. data/spec/dummy/public/favicon.ico +0 -0
  46. data/spec/dummy/script/rails +0 -6
  47. data/spec/models/chouette/access_link_spec.rb +0 -78
  48. data/spec/models/chouette/access_point_spec.rb +0 -193
  49. data/spec/models/chouette/active_record_spec.rb +0 -121
  50. data/spec/models/chouette/area_type_spec.rb +0 -53
  51. data/spec/models/chouette/company_spec.rb +0 -51
  52. data/spec/models/chouette/connection_link_spec.rb +0 -56
  53. data/spec/models/chouette/direction_spec.rb +0 -60
  54. data/spec/models/chouette/exporter_spec.rb +0 -28
  55. data/spec/models/chouette/file_validator_spec.rb +0 -28
  56. data/spec/models/chouette/group_of_line_spec.rb +0 -31
  57. data/spec/models/chouette/journey_pattern_spec.rb +0 -62
  58. data/spec/models/chouette/line_spec.rb +0 -106
  59. data/spec/models/chouette/loader_spec.rb +0 -69
  60. data/spec/models/chouette/network_spec.rb +0 -22
  61. data/spec/models/chouette/object_id_spec.rb +0 -146
  62. data/spec/models/chouette/route_spec.rb +0 -159
  63. data/spec/models/chouette/stop_area_spec.rb +0 -354
  64. data/spec/models/chouette/stop_point_spec.rb +0 -39
  65. data/spec/models/chouette/time_table_spec.rb +0 -372
  66. data/spec/models/chouette/transport_mode_spec.rb +0 -64
  67. data/spec/models/chouette/vehicle_journey_at_stop_spec.rb +0 -46
  68. data/spec/models/chouette/vehicle_journey_spec.rb +0 -204
  69. data/spec/presenters/chouette/geometry/general_presenter.rb +0 -1
  70. data/spec/presenters/chouette/geometry/line_presenter_spec.rb +0 -13
  71. data/spec/spec_helper.rb +0 -45
@@ -17,7 +17,7 @@ class Chouette::Command
17
17
  @@command = "chouette"
18
18
  cattr_accessor :command
19
19
 
20
- attr_accessor :database, :schema, :host, :user, :password
20
+ attr_accessor :database, :schema, :host, :user, :password, :port
21
21
 
22
22
  def initialize(options = {})
23
23
  database_options_from_active_record.merge(options).each do |k,v|
@@ -31,6 +31,7 @@ class Chouette::Command
31
31
  :database => config[:database],
32
32
  :user => config[:username],
33
33
  :password => config[:password],
34
+ :port => config[:port],
34
35
  :host => (config[:host] or "localhost")
35
36
  }
36
37
  end
@@ -45,7 +46,7 @@ class Chouette::Command
45
46
  #f.puts "database.showsql = true"
46
47
  f.puts "hibernate.username = #{user}"
47
48
  f.puts "hibernate.password = #{password}"
48
- f.puts "jdbc.url=jdbc:postgresql://#{host}:5432/#{database}"
49
+ f.puts "jdbc.url=jdbc:postgresql://#{host}:#{port}/#{database}"
49
50
  f.puts "jdbc.username = #{user}"
50
51
  f.puts "jdbc.password = #{password}"
51
52
  #f.puts "database.hbm2ddl.auto=update"
@@ -6,7 +6,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
6
6
  attr_accessor :direction_code
7
7
 
8
8
  attr_accessible :direction_code, :wayback_code, :line_id, :objectid, :object_version, :creation_time, :creator_id, :name
9
- attr_accessible :comment, :opposite_route_id, :published_name, :number, :direction, :wayback
9
+ attr_accessible :comment, :opposite_route_id, :published_name, :number, :direction, :wayback, :stop_points_attributes
10
10
 
11
11
  def self.nullable_attributes
12
12
  [:published_name, :comment, :number]
@@ -21,7 +21,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
21
21
  end
22
22
  end
23
23
  belongs_to :opposite_route, :class_name => 'Chouette::Route', :foreign_key => :opposite_route_id
24
- has_many :stop_points, :order => 'position', :dependent => :destroy do
24
+ has_many :stop_points, inverse_of: :route, :order => 'position', :dependent => :destroy do
25
25
  def find_by_stop_area(stop_area)
26
26
  stop_area_ids = Integer === stop_area ? [stop_area] : (stop_area.children_in_depth + [stop_area]).map(&:id)
27
27
  where( :stop_area_id => stop_area_ids).first or
@@ -39,7 +39,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
39
39
  endpoint
40
40
  else
41
41
  raise ActiveRecord::RecordNotFound.new("Can't determine position in route #{proxy_owner.id} with #{departure.inspect}")
42
- end
42
+ end
43
43
  end
44
44
  where(" position between ? and ? ", between_positions.first, between_positions.last)
45
45
  end
@@ -52,14 +52,15 @@ class Chouette::Route < Chouette::TridentActiveRecord
52
52
  proxy_owner.stop_points.between(departure, arrival).includes(:stop_area).collect(&:stop_area)
53
53
  end
54
54
  end
55
+ accepts_nested_attributes_for :stop_points, :allow_destroy => :true
55
56
 
56
57
  validates_presence_of :name
57
58
  validates_presence_of :line
58
59
  validates_presence_of :direction_code
59
60
  validates_presence_of :wayback_code
60
-
61
+
61
62
  before_destroy :dereference_opposite_route
62
-
63
+
63
64
  def geometry_presenter
64
65
  Chouette::Geometry::RoutePresenter.new self
65
66
  end
@@ -86,12 +87,12 @@ class Chouette::Route < Chouette::TridentActiveRecord
86
87
  end
87
88
 
88
89
  def self.direction_binding
89
- { "A" => "straight_forward",
90
+ { "A" => "straight_forward",
90
91
  "R" => "backward",
91
92
  "ClockWise" => "clock_wise",
92
93
  "CounterClockWise" => "counter_clock_wise",
93
94
  "North" => "north",
94
- "NorthWest" => "north_west",
95
+ "NorthWest" => "north_west",
95
96
  "West" => "west",
96
97
  "SouthWest" => "south_west",
97
98
  "South" => "south",
@@ -105,7 +106,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
105
106
  end
106
107
  def direction_code=(direction_code)
107
108
  self.direction = nil
108
- self.class.direction_binding.each do |k,v|
109
+ self.class.direction_binding.each do |k,v|
109
110
  self.direction = k if v==direction_code
110
111
  end
111
112
  end
@@ -122,7 +123,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
122
123
  end
123
124
  def wayback_code=(wayback_code)
124
125
  self.wayback = nil
125
- self.class.wayback_binding.each do |k,v|
126
+ self.class.wayback_binding.each do |k,v|
126
127
  self.wayback = k if v==wayback_code
127
128
  end
128
129
  end
@@ -130,14 +131,14 @@ class Chouette::Route < Chouette::TridentActiveRecord
130
131
  def self.waybacks
131
132
  @@waybacks ||= Chouette::Wayback.all
132
133
  end
133
-
134
+
134
135
  def stop_point_permutation?( stop_point_ids)
135
136
  stop_points.map(&:id).map(&:to_s).sort == stop_point_ids.map(&:to_s).sort
136
137
  end
137
138
 
138
139
  def reorder!( stop_point_ids)
139
140
  return false unless stop_point_permutation?( stop_point_ids)
140
-
141
+
141
142
  stop_area_id_by_stop_point_id = {}
142
143
  stop_points.each do |sp|
143
144
  stop_area_id_by_stop_point_id.merge!( sp.id => sp.stop_area_id)
@@ -3,21 +3,27 @@ class Chouette::StopPoint < Chouette::TridentActiveRecord
3
3
  self.primary_key = "id"
4
4
 
5
5
  belongs_to :stop_area
6
- belongs_to :route
6
+ belongs_to :route, inverse_of: :stop_points
7
7
  acts_as_list :scope => 'route_id = \'#{route.id}\'',:top_of_list => 0
8
8
 
9
9
  attr_accessible :route_id, :stop_area_id, :objectid, :object_version, :creation_time, :creator_id, :position
10
10
 
11
11
  has_many :vehicle_journey_at_stops, :dependent => :destroy
12
12
  has_many :vehicle_journeys, :through => :vehicle_journey_at_stops, :uniq => true
13
-
13
+
14
14
  before_destroy :remove_dependent_journey_pattern_stop_points
15
-
15
+
16
16
  validates_presence_of :stop_area
17
- validates_presence_of :route
18
-
17
+ validate :stop_area_id_validation
18
+
19
19
  scope :default_order, order("position")
20
20
 
21
+ def stop_area_id_validation
22
+ if stop_area_id.nil?
23
+ errors.add(:stop_area_id, I18n.t("errors.messages.empty"))
24
+ end
25
+ end
26
+
21
27
  def self.area_candidates
22
28
  Chouette::StopArea.where( :area_type => ['Quay', 'BoardingPosition'])
23
29
  end
@@ -7,8 +7,8 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
7
7
  attr_accessible :start_date, :end_date
8
8
  attr_accessor :monday,:tuesday,:wednesday,:thursday,:friday,:saturday,:sunday
9
9
 
10
- has_many :dates, :class_name => "Chouette::TimeTableDate", :order => :date, :dependent => :destroy, :after_add => :shortcuts_update, :after_remove => :shortcuts_update
11
- has_many :periods, :class_name => "Chouette::TimeTablePeriod", :order => :period_start, :dependent => :destroy, :after_add => :shortcuts_update, :after_remove => :shortcuts_update
10
+ has_many :dates, inverse_of: :time_table, :validate => :true, :class_name => "Chouette::TimeTableDate", :order => :date, :dependent => :destroy, :after_add => :shortcuts_update, :after_remove => :shortcuts_update
11
+ has_many :periods, inverse_of: :time_table, :validate => :true, :class_name => "Chouette::TimeTablePeriod", :order => :period_start, :dependent => :destroy, :after_add => :shortcuts_update, :after_remove => :shortcuts_update
12
12
 
13
13
  def self.object_id_key
14
14
  "Timetable"
@@ -19,6 +19,8 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
19
19
  attr_accessible :dates_attributes,:periods_attributes
20
20
 
21
21
  validates_presence_of :comment
22
+ validates_associated :dates
23
+ validates_associated :periods
22
24
 
23
25
  def self.start_validity_period
24
26
  [Chouette::TimeTable.minimum(:start_date)].compact.min
@@ -29,11 +31,21 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
29
31
 
30
32
  def shortcuts_update(date=nil)
31
33
  dates_array = bounding_dates
32
- if dates_array.empty?
33
- update_attributes :start_date => nil, :end_date => nil
34
- else
35
- update_attributes :start_date => dates_array.min, :end_date => dates_array.max
36
- end
34
+ #if new_record?
35
+ if dates_array.empty?
36
+ self.start_date=nil
37
+ self.end_date=nil
38
+ else
39
+ self.start_date=dates_array.min
40
+ self.end_date=dates_array.max
41
+ end
42
+ #else
43
+ # if dates_array.empty?
44
+ # update_attributes :start_date => nil, :end_date => nil
45
+ # else
46
+ # update_attributes :start_date => dates_array.min, :end_date => dates_array.max
47
+ # end
48
+ #end
37
49
  end
38
50
 
39
51
  def validity_out_from_on?(expected_date)
@@ -1,14 +1,21 @@
1
1
  class Chouette::TimeTableDate < Chouette::ActiveRecord
2
2
  self.primary_key = "id"
3
- belongs_to :time_table
3
+ belongs_to :time_table, inverse_of: :dates
4
4
  acts_as_list :scope => 'time_table_id = #{time_table_id}',:top_of_list => 0
5
5
 
6
6
  validates_presence_of :date
7
7
  validates_uniqueness_of :date, :scope => :time_table_id
8
8
 
9
9
  attr_accessible :date, :position, :time_table_id, :time_table
10
+
11
+ after_update :update_parent
12
+
10
13
  def self.model_name
11
14
  ActiveModel::Name.new Chouette::TimeTableDate, Chouette, "TimeTableDate"
12
15
  end
16
+
17
+ def update_parent
18
+ time_table.shortcuts_update
19
+ end
13
20
  end
14
21
 
@@ -1,6 +1,6 @@
1
1
  class Chouette::TimeTablePeriod < Chouette::ActiveRecord
2
2
  self.primary_key = "id"
3
- belongs_to :time_table
3
+ belongs_to :time_table, inverse_of: :periods
4
4
  acts_as_list :scope => 'time_table_id = #{time_table_id}',:top_of_list => 0
5
5
 
6
6
  attr_accessible :period_start, :period_end, :position,:time_table_id,:time_table
@@ -10,6 +10,8 @@ class Chouette::TimeTablePeriod < Chouette::ActiveRecord
10
10
 
11
11
  validate :start_must_be_before_end
12
12
 
13
+ after_update :update_parent
14
+
13
15
  def self.model_name
14
16
  ActiveModel::Name.new Chouette::TimeTablePeriod, Chouette, "TimeTablePeriod"
15
17
  end
@@ -23,4 +25,7 @@ class Chouette::TimeTablePeriod < Chouette::ActiveRecord
23
25
  errors.add(:period_end,I18n.t("activerecord.errors.models.time_table_period.start_must_be_before_end"))
24
26
  end
25
27
  end
28
+ def update_parent
29
+ time_table.shortcuts_update
30
+ end
26
31
  end
@@ -1,5 +1,7 @@
1
1
  class Chouette::TridentActiveRecord < Chouette::ActiveRecord
2
2
  before_validation :prepare_auto_columns
3
+ after_validation :reset_auto_columns
4
+
3
5
  after_save :build_objectid
4
6
 
5
7
  self.abstract_class = true
@@ -39,6 +41,16 @@ class Chouette::TridentActiveRecord < Chouette::ActiveRecord
39
41
  self.creator_id = 'chouette'
40
42
  end
41
43
 
44
+ def reset_auto_columns
45
+ clean_object_id unless self.errors.nil? || self.errors.empty?
46
+ end
47
+
48
+ def clean_object_id
49
+ if self.objectid.include?("__pending_id__")
50
+ self.objectid=nil
51
+ end
52
+ end
53
+
42
54
  def build_objectid
43
55
  #logger.info 'start after_create : '+self.objectid
44
56
  if self.objectid.include? ':__pending_id__'
data/config/database.yml CHANGED
@@ -1,9 +1,11 @@
1
1
  development:
2
2
  adapter: postgresql
3
3
  database: ninoxe_dev
4
+ port: 5432
4
5
  username: <%= ENV['USER'] %>
5
6
 
6
7
  test:
7
8
  adapter: postgresql
8
9
  database: ninoxe_test
10
+ port: 5432
9
11
  username: <%= ENV['USER'] %>
@@ -2,8 +2,10 @@ development:
2
2
  adapter: postgresql
3
3
  database: ninoxe_dev
4
4
  username: <%= ENV['USER'] %>
5
+ password: <%= ENV['USER'] %>
5
6
 
6
7
  test:
7
8
  adapter: postgresql
8
9
  database: ninoxe_test
9
10
  username: <%= ENV['USER'] %>
11
+ password: <%= ENV['USER'] %>
@@ -1,3 +1,3 @@
1
1
  module Ninoxe
2
- VERSION = "0.1.6"
2
+ VERSION = "1.0.0"
3
3
  end
data/lib/ninoxe.rb~ ADDED
@@ -0,0 +1,7 @@
1
+ require "ninoxe/engine"
2
+
3
+ require "acts_as_list"
4
+ require "composite_primary_keys"
5
+
6
+ module Ninoxe
7
+ end