gb_mapfish_appserver 0.9.7 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -38,31 +38,17 @@ class AppsController < ApplicationController
38
38
  if rule.nil?
39
39
  logger.info "Locate rule not found: {params['locate']}"
40
40
  else
41
- model = rule.model.constantize
42
- features = if rule.layer.nil?
43
- #User defined model
44
- @seltopic = model.selection_topic
45
- @sellayer = model.selection_layer
46
- @selproperty = model.primary_key
47
- @selscalerange = model.selection_scalerange
48
- search_locs = model.search_locations(params['locations'])
49
- model.locate(search_locs)
50
- else
51
- #Generic SearchModel
52
- layer = Layer.find_by_name(rule.layer)
53
- @seltopic = @topic_name
54
- @sellayer = layer.name
55
- @selproperty = layer.feature_class.primary_key
56
- @selscalerange = model.selection_scalerange
57
- search_locs = params['locations'].split(',')
58
- model.layer_locate(layer, rule.search_field, search_locs)
59
- end
60
- if features.present?
61
- @x, @y, scale = model.map_center(features)
62
- @scale = params['scale'].nil? ? scale : params['scale'].to_i
63
- #Selection
64
- @selbbox = model.bbox(features)
65
- @selvalues = features.collect {|f| f.send(model.primary_key) }
41
+ location = rule.locate(params['locations'])
42
+ unless location.nil?
43
+ @seltopic = location[:selection][:topic] || @topic_name
44
+ @sellayer = location[:selection][:layer]
45
+ @selproperty = location[:selection][:property]
46
+ @selvalues = location[:selection][:values]
47
+ @selscalerange = location[:selection][:scalerange]
48
+ @x = location[:x]
49
+ @y = location[:y]
50
+ @scale = params['scale'].nil? ? location[:scale] : params['scale'].to_i
51
+ @selbbox = location[:bbox]
66
52
  else
67
53
  logger.info "no features found."
68
54
  end
@@ -25,6 +25,21 @@ class SearchController < ApplicationController
25
25
  end
26
26
  end
27
27
 
28
+ def locate
29
+ rule = LOCATERULES[params[:rule]]
30
+ if rule.nil?
31
+ render :json => {:success => false, :msg => "ERROR: #{params[:rule]} model missing"}
32
+ else
33
+ location = rule.locate(params['locations'])
34
+ unless location.nil?
35
+ location[:success] = true
36
+ render :json => location
37
+ else
38
+ render :json => {:success => false, :msg => "No features found"}
39
+ end
40
+ end
41
+ end
42
+
28
43
  def soap_wsdl
29
44
  render "#{params[:rule]}_wsdl.xml"
30
45
  end
@@ -0,0 +1,50 @@
1
+ class LocateRule
2
+ attr_accessor :model, :layer, :search_field
3
+
4
+ def initialize(model, layer=nil, search_field=nil)
5
+ @model = model.constantize
6
+ @layer = layer
7
+ @search_field = search_field
8
+ end
9
+
10
+ # get selection and extent for located features
11
+ def locate(locations)
12
+ features = if layer.nil?
13
+ # user defined model
14
+ seltopic = model.selection_topic
15
+ sellayer = model.selection_layer
16
+ selproperty = model.primary_key
17
+ selscalerange = model.selection_scalerange
18
+ search_locs = model.search_locations(locations)
19
+ model.locate(search_locs)
20
+ else
21
+ # generic SearchModel
22
+ layer_obj = Layer.find_by_name(layer)
23
+ seltopic = nil
24
+ sellayer = layer_obj.name
25
+ selproperty = layer_obj.feature_class.primary_key
26
+ selscalerange = model.selection_scalerange
27
+ search_locs = locations.split(',')
28
+ model.layer_locate(layer_obj, search_field, search_locs)
29
+ end
30
+ if features.present?
31
+ x, y, scale = model.map_center(features)
32
+ {
33
+ :selection => {
34
+ :topic => seltopic,
35
+ :layer => sellayer,
36
+ :property => selproperty,
37
+ :values => features.collect {|f| f.send(model.primary_key) },
38
+ :scalerange => selscalerange,
39
+ },
40
+ :x => x,
41
+ :y => y,
42
+ :scale => scale,
43
+ :bbox => model.bbox(features)
44
+ }
45
+ else
46
+ # no features found
47
+ nil
48
+ end
49
+ end
50
+ end
data/config/routes.rb CHANGED
@@ -35,6 +35,7 @@ Rails.application.routes.draw do
35
35
  resources :maps
36
36
 
37
37
  match 'search/:rule' => 'search#index'
38
+ match 'locate/:rule' => 'search#locate', :as => :locate
38
39
  match 'services/:rule.wsdl' => 'search#soap_wsdl', :as => :services_description
39
40
  match 'services/:rule' => 'search#soap', :as => :services
40
41
 
@@ -11,6 +11,3 @@ module GbMapfishAppserver
11
11
  end
12
12
 
13
13
  SearchRule = Struct.new(:model, :fields, :alias_fields)
14
-
15
- LocateRule = Struct.new(:model, :layer, :search_field)
16
-
@@ -1,3 +1,3 @@
1
1
  module GbMapfishAppserver
2
- VERSION = "0.9.7"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,211 +1,170 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gb_mapfish_appserver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 1.0.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Pirmin Kalberer
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-09-17 00:00:00.000000000 Z
12
+ date: 2014-09-24 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rails
15
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &19441660 !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
19
21
  version: 3.2.13
20
22
  type: :runtime
21
23
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: 3.2.13
24
+ version_requirements: *19441660
27
25
  - !ruby/object:Gem::Dependency
28
26
  name: json
29
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &19441160 !ruby/object:Gem::Requirement
28
+ none: false
30
29
  requirements:
31
30
  - - ! '>='
32
31
  - !ruby/object:Gem::Version
33
32
  version: '0'
34
33
  type: :runtime
35
34
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ! '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
35
+ version_requirements: *19441160
41
36
  - !ruby/object:Gem::Dependency
42
37
  name: acts_as_tree
43
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &19440540 !ruby/object:Gem::Requirement
39
+ none: false
44
40
  requirements:
45
- - - '='
41
+ - - =
46
42
  - !ruby/object:Gem::Version
47
43
  version: 0.2.0
48
44
  type: :runtime
49
45
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '='
53
- - !ruby/object:Gem::Version
54
- version: 0.2.0
46
+ version_requirements: *19440540
55
47
  - !ruby/object:Gem::Dependency
56
48
  name: devise
57
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &19440020 !ruby/object:Gem::Requirement
50
+ none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
61
54
  version: 2.2.0
62
55
  type: :runtime
63
56
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- version: 2.2.0
57
+ version_requirements: *19440020
69
58
  - !ruby/object:Gem::Dependency
70
59
  name: cancan
71
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &19439500 !ruby/object:Gem::Requirement
61
+ none: false
72
62
  requirements:
73
- - - '='
63
+ - - =
74
64
  - !ruby/object:Gem::Version
75
65
  version: 1.6.8
76
66
  type: :runtime
77
67
  prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '='
81
- - !ruby/object:Gem::Version
82
- version: 1.6.8
68
+ version_requirements: *19439500
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: rails_admin
85
- requirement: !ruby/object:Gem::Requirement
71
+ requirement: &19438840 !ruby/object:Gem::Requirement
72
+ none: false
86
73
  requirements:
87
74
  - - ~>
88
75
  - !ruby/object:Gem::Version
89
76
  version: 0.4.9
90
77
  type: :runtime
91
78
  prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ~>
95
- - !ruby/object:Gem::Version
96
- version: 0.4.9
79
+ version_requirements: *19438840
97
80
  - !ruby/object:Gem::Dependency
98
81
  name: fastercsv
99
- requirement: !ruby/object:Gem::Requirement
82
+ requirement: &19438360 !ruby/object:Gem::Requirement
83
+ none: false
100
84
  requirements:
101
85
  - - ! '>='
102
86
  - !ruby/object:Gem::Version
103
87
  version: '0'
104
88
  type: :runtime
105
89
  prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
90
+ version_requirements: *19438360
111
91
  - !ruby/object:Gem::Dependency
112
92
  name: sass
113
- requirement: !ruby/object:Gem::Requirement
93
+ requirement: &19437700 !ruby/object:Gem::Requirement
94
+ none: false
114
95
  requirements:
115
96
  - - ~>
116
97
  - !ruby/object:Gem::Version
117
98
  version: 3.2.12
118
99
  type: :runtime
119
100
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ~>
123
- - !ruby/object:Gem::Version
124
- version: 3.2.12
101
+ version_requirements: *19437700
125
102
  - !ruby/object:Gem::Dependency
126
103
  name: GeoRuby
127
- requirement: !ruby/object:Gem::Requirement
104
+ requirement: &19437100 !ruby/object:Gem::Requirement
105
+ none: false
128
106
  requirements:
129
107
  - - ! '>='
130
108
  - !ruby/object:Gem::Version
131
109
  version: 0.1.4
132
110
  type: :runtime
133
111
  prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ! '>='
137
- - !ruby/object:Gem::Version
138
- version: 0.1.4
112
+ version_requirements: *19437100
139
113
  - !ruby/object:Gem::Dependency
140
114
  name: rgeo
141
- requirement: !ruby/object:Gem::Requirement
115
+ requirement: &19452980 !ruby/object:Gem::Requirement
116
+ none: false
142
117
  requirements:
143
118
  - - ~>
144
119
  - !ruby/object:Gem::Version
145
120
  version: 0.3.20
146
121
  type: :runtime
147
122
  prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ~>
151
- - !ruby/object:Gem::Version
152
- version: 0.3.20
123
+ version_requirements: *19452980
153
124
  - !ruby/object:Gem::Dependency
154
125
  name: rgeo-geojson
155
- requirement: !ruby/object:Gem::Requirement
126
+ requirement: &19452460 !ruby/object:Gem::Requirement
127
+ none: false
156
128
  requirements:
157
129
  - - ~>
158
130
  - !ruby/object:Gem::Version
159
131
  version: 0.2.3
160
132
  type: :runtime
161
133
  prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ~>
165
- - !ruby/object:Gem::Version
166
- version: 0.2.3
134
+ version_requirements: *19452460
167
135
  - !ruby/object:Gem::Dependency
168
136
  name: hpricot
169
- requirement: !ruby/object:Gem::Requirement
137
+ requirement: &19451900 !ruby/object:Gem::Requirement
138
+ none: false
170
139
  requirements:
171
140
  - - ! '>='
172
141
  - !ruby/object:Gem::Version
173
142
  version: '0'
174
143
  type: :runtime
175
144
  prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ! '>='
179
- - !ruby/object:Gem::Version
180
- version: '0'
145
+ version_requirements: *19451900
181
146
  - !ruby/object:Gem::Dependency
182
147
  name: pg
183
- requirement: !ruby/object:Gem::Requirement
148
+ requirement: &19451320 !ruby/object:Gem::Requirement
149
+ none: false
184
150
  requirements:
185
151
  - - ~>
186
152
  - !ruby/object:Gem::Version
187
153
  version: 0.14.0
188
154
  type: :runtime
189
155
  prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ~>
193
- - !ruby/object:Gem::Version
194
- version: 0.14.0
156
+ version_requirements: *19451320
195
157
  - !ruby/object:Gem::Dependency
196
158
  name: activerecord-postgis-adapter
197
- requirement: !ruby/object:Gem::Requirement
159
+ requirement: &19450720 !ruby/object:Gem::Requirement
160
+ none: false
198
161
  requirements:
199
- - - '='
162
+ - - =
200
163
  - !ruby/object:Gem::Version
201
164
  version: 0.4.1
202
165
  type: :runtime
203
166
  prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - '='
207
- - !ruby/object:Gem::Version
208
- version: 0.4.1
167
+ version_requirements: *19450720
209
168
  description: Mapfish Appserver is a framework for web mapping applications using OGC
210
169
  standards and the Mapfish protocol.
211
170
  email:
@@ -262,6 +221,7 @@ files:
262
221
  - app/models/group.rb
263
222
  - app/models/groups_user.rb
264
223
  - app/models/layer.rb
224
+ - app/models/locate_rule.rb
265
225
  - app/models/organisation.rb
266
226
  - app/models/permission.rb
267
227
  - app/models/role.rb
@@ -462,26 +422,27 @@ files:
462
422
  - test/test_helper.rb
463
423
  homepage: http://mapfish-appserver.github.io/
464
424
  licenses: []
465
- metadata: {}
466
425
  post_install_message:
467
426
  rdoc_options: []
468
427
  require_paths:
469
428
  - lib
470
429
  required_ruby_version: !ruby/object:Gem::Requirement
430
+ none: false
471
431
  requirements:
472
432
  - - ! '>='
473
433
  - !ruby/object:Gem::Version
474
434
  version: '0'
475
435
  required_rubygems_version: !ruby/object:Gem::Requirement
436
+ none: false
476
437
  requirements:
477
438
  - - ! '>='
478
439
  - !ruby/object:Gem::Version
479
440
  version: '0'
480
441
  requirements: []
481
442
  rubyforge_project:
482
- rubygems_version: 2.2.2
443
+ rubygems_version: 1.8.11
483
444
  signing_key:
484
- specification_version: 4
445
+ specification_version: 3
485
446
  summary: Mapfish application server.
486
447
  test_files:
487
448
  - test/dummy/README.rdoc
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MWY1NjE4Y2QyN2E4NzFmNDA0MzMzZDNkMTVmOWI3MjllMWY5OTQxNQ==
5
- data.tar.gz: !binary |-
6
- MmFmNDQ4ZGJjMjIxOTllOTEzZjk3NjY4ODE5NTY5OGEwMDZmYWU5NA==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- OTM2NzRlNjE2M2UyMmIzMjBkMTJkMTRjZGUyYmExOGY2MmE1YTg2ZTM4NzY3
10
- OTM3YTk2YTY3YjhmYWFmMjg4MWVjNTJhYTg3YzFjNTFhMGM1YTA2NGUyNjEx
11
- MjFlNzIwNDljOGUxYzQwNDA1NjFlMmUzMmRlYWI0MDIzMmM0YWU=
12
- data.tar.gz: !binary |-
13
- ZjMxNWE3MjZkY2FiYTQ5NjFmMDExMmQ2NzMyNTVkNGQwNTRjYmYyNTg5YzEy
14
- MjNlY2FkNjI4ZmU0NDdlYmNlYmM5ZTg3YjA0M2ZiYjNiZWQzMTdiNzY1MDc0
15
- Y2JmNzMzNGFjZDE4MDBlYzRkZDc1Y2ZkZTY3MjNmZjY0ZTBlYTQ=