mapfish 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,75 @@
1
+ class <%= controller_class_name %>Controller < ApplicationController
2
+
3
+ SRID = <%= class_name %>.geometry_column.srid
4
+
5
+ # GET /<%= table_name %>
6
+ def index
7
+ @<%= table_name %> = <%= class_name %>.find_by_mapfish_filter(params)
8
+
9
+ render :json => @<%= table_name %>.to_geojson
10
+ end
11
+
12
+ # GET /<%= table_name %>/1
13
+ def show
14
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
15
+
16
+ render :json => [@<%= file_name %>].to_geojson
17
+ end
18
+
19
+ # POST /<%= table_name %>
20
+ def create
21
+ @<%= table_name %> = []
22
+ feature_collection = Geometry.from_geojson(request.raw_post, SRID)
23
+ if feature_collection.nil?
24
+ head :bad_request
25
+ return
26
+ end
27
+
28
+ feature_collection.features.each do |feature|
29
+ if feature.id.is_a? Integer
30
+ <%= file_name %> = <%= class_name %>.find_by_id(feature.id)
31
+ end
32
+ if <%= file_name %>.nil?
33
+ <%= file_name %> = <%= class_name %>.new()
34
+ end
35
+
36
+ if <%= file_name %>.update_attributes_from_feature(feature)
37
+ @<%= table_name %> << <%= file_name %>
38
+ end
39
+ end
40
+
41
+ render :json => @<%= table_name %>.to_geojson, :status => :created
42
+ end
43
+
44
+ # PUT /<%= table_name %>/1
45
+ def update
46
+ feature = Geometry.from_geojson(request.raw_post, SRID)
47
+ if feature.nil?
48
+ head :bad_request
49
+ return
50
+ end
51
+
52
+ if feature.id.is_a? Integer
53
+ @<%= file_name %> = <%= class_name %>.find_by_id(feature.id)
54
+ end
55
+ if @<%= file_name %>.nil?
56
+ head :not_found
57
+ return
58
+ end
59
+
60
+ if @<%= file_name %>.update_attributes_from_feature(feature)
61
+ render :json => @<%= file_name %>.to_geojson, :status => :created
62
+ else
63
+ head :unprocessable_entity
64
+ end
65
+ end
66
+
67
+ # DELETE /<%= table_name %>/1
68
+ def destroy
69
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
70
+ @<%= file_name %>.destroy
71
+
72
+ head :no_content
73
+ end
74
+
75
+ end
@@ -0,0 +1,46 @@
1
+ require 'test_helper'
2
+
3
+ class <%= controller_class_name %>ControllerTest < ActionController::TestCase
4
+
5
+ test "should get index" do
6
+ get :index
7
+ assert_response :success
8
+ assert_not_nil assigns(:<%= table_name %>)
9
+ end
10
+
11
+ test "should get new" do
12
+ get :new
13
+ assert_response :success
14
+ end
15
+
16
+ test "should create <%= file_name %>" do
17
+ assert_difference('<%= class_name %>.count') do
18
+ post :create, :<%= file_name %> => { }
19
+ end
20
+
21
+ assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
22
+ end
23
+
24
+ test "should show <%= file_name %>" do
25
+ get :show, :id => <%= table_name %>(:one).to_param
26
+ assert_response :success
27
+ end
28
+
29
+ test "should get edit" do
30
+ get :edit, :id => <%= table_name %>(:one).to_param
31
+ assert_response :success
32
+ end
33
+
34
+ test "should update <%= file_name %>" do
35
+ put :update, :id => <%= table_name %>(:one).to_param, :<%= file_name %> => { }
36
+ assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
37
+ end
38
+
39
+ test "should destroy <%= file_name %>" do
40
+ assert_difference('<%= class_name %>.count', -1) do
41
+ delete :destroy, :id => <%= table_name %>(:one).to_param
42
+ end
43
+
44
+ assert_redirected_to <%= table_name %>_path
45
+ end
46
+ end
@@ -0,0 +1,2 @@
1
+ module <%= controller_class_name %>Helper
2
+ end
@@ -0,0 +1,16 @@
1
+ Description:
2
+ Stubs out a new MapFish print controller. Pass the controller name, either
3
+ CamelCased or under_scored.
4
+
5
+ To create a controller within a module, specify the controller name as a
6
+ path like 'parent_module/controller_name'.
7
+
8
+ This generates a controller class in app/controllers, a sample configuration
9
+ config/print.yaml, a helper class in app/helpers, a functional
10
+ test suite in test/functional and a helper test suite in test/unit/helpers.
11
+
12
+ Example:
13
+ `./script/generate controller Print
14
+
15
+ Modules Example:
16
+ `./script/generate controller 'admin/print'`
@@ -0,0 +1,39 @@
1
+ class PrintControllerGenerator < Rails::Generator::NamedBase
2
+ def manifest
3
+ record do |m|
4
+ # Check for class naming collisions.
5
+ m.class_collisions "#{class_name}Controller", "#{class_name}ControllerTest", "#{class_name}Helper", "#{class_name}HelperTest"
6
+
7
+ # Controller, helper, views, and test directories.
8
+ m.directory File.join('app/controllers', class_path)
9
+ m.directory File.join('app/helpers', class_path)
10
+ m.directory File.join('test/functional', class_path)
11
+ m.directory File.join('test/unit/helpers', class_path)
12
+ m.directory File.join('config', class_path)
13
+
14
+ # Controller class, functional test, and helper class.
15
+ m.template 'controller.rb',
16
+ File.join('app/controllers',
17
+ class_path,
18
+ "#{file_name}_controller.rb")
19
+
20
+ m.template 'functional_test.rb',
21
+ File.join('test/functional',
22
+ class_path,
23
+ "#{file_name}_controller_test.rb")
24
+
25
+ m.template 'helper.rb',
26
+ File.join('app/helpers',
27
+ class_path,
28
+ "#{file_name}_helper.rb")
29
+
30
+ m.template 'helper_test.rb',
31
+ File.join('test/unit/helpers',
32
+ class_path,
33
+ "#{file_name}_helper_test.rb")
34
+
35
+ # Config file
36
+ m.template 'config.yaml', File.join('config', "print.yaml")
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,76 @@
1
+ #===========================================================================
2
+ # allowed DPIs
3
+ #===========================================================================
4
+ dpis:
5
+ - 254
6
+ - 190
7
+ # - 127
8
+ # - 56
9
+
10
+ #===========================================================================
11
+ # the allowed scales
12
+ #===========================================================================
13
+ scales:
14
+ - 25000
15
+ - 50000
16
+ - 100000
17
+ - 200000
18
+ - 500000
19
+ - 1000000
20
+ - 2000000
21
+ - 4000000
22
+ - 8000000
23
+ - 16000000
24
+ - 32000000
25
+ - 64000000
26
+
27
+ #===========================================================================
28
+ # the list of allowed hosts
29
+ #===========================================================================
30
+
31
+ hosts:
32
+ - !localMatch
33
+ dummy: true
34
+ - !ipMatch
35
+ ip: demo.mapfish.org
36
+ - !dnsMatch
37
+ host: labs.metacarta.com
38
+ port: 80
39
+
40
+
41
+ layouts:
42
+ #===========================================================================
43
+ A4 portrait:
44
+ #===========================================================================
45
+ mainPage:
46
+ rotation: true
47
+ pageSize: A4
48
+ header:
49
+ height: 50
50
+ items:
51
+ - !text
52
+ font: Helvetica
53
+ fontSize: 30
54
+ align: right
55
+ text: 'hello first print'
56
+ items:
57
+ - !map
58
+ spacingAfter: 30
59
+ width: 440
60
+ height: 483
61
+ - !text
62
+ text: 'blablabla'
63
+ spacingAfter: 30
64
+ footer:
65
+ height: 30
66
+ items:
67
+ - !columns
68
+ items:
69
+ - !text
70
+ backgroundColor: #FF0000
71
+ align: left
72
+ text: little test
73
+ - !text
74
+ align: right
75
+ text: 'Page ${pageNum}'
76
+
@@ -0,0 +1,9 @@
1
+ require 'print'
2
+
3
+ class <%= class_name %>Controller < ApplicationController
4
+ include MapFish::Print::Controller
5
+
6
+ def initialize
7
+ @configFile = "#{RAILS_ROOT}/config/print.yaml"
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class <%= class_name %>ControllerTest < ActionController::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,2 @@
1
+ module <%= class_name %>Helper
2
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class <%= class_name %>HelperTest < ActionView::TestCase
4
+ end
data/init.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'geojson'
2
+
3
+ # Load CoreExtensions
4
+ Dir[File.join("#{File.dirname(__FILE__)}", 'lib', 'mapfish_core_extensions', '**', '*.rb')].each do |f|
5
+ extension_module = f.sub(/(.*)(mapfish_core_extensions.*)\.rb/,'\2').classify.constantize
6
+ base_module = f.sub(/(.*mapfish_core_extensions.)(.*)\.rb/,'\2').classify.constantize
7
+ base_module.class_eval { include extension_module }
8
+ end
data/install.rb ADDED
@@ -0,0 +1 @@
1
+ # Install hook code here
data/lib/geojson.rb ADDED
@@ -0,0 +1,156 @@
1
+ #
2
+ # Copyright (C) 2008 Pirmin Kalberer, Sourcepole AG
3
+ #
4
+ # This file is part of MapFish Server
5
+ #
6
+ # MapFish Server is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Lesser General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # MapFish Server is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Lesser General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Lesser General Public License
17
+ # along with MapFish Server. If not, see <http://www.gnu.org/licenses/>.
18
+ #
19
+
20
+ require 'geo_ruby'
21
+
22
+ module GeoRuby
23
+ module SimpleFeatures
24
+ class Geometry
25
+ def self.from_geojson(data, srid=DEFAULT_SRID)
26
+ data ||= {}
27
+ if data.class==String
28
+ require 'active_support'
29
+ data = ActiveSupport::JSON::decode(data)
30
+ end
31
+ coords = data['coordinates'] || data[:coordinates]
32
+ case data['type'] || data[:type]
33
+ when "Point"
34
+ Point.from_coordinates(coords, srid)
35
+ when "LineString"
36
+ LineString.from_coordinates(coords, srid)
37
+ when "Polygon"
38
+ Polygon.from_coordinates(coords, srid)
39
+ when "MultiPoint"
40
+ MultiPoint.from_coordinates(coords, srid)
41
+ when "MultiLineString"
42
+ MultiLineString.from_coordinates(coords, srid)
43
+ when "MultiPolygon"
44
+ MultiPolygon.from_coordinates(coords, srid)
45
+ when "GeometryCollection"
46
+ geometriesJson=data['geometries'] || data[:geometries]
47
+ geometries=geometriesJson.collect { |cur| from_geojson(cur, srid) }
48
+ GeometryCollection.from_geometries(geometries, srid)
49
+ when "Feature"
50
+ geometryJson=data['geometry'] || data[:geometry]
51
+ properties=data['properties'] || data[:properties]
52
+ id=data['id'] || data[:id]
53
+ Feature.new(from_geojson(geometryJson, srid), properties, id)
54
+ when "FeatureCollection"
55
+ features=data['features'] || data[:features]
56
+ FeatureCollection.new(features.collect { |cur| from_geojson(cur, srid) })
57
+ end
58
+ end
59
+ end
60
+ class Point
61
+ def to_json(options = nil)
62
+ {:type => "Point",
63
+ :coordinates => [self.x, self.y]}.to_json(options)
64
+ end
65
+ end
66
+ class LineString
67
+ def to_json(options = nil)
68
+ coords = self.points.collect {|point| [point.x, point.y] }
69
+ {:type => "LineString",
70
+ :coordinates => coords}.to_json(options)
71
+ end
72
+ end
73
+ class Polygon
74
+ def to_json(options = nil)
75
+ coords = self.collect {|ring| ring.points.collect {|point| [point.x, point.y] } }
76
+ {:type => "Polygon",
77
+ :coordinates => coords}.to_json(options)
78
+ end
79
+ end
80
+ class MultiPoint
81
+ def to_json(options = nil)
82
+ coords = self.geometries.collect {|geom| [geom.x, geom.y] }
83
+ {:type => "MultiPoint",
84
+ :coordinates => coords}.to_json(options)
85
+ end
86
+ end
87
+ class MultiLineString
88
+ def to_json(options = nil)
89
+ coords = self.geometries.collect {|geom| geom.points.collect {|point| [point.x, point.y] } }
90
+ {:type => "MultiLineString",
91
+ :coordinates => coords}.to_json(options)
92
+ end
93
+ end
94
+ class MultiPolygon
95
+ def to_json(options = nil)
96
+ coords = self.geometries.collect {|geom| geom.collect {|ring| ring.points.collect {|point| [point.x, point.y] } } }
97
+ {:type => "MultiPolygon",
98
+ :coordinates => coords}.to_json(options)
99
+ end
100
+ end
101
+ class GeometryCollection
102
+ def to_json(options = nil)
103
+ {:type => "GeometryCollection",
104
+ :geometries => self.geometries}.to_json(options)
105
+ end
106
+ end
107
+
108
+ class Feature
109
+ attr_accessor :geometry
110
+ attr_accessor :properties
111
+ attr_accessor :id
112
+
113
+ def initialize(geometry, properties={}, id=nil)
114
+ @geometry=geometry
115
+ @properties=properties
116
+ @id=id
117
+ end
118
+
119
+ def to_json(options = nil)
120
+ result={:type=>"Feature",
121
+ :geometry=>@geometry,
122
+ :properties=>@properties}
123
+ result[:id]=@id if @id!=nil
124
+ return result.to_json(options)
125
+ end
126
+
127
+ def ==(other)
128
+ if other.class != self.class
129
+ false
130
+ else
131
+ @geometry==other.geometry and @properties==other.properties and @id==other.id
132
+ end
133
+ end
134
+ end
135
+
136
+ class FeatureCollection
137
+ attr_accessor :features
138
+ def initialize(features=[])
139
+ @features=features
140
+ end
141
+
142
+ def to_json(options = nil)
143
+ {:type=>"FeatureCollection",
144
+ :features=>@features}.to_json(options)
145
+ end
146
+
147
+ def ==(other)
148
+ if other.class != self.class
149
+ false
150
+ else
151
+ @features==other.features
152
+ end
153
+ end
154
+ end
155
+ end
156
+ end