dm-filemaker-adapter 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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