dm-salesforce-adapter 1.0.3 → 1.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.
@@ -136,7 +136,7 @@ class SalesforceAdapter
136
136
 
137
137
  sql = "SELECT #{fields} from #{query.model.storage_name(repository.name)}"
138
138
  sql << " WHERE (#{conditions})" unless conditions.empty?
139
- sql << " ORDER BY #{order(query.order[0])}" unless query.order.empty?
139
+ sql << " ORDER BY #{order(query.order[0])}" unless query.order.nil? or query.order.empty?
140
140
  sql << " LIMIT #{query.limit}" if query.limit
141
141
 
142
142
  DataMapper.logger.debug sql if DataMapper.logger
@@ -165,7 +165,7 @@ class SalesforceAdapter
165
165
  def normalize_id_value(klass, property, value)
166
166
  return nil unless value
167
167
  properties = Array(klass.send(:salesforce_id_properties)).map { |p| p.to_sym } rescue []
168
- return properties.include?(property.name) ? value[0..14] : value
168
+ return properties.include?(property.name) ? value[0..17] : value
169
169
  end
170
170
  end
171
171
 
@@ -49,14 +49,14 @@ class SalesforceAdapter
49
49
 
50
50
  def field_name_for(klass_name, column)
51
51
  klass = SalesforceAPI.const_get(klass_name)
52
- fields = [column, Inflector.camelize(column.to_s), "#{column}__c".downcase]
52
+ fields = [column, Inflector.camelize(column.to_s), "#{Inflector.camelize(column.to_s)}__c", "#{column}__c".downcase]
53
53
  options = /^(#{fields.join("|")})$/i
54
54
  matches = klass.instance_methods(false).grep(options)
55
55
  if matches.any?
56
56
  matches.first
57
57
  else
58
58
  raise FieldNotFound,
59
- "You specified #{column} as a field, but neither #{fields.join(" or ")} exist. " \
59
+ "You specified #{column} as a field, but none of the expected field names exist: #{fields.join(", ")}. " \
60
60
  "Either manually specify the field name with :field, or check to make sure you have " \
61
61
  "provided a correct field name."
62
62
  end
@@ -64,7 +64,14 @@ class SalesforceAdapter
64
64
 
65
65
  def query(string)
66
66
  with_reconnection do
67
- driver.query(:queryString => string).result
67
+ res = driver.query(:queryString => string).result
68
+ records = res.records
69
+ while !res.done
70
+ res = driver.queryMore(:queryLocator => res.queryLocator).result
71
+ records += res.records
72
+ end
73
+ res.records = records
74
+ res
68
75
  end
69
76
  rescue SOAP::FaultError => e
70
77
  raise QueryError.new(e.message, [])
@@ -97,10 +104,10 @@ class SalesforceAdapter
97
104
  begin
98
105
  result = driver.login(:username => @username, :password => @password).result
99
106
  rescue SOAP::FaultError => error
100
- if error.faultcode.to_s =~ /INVALID_LOGIN/
101
- raise LoginFailed, error.faultstring.to_s
102
- else
103
- raise error
107
+ case error.faultcode.text
108
+ when "sf:INVALID_LOGIN" then raise LoginFailed, error.faultstring.text
109
+ # ...
110
+ else raise error
104
111
  end
105
112
  end
106
113
  driver.endpoint_url = result.serverUrl
@@ -127,17 +134,16 @@ class SalesforceAdapter
127
134
  yield
128
135
  rescue SOAP::FaultError => error
129
136
  retry_count ||= 0
130
- if error.faultcode.to_s =~ /INVALID_SESSION_ID/
137
+
138
+ case error.faultcode.text
139
+ when "sf:INVALID_SESSION_ID" then
131
140
  DataMapper.logger.debug "Got a invalid session id; reconnecting" if DataMapper.logger
132
141
  @driver = nil
133
142
  login
134
143
  retry_count += 1
135
144
  retry unless retry_count > 5
136
- else
137
- raise error
145
+ else raise error
138
146
  end
139
-
140
- raise SessionTimeout, "The Salesforce session could not be established"
141
147
  end
142
148
  end
143
149
  end
@@ -3,15 +3,16 @@ module SalesforceAdapter::Property
3
3
  FALSE = 0
4
4
  TRUE = 1
5
5
 
6
- def self.dump(value, property)
7
- case value
8
- when nil, false then FALSE
9
- else TRUE
10
- end
6
+ def load(value)
7
+ [true, 1, '1', 'true', 'TRUE'].include?(value) ? true : false
11
8
  end
12
9
 
13
- def self.load(value, property)
14
- [true, 1, '1', 'true', 'TRUE', TRUE].include?(value)
10
+ def typecast(value)
11
+ [true, 1, '1', 'true', 'TRUE'].include?(value) ? TRUE : FALSE
12
+ end
13
+
14
+ def custom?
15
+ true
15
16
  end
16
17
  end
17
18
  end
@@ -3,10 +3,10 @@ module SalesforceAdapter::Property
3
3
  accept_options :serial
4
4
  serial true
5
5
 
6
- length 15
6
+ length 18
7
7
 
8
- def self.dump(value, property)
9
- value[0..14] unless value.blank?
8
+ def dump(value)
9
+ value[0..17] unless value.blank?
10
10
  end
11
11
  end
12
12
  end
@@ -83,7 +83,7 @@ class SalesforceAdapter
83
83
  end
84
84
 
85
85
  def quote_value(value, property)
86
- if property.type == Property::Boolean
86
+ if property.kind_of? Property::Boolean
87
87
  # True on salesforce needs to be TRUE/FALSE for WHERE clauses but not for inserts.
88
88
  return value == Property::Boolean::TRUE ? 'TRUE' : 'FALSE'
89
89
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm-salesforce-adapter
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 3
10
- version: 1.0.3
9
+ - 5
10
+ version: 1.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jordan Ritter
@@ -18,8 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2011-07-12 00:00:00 -07:00
22
- default_executable:
21
+ date: 2012-04-13 00:00:00 Z
23
22
  dependencies:
24
23
  - !ruby/object:Gem::Dependency
25
24
  name: httpclient
@@ -60,7 +59,7 @@ dependencies:
60
59
  requirement: &id003 !ruby/object:Gem::Requirement
61
60
  none: false
62
61
  requirements:
63
- - - ~>
62
+ - - ">="
64
63
  - !ruby/object:Gem::Version
65
64
  hash: 19
66
65
  segments:
@@ -68,6 +67,14 @@ dependencies:
68
67
  - 1
69
68
  - 0
70
69
  version: 1.1.0
70
+ - - <
71
+ - !ruby/object:Gem::Version
72
+ hash: 27
73
+ segments:
74
+ - 1
75
+ - 3
76
+ - 0
77
+ version: 1.3.0
71
78
  type: :runtime
72
79
  version_requirements: *id003
73
80
  - !ruby/object:Gem::Dependency
@@ -76,7 +83,7 @@ dependencies:
76
83
  requirement: &id004 !ruby/object:Gem::Requirement
77
84
  none: false
78
85
  requirements:
79
- - - ~>
86
+ - - ">="
80
87
  - !ruby/object:Gem::Version
81
88
  hash: 19
82
89
  segments:
@@ -84,6 +91,14 @@ dependencies:
84
91
  - 1
85
92
  - 0
86
93
  version: 1.1.0
94
+ - - <
95
+ - !ruby/object:Gem::Version
96
+ hash: 27
97
+ segments:
98
+ - 1
99
+ - 3
100
+ - 0
101
+ version: 1.3.0
87
102
  type: :runtime
88
103
  version_requirements: *id004
89
104
  - !ruby/object:Gem::Dependency
@@ -92,7 +107,7 @@ dependencies:
92
107
  requirement: &id005 !ruby/object:Gem::Requirement
93
108
  none: false
94
109
  requirements:
95
- - - ~>
110
+ - - ">="
96
111
  - !ruby/object:Gem::Version
97
112
  hash: 19
98
113
  segments:
@@ -100,6 +115,14 @@ dependencies:
100
115
  - 1
101
116
  - 0
102
117
  version: 1.1.0
118
+ - - <
119
+ - !ruby/object:Gem::Version
120
+ hash: 27
121
+ segments:
122
+ - 1
123
+ - 3
124
+ - 0
125
+ version: 1.3.0
103
126
  type: :runtime
104
127
  version_requirements: *id005
105
128
  - !ruby/object:Gem::Dependency
@@ -118,8 +141,8 @@ dependencies:
118
141
  version: 1.5.8
119
142
  type: :runtime
120
143
  version_requirements: *id006
121
- description: A DataMapper 1.1.x adapter to the Salesforce API
122
- email: jpr5@cloudcrowd.com
144
+ description: A DataMapper 1.x adapter to the Salesforce API
145
+ email: jpr5@serv.io
123
146
  executables: []
124
147
 
125
148
  extensions: []
@@ -142,7 +165,6 @@ files:
142
165
  - lib/dm-salesforce-adapter/sql.rb
143
166
  - lib/dm-salesforce-adapter/version.rb
144
167
  - lib/dm-salesforce-adapter.rb
145
- has_rdoc: true
146
168
  homepage: http://github.com/cloudcrowd/dm-salesforce-adapter
147
169
  licenses: []
148
170
 
@@ -172,9 +194,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
194
  requirements: []
173
195
 
174
196
  rubyforge_project:
175
- rubygems_version: 1.6.2
197
+ rubygems_version: 1.8.10
176
198
  signing_key:
177
199
  specification_version: 3
178
- summary: A DataMapper 1.1.x adapter to the Salesforce API
200
+ summary: A DataMapper 1.x adapter to the Salesforce API
179
201
  test_files: []
180
202