dm-filemaker-adapter 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDE2YzRlM2E5YjU3NzFjYjAyZjM2NGVhMzE4YjExM2U4MjVmOGI2NA==
4
+ ZDRmNWUzZGU0Mzk5MGU5OTYwMmUxMGQ0ODdhZGViYTEwYTI1OWIwYQ==
5
5
  data.tar.gz: !binary |-
6
- ZTkzMmU3MmM2MmVlNmVkYmI2N2RiOTUwYzc5MDNlZWIyZTY5N2VlNg==
6
+ ZTk4ZWM3ODc2MmRlYmIxOWJjZmFiZGYxMzUwNTk1OTYyODdiYzMyZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZmMzZDIyNTgyZTZlYmQwZGU3M2U2YTg2MzcxMGFhMzRkODM0MzhiZDRhMjEz
10
- NzZkYmExZjEzNTAwNmE2ZDk4Y2YwMzNjZWMyYTJhMzAzNjg0NTljOTM0YTYz
11
- ZDgzMjczZWExYTk4NmFmNTlkYzZlMjZmMmE4MDU5NTMzZWNkYjk=
9
+ MWVhYmQ3MjYwZmMxMzdiNTBhZGE1ODEwODVkOGMzM2Q0Y2FlMzRiODA5ZjBh
10
+ ZDBhMDVmZTIzODYwOTQ5YjFlMzIwNjc4ZDBhZjA4YjEwNTkzYTFjNzFhOTg0
11
+ N2VlNDRhZDlkMDkxYjk0OTA1NTUzMjFlZDBhNGQ2MGFiNzM0YTI=
12
12
  data.tar.gz: !binary |-
13
- MTg2MDViODIyNTU4NzRiZGUxOTkzZWRlYjFkODcxYjhlMzVlYzZjMGU4NzJk
14
- N2E4NWYxYWQ2NmRiMjQ4N2ZlMjlhNmNkOWM2ZTFiNDI5NjkyN2ViZWU5OTg5
15
- Y2NmY2JiODY3NWM0ZmI4NDFkYjRlMWUxMTBjM2JjM2ExYTkzNzA=
13
+ NWI3ZTBmZTdiM2UwMTJlZmRlZDNlYThlYzEzMTA4MWY1MzRmM2U2ZGIwNzM2
14
+ NjY3MzRhZmMwZmU2YTU0Yzk1ODE3N2Q3OTJhODMyOTQ1OGZhNGQyYTdmZTU3
15
+ M2UyMmNhYTllZThjYzExMTI3NmM1ODM1OWNiZjUyNGVlNDY2ODE=
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  # Only enable this if you are testing against a local copy of ginjo-rfm.
6
- gem 'ginjo-rfm', :path=>'../GinjoRfm.git/'
6
+ # gem 'ginjo-rfm', :path=>'../GinjoRfm.git/'
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "data_mapper"
22
- spec.add_dependency "ginjo-rfm"
22
+ spec.add_dependency "ginjo-rfm", '~> 3.0'
23
23
 
24
24
  spec.add_development_dependency "bundler"
25
25
  spec.add_development_dependency "rake"
@@ -6,6 +6,7 @@ module DataMapper
6
6
 
7
7
  class FilemakerAdapter < AbstractAdapter
8
8
  VERSION = DataMapper::FilemakerAdapter::VERSION
9
+
9
10
  FMRESULTSET_TEMPLATE = {:template => File.expand_path('../dm-fmresultset.yml', __FILE__)}
10
11
 
11
12
 
@@ -228,10 +229,6 @@ module DataMapper
228
229
  def layout
229
230
  @layout ||= Rfm.layout(storage_name, repository.adapter.options.merge(FMRESULTSET_TEMPLATE).symbolize_keys)
230
231
  end
231
-
232
- # Not how to do this. Doesn't work anywhere I've tried it:
233
- #extend Forwardable
234
- #def_delegators :layout, *layout.class.instance_methods.select {|m| m.to_s[/^[a-z]/]}
235
232
  end
236
233
 
237
234
  # Instance methods included in model.
@@ -139,6 +139,20 @@ module DataMapper
139
139
  end # DataMapper
140
140
 
141
141
  module Rfm
142
+
143
+ # Monkey patch for Rfm <= v3.0.8. (Rfm v1 or v2 will not work for DM)
144
+ if (Rfm::VERSION.major.to_i == 3 and Rfm::VERSION.minor.to_i < 1 and Rfm::VERSION.patch.to_i < 9)
145
+ Rfm::Connection.class_eval do
146
+ Rfm::SaxParser::TEMPLATE_PREFIX.replace ''
147
+ alias_method :parse_original, :parse
148
+ def parse(*args)
149
+ args[0] = DataMapper::Adapters::FilemakerAdapter::FMRESULTSET_TEMPLATE[:template]
150
+ parse_original(*args)
151
+ end
152
+ end
153
+ end
154
+
155
+
142
156
  class Resultset
143
157
 
144
158
  # Does custom processing during each record-to-resource translation done in DataMapper::Model#load
@@ -152,27 +166,30 @@ module Rfm
152
166
  #puts "MODEL#LOAD custom processing RECORD #{record.class} RESOURCE #{resource.class}"
153
167
  #puts record.inspect
154
168
  # For Testing:
155
- #resource.instance_variable_set(:@record, record)
169
+ resource.instance_variable_set(:@record, record)
156
170
  # WBR - Loads portal data into DM model attached to this resource.
157
171
  portals = record.instance_variable_get(:@portals)
158
- #puts "MODEL#LOAD record #{record.class} portals #{portals.keys rescue 'no portals'}"
172
+ #puts "MODEL#LOAD record: #{record.class} portals: #{portals.keys rescue 'no portals'}"
159
173
  #if record.respond_to?(:portals) && record.portals.kind_of?(Hash) && record.portals.any?
160
174
  model = resource.class
175
+ return unless model.kind_of?(DataMapper::Model)
176
+ #puts "MODEL#LOAD resource class: #{model}"
161
177
  if portals.kind_of?(Hash) && portals.any?
162
178
  begin
163
- #puts record.portals.to_yaml
164
- portal_keys = portals.keys
165
- #puts "PORTALS: #{portal_keys}"
166
- portal_keys.each do |portal_key|
167
- #relat = model.relationships.to_a.find{|r| storage_name = r.child_model.storage_names[:default]; portal_key.to_s == storage_name }
168
- relat = model.relationships.to_a.find{|r| storage_name = r.child_model.storage_name; portal_key.to_s == storage_name }
169
- if relat
170
- #puts "BUILDING RELATIONSHIP FROM PORTAL: #{relat.name} #{relat.child_model.name}"
171
- resource.instance_variable_set(relat.instance_variable_name, relat.child_model.load(record.instance_variable_get(:@portals)[portal_key], relat.child_model.query) )
172
- end
173
- end
179
+ #puts record.portals.to_yaml
180
+ portal_keys = portals.keys
181
+ #puts "PORTALS: #{portal_keys}"
182
+ portal_keys.each do |portal_key|
183
+ #relat = model.relationships.to_a.find{|r| storage_name = r.child_model.storage_names[:default]; portal_key.to_s == storage_name }
184
+ relat = model.relationships.to_a.find{|r| storage_name = r.child_model.storage_name; portal_key.to_s == storage_name }
185
+ if relat
186
+ #puts "BUILDING RELATIONSHIP FROM PORTAL: #{relat.name} #{relat.child_model.name}"
187
+ resources_from_portal = relat.child_model.load(record.instance_variable_get(:@portals)[portal_key], relat.child_model.query)
188
+ resource.instance_variable_set(relat.instance_variable_name, resources_from_portal)
189
+ end
190
+ end
174
191
  rescue
175
- puts "ERROR LOADING PORTALS #{$!}"
192
+ #puts "ERROR LOADING PORTALS #{$!}"
176
193
  end
177
194
  end
178
195
  resource.instance_variable_set(:@_record_id, record.instance_variable_get(:@record_id))
@@ -1,5 +1,5 @@
1
1
  module DataMapper
2
2
  module FilemakerAdapter
3
- VERSION = "0.0.4"
3
+ VERSION = "0.0.5"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm-filemaker-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Richardson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-20 00:00:00.000000000 Z
11
+ date: 2015-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: data_mapper
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: ginjo-rfm
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '3.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '3.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement