aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette/connection_link.rb
diff options
context:
space:
mode:
authorXinhui2016-02-22 14:17:18 +0100
committerXinhui2016-02-22 14:17:18 +0100
commitd49f47b4ac1db2cd88b96d830772bb7773924601 (patch)
tree191c7b9cda9edf939792e7780df4e7460d685a4a /app/models/chouette/connection_link.rb
parent633004afc5861a6e8158948ddfecd73bf4dd86a8 (diff)
downloadchouette-core-d49f47b4ac1db2cd88b96d830772bb7773924601.tar.bz2
Merge model from ninoxe gem
Diffstat (limited to 'app/models/chouette/connection_link.rb')
-rw-r--r--app/models/chouette/connection_link.rb47
1 files changed, 47 insertions, 0 deletions
diff --git a/app/models/chouette/connection_link.rb b/app/models/chouette/connection_link.rb
new file mode 100644
index 000000000..045f7c1d9
--- /dev/null
+++ b/app/models/chouette/connection_link.rb
@@ -0,0 +1,47 @@
+class Chouette::ConnectionLink < Chouette::TridentActiveRecord
+ # FIXME http://jira.codehaus.org/browse/JRUBY-6358
+ self.primary_key = "id"
+
+ attr_accessor :connection_link_type
+
+ belongs_to :departure, :class_name => 'Chouette::StopArea'
+ belongs_to :arrival, :class_name => 'Chouette::StopArea'
+
+ validates_presence_of :name
+
+ def self.nullable_attributes
+ [:link_distance, :default_duration, :frequent_traveller_duration, :occasional_traveller_duration,
+ :mobility_restricted_traveller_duration, :link_type]
+ end
+
+ def connection_link_type
+ link_type && Chouette::ConnectionLinkType.new( link_type.underscore)
+ end
+
+ def connection_link_type=(connection_link_type)
+ self.link_type = (connection_link_type ? connection_link_type.camelcase : nil)
+ end
+
+ @@connection_link_types = nil
+ def self.connection_link_types
+ @@connection_link_types ||= Chouette::ConnectionLinkType.all
+ end
+
+ def possible_areas
+ Chouette::StopArea.where("area_type != 'ITL'")
+ end
+
+ def stop_areas
+ Chouette::StopArea.where(:id => [self.departure_id,self.arrival_id])
+ end
+
+ def geometry
+ GeoRuby::SimpleFeatures::LineString.from_points( [ departure.geometry, arrival.geometry], 4326) if departure.geometry and arrival.geometry
+ end
+
+ def geometry_presenter
+ Chouette::Geometry::ConnectionLinkPresenter.new self
+ end
+
+end
+