dm-salesforce-adapter 1.0.3 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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