activerecord-jdbcas400-adapter 1.3.6.1 → 1.3.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3fb163c69c0eeb68c3858a28d84c9597efb2968c
4
- data.tar.gz: 2f667ccd270bba1fcb3f1604060eb8e111f36116
3
+ metadata.gz: 6199e97dfd1e313557b52d4e660110f7700fa4b4
4
+ data.tar.gz: 886e6efe31d46508b42218613f0635233138a27e
5
5
  SHA512:
6
- metadata.gz: c3f77a9c49b012e0323904c2d1f99d4a44514740587c6df1d51f1c812208713679b274fe3a139894eee5ad3dc1ed1cb38f9e8a1d936b4cc9c3d5a5c4550cd726
7
- data.tar.gz: af3d5a03ce0583ed3327a81f155301048aa812de34c1e45605a5f4913922d6beb2bc897f80b4adfe4f52976bb5b46daa02ac4b720106d70a7c2298aa842c4787
6
+ metadata.gz: 4b703180d160b4b3672010cd040befe3853d2812c6cc9d0af9e135a8b5a84480e0e275171efc6025fafcdda951bb0a5d86c990c41d72f91aaef891b2fd226ca8
7
+ data.tar.gz: 74ba90d96b88d3b7a421ecb0dc4dc3ab4debdc9dc33a84bc0fcd3954870068c13023e55d3a0e11925c7edc228f829e9acf40f3f01e8d18bbeb32771dafd791d6
data/lib/arjdbc/as400.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'arjdbc'
2
2
  require 'arjdbc/db2/adapter'
3
3
  require 'arjdbc/as400/connection_methods'
4
+ require 'arjdbc/as400/system'
4
5
  require 'arjdbc/as400/adapter'
5
6
 
6
7
  # Register AS400 to database tasks
@@ -1,8 +1,7 @@
1
- require 'arjdbc/db2/adapter'
2
-
3
1
  module ArJdbc
4
2
  module AS400
5
3
  include DB2
4
+ include System
6
5
 
7
6
  # @private
8
7
  def self.extended(adapter); DB2.extended(adapter); end
@@ -31,15 +30,28 @@ module ArJdbc
31
30
  def self.emulate_booleans=(emulate); DB2.emulate_booleans = emulate; end
32
31
 
33
32
  ADAPTER_NAME = 'AS400'.freeze
33
+ DRIVER_NAME = 'com.ibm.as400.access.AS400JDBCDriver'.freeze
34
+ NATIVE_DRIVER_NAME = 'com.ibm.db2.jdbc.app.DB2Driver'.freeze
34
35
 
35
36
  def adapter_name
36
37
  ADAPTER_NAME
37
38
  end
38
39
 
40
+ # Set schema is it specified
41
+ def configure_connection
42
+ set_schema(config[:schema]) if config[:schema]
43
+ change_current_library(config[:current_library]) if config[:current_library]
44
+ end
45
+
46
+ # Do not return *LIBL as schema
47
+ def schema
48
+ db2_schema
49
+ end
50
+
39
51
  # Return only migrated tables
40
52
  def tables
41
- if config[:current_library]
42
- @connection.tables(nil, config[:current_library])
53
+ if current_library
54
+ @connection.tables(nil, current_library)
43
55
  else
44
56
  @connection.tables(nil, schema)
45
57
  end
@@ -47,7 +59,7 @@ module ArJdbc
47
59
 
48
60
  # Prevent migration in QGPL
49
61
  def supports_migrations?
50
- !(system_naming? && config[:current_library].nil?)
62
+ !(system_naming? && !current_library?)
51
63
  end
52
64
 
53
65
  # @override
@@ -70,37 +82,6 @@ module ArJdbc
70
82
  execute_and_auto_confirm(sql, name)
71
83
  end
72
84
 
73
- # holy moly batman! all this to tell AS400 "yes i am sure"
74
- def execute_and_auto_confirm(sql, name = nil)
75
-
76
- begin
77
- execute_system_command('CHGJOB INQMSGRPY(*SYSRPYL)')
78
- execute_system_command("ADDRPYLE SEQNBR(9876) MSGID(CPA32B2) RPY('I')")
79
- rescue Exception => e
80
- raise unauthorized_error_message("CHGJOB INQMSGRPY(*SYSRPYL) and ADDRPYLE SEQNBR(9876) MSGID(CPA32B2) RPY('I')", e)
81
- end
82
-
83
- begin
84
- result = execute(sql, name)
85
- rescue Exception
86
- raise
87
- else
88
- # Return if all work fine
89
- result
90
- ensure
91
-
92
- # Ensure default configuration restoration
93
- begin
94
- execute_system_command('CHGJOB INQMSGRPY(*DFT)')
95
- execute_system_command('RMVRPYLE SEQNBR(9876)')
96
- rescue Exception => e
97
- raise unauthorized_error_message('CHGJOB INQMSGRPY(*DFT) and RMVRPYLE SEQNBR(9876)', e)
98
- end
99
-
100
- end
101
- end
102
- private :execute_and_auto_confirm
103
-
104
85
  # Disable all schemas browsing
105
86
  def table_exists?(name)
106
87
  return false unless name
@@ -111,39 +92,6 @@ module ArJdbc
111
92
  @connection.indexes(table_name, name, schema)
112
93
  end
113
94
 
114
- DRIVER_NAME = 'com.ibm.as400.access.AS400JDBCDriver'.freeze
115
- NATIVE_DRIVER_NAME = 'com.ibm.db2.jdbc.app.DB2Driver'.freeze
116
-
117
- # Set schema is it specified
118
- def configure_connection
119
- set_schema(config[:schema]) if config[:schema]
120
- change_current_library(config[:current_library]) if config[:current_library]
121
- end
122
-
123
- # Do not return *LIBL as schema
124
- def schema
125
- db2_schema
126
- end
127
-
128
- # Change current library
129
- def change_current_library(current_library)
130
- # *CRTDFT is the nil equivalent for current library
131
- current_library ||= '*CRTDFT'
132
- execute_system_command("CHGCURLIB CURLIB(#{current_library})")
133
- end
134
-
135
- # Change libraries
136
- def change_libraries(libraries)
137
- libraries = libraries.nil? || libraries.size < 1 ? '*NONE' :libraries.join(' ')
138
- execute_system_command("CHGLIBL LIBL(#{libraries})")
139
- end
140
-
141
- def execute_system_command(command)
142
- length = command.length
143
- command = quote(command)
144
- execute("CALL qsys.qcmdexc(#{command}, CAST(#{length} AS DECIMAL(15, 5)))")
145
- end
146
-
147
95
  # Disable transactions when they are not supported
148
96
  def begin_db_transaction
149
97
  super unless config[:transaction_isolation] == 'none'
@@ -189,6 +137,36 @@ module ArJdbc
189
137
  end
190
138
  end
191
139
 
140
+ # Holy moly batman! all this to tell AS400 "yes i am sure"
141
+ def execute_and_auto_confirm(sql, name = nil)
142
+
143
+ begin
144
+ execute_system_command('CHGJOB INQMSGRPY(*SYSRPYL)')
145
+ execute_system_command("ADDRPYLE SEQNBR(9876) MSGID(CPA32B2) RPY('I')")
146
+ rescue Exception => e
147
+ raise unauthorized_error_message("CHGJOB INQMSGRPY(*SYSRPYL) and ADDRPYLE SEQNBR(9876) MSGID(CPA32B2) RPY('I')", e)
148
+ end
149
+
150
+ begin
151
+ result = execute(sql, name)
152
+ rescue Exception
153
+ raise
154
+ else
155
+ # Return if all work fine
156
+ result
157
+ ensure
158
+
159
+ # Ensure default configuration restoration
160
+ begin
161
+ execute_system_command('CHGJOB INQMSGRPY(*DFT)')
162
+ execute_system_command('RMVRPYLE SEQNBR(9876)')
163
+ rescue Exception => e
164
+ raise unauthorized_error_message('CHGJOB INQMSGRPY(*DFT) and RMVRPYLE SEQNBR(9876)', e)
165
+ end
166
+
167
+ end
168
+ end
169
+
192
170
  def unauthorized_error_message(command, exception)
193
171
  "Could not call #{command}.\nDo you have authority to do this?\n\n#{exception.inspect}"
194
172
  end
@@ -0,0 +1,38 @@
1
+ module ArJdbc
2
+ module AS400
3
+ module System
4
+
5
+ # Execute system command with QSYS.QCMDEXC
6
+ def execute_system_command(command)
7
+ length = command.length
8
+ command = quote(command)
9
+ execute("CALL QSYS.QCMDEXC(#{command}, CAST(#{length} AS DECIMAL(15, 5)))")
10
+ end
11
+
12
+ # Change current library
13
+ def change_current_library(current_library)
14
+ @current_library = current_library
15
+ # *CRTDFT is the nil equivalent for current library
16
+ current_library ||= '*CRTDFT'
17
+ execute_system_command("CHGCURLIB CURLIB(#{current_library})")
18
+ end
19
+
20
+ # Change libraries
21
+ def change_libraries(libraries)
22
+ libraries = libraries.nil? || libraries.size < 1 ? '*NONE' :libraries.join(' ')
23
+ execute_system_command("CHGLIBL LIBL(#{libraries})")
24
+ end
25
+
26
+ # Returns true if current library is configured
27
+ def current_library?
28
+ !current_library.nil?
29
+ end
30
+
31
+ # Returns the name current library
32
+ def current_library
33
+ @current_library
34
+ end
35
+
36
+ end
37
+ end
38
+ end
data/test/test_adapter.rb CHANGED
@@ -1,6 +1,27 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class TestAdapter < Test::Unit::TestCase
4
+
5
+ def test_schema
6
+ assert_equal(connection.schema, config[:schema])
7
+ assert_equal(system_connection.schema, '*LIBL')
8
+ end
9
+
10
+ def test_system_naming?
11
+ assert_false(connection.instance_eval {system_naming?})
12
+ assert_true(system_connection.instance_eval {system_naming?})
13
+ end
14
+
15
+ def test_supports_migrations?
16
+ assert_true(connection.supports_migrations?)
17
+
18
+ system_connection.change_current_library('QGPL')
19
+ assert_true(system_connection.supports_migrations?)
20
+
21
+ system_connection.change_current_library(nil)
22
+ assert_false(system_connection.supports_migrations?)
23
+ end
24
+
4
25
  def test_prefetch_primary_key?
5
26
  begin
6
27
  connection.execute('CREATE TABLE test_table (test_column INTEGER)')
@@ -30,23 +51,4 @@ class TestAdapter < Test::Unit::TestCase
30
51
  end
31
52
  end
32
53
 
33
- def test_execute_system_command
34
- assert_nothing_raised do
35
- connection.execute_system_command('DSPJOBLOG')
36
- end
37
- end
38
-
39
- def test_change_current_library
40
- assert_nothing_raised do
41
- connection.change_current_library('QGPL')
42
- connection.change_current_library(nil)
43
- end
44
- end
45
-
46
- def test_change_libraries
47
- assert_nothing_raised do
48
- connection.change_libraries(%w(QGPL QTEMP))
49
- connection.change_libraries(nil)
50
- end
51
- end
52
54
  end
data/test/test_helper.rb CHANGED
@@ -5,8 +5,13 @@ require 'activerecord-jdbc-adapter'
5
5
 
6
6
  class Test::Unit::TestCase
7
7
  def config
8
- @config ||= YAML::load(File.open('config.yml'))
9
- @config.symbolize_keys
8
+ @config ||= {
9
+ host: ENV['AS400_HOST'],
10
+ username: ENV['AS400_USERNAME'],
11
+ password: ENV['AS400_PASSWORD'],
12
+ schema: ENV['AS400_SCHEMA'],
13
+ libraries: ENV['AS400_LIBRARIES']
14
+ }
10
15
  end
11
16
 
12
17
  def data_source_connection
@@ -0,0 +1,36 @@
1
+ require 'test_helper'
2
+
3
+ class TestAdapter < Test::Unit::TestCase
4
+ def test_execute_system_command
5
+ assert_nothing_raised do
6
+ connection.execute_system_command('DSPJOBLOG')
7
+ end
8
+ end
9
+
10
+ def test_change_current_library
11
+ connection = system_connection
12
+ assert_nothing_raised do
13
+ connection.change_current_library('QGPL')
14
+ connection.change_current_library(nil)
15
+ end
16
+ end
17
+
18
+ def test_current_library
19
+ connection = system_connection
20
+ connection.change_current_library('QSYS')
21
+ assert_equal(connection.current_library, 'QSYS')
22
+ assert_true(connection.current_library?)
23
+
24
+ connection.change_current_library(nil)
25
+ assert_nil(connection.current_library)
26
+ assert_false(connection.current_library?)
27
+ end
28
+
29
+ def test_change_libraries
30
+ connection = system_connection
31
+ assert_nothing_raised do
32
+ connection.change_libraries(%w(QGPL QTEMP))
33
+ connection.change_libraries(nil)
34
+ end
35
+ end
36
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-jdbcas400-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.6.1
4
+ version: 1.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sieger, Ola Bini, Pierrick Rouxel and JRuby contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-10 00:00:00.000000000 Z
11
+ date: 2014-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord-jdbc-adapter
@@ -16,12 +16,12 @@ dependencies:
16
16
  requirements:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3.5
19
+ version: 1.3.7
20
20
  requirement: !ruby/object:Gem::Requirement
21
21
  requirements:
22
22
  - - '>='
23
23
  - !ruby/object:Gem::Version
24
- version: 1.3.5
24
+ version: 1.3.7
25
25
  prerelease: false
26
26
  type: :runtime
27
27
  - !ruby/object:Gem::Dependency
@@ -95,11 +95,11 @@ files:
95
95
  - lib/arjdbc/discover.rb
96
96
  - lib/arjdbc/as400/adapter.rb
97
97
  - lib/arjdbc/as400/connection_methods.rb
98
- - test/config.yml
98
+ - lib/arjdbc/as400/system.rb
99
99
  - test/test_adapter.rb
100
- - test/test_connection.rb
101
100
  - test/test_database_tasks.rb
102
101
  - test/test_helper.rb
102
+ - test/test_system.rb
103
103
  homepage: https://github.com/pierrickrouxel/activerecord-jdbcas400-adapter
104
104
  licenses:
105
105
  - ''
@@ -125,8 +125,7 @@ signing_key:
125
125
  specification_version: 4
126
126
  summary: AS/400 JDBC adapter for JRuby on Rails.
127
127
  test_files:
128
- - test/config.yml
129
128
  - test/test_adapter.rb
130
- - test/test_connection.rb
131
129
  - test/test_database_tasks.rb
132
130
  - test/test_helper.rb
131
+ - test/test_system.rb
data/test/config.yml DELETED
@@ -1,5 +0,0 @@
1
- host: 'inc400'
2
- username: 'pr'
3
- password: 'princ189'
4
- schema: 'ARJDBC_TEST'
5
- libraries: 'QTEMP,ARJDBC_TEST'
@@ -1,25 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestConnection < Test::Unit::TestCase
4
- def test_system_naming
5
- assert_false(connection.instance_eval {system_naming?})
6
- assert_true(system_connection.instance_eval {system_naming?})
7
- end
8
-
9
- def test_schema
10
- assert_equal(connection.schema, config[:schema])
11
-
12
- assert_equal(system_connection.schema, '*LIBL')
13
- end
14
-
15
- def test_migration_support
16
- assert_true(connection.supports_migrations?)
17
-
18
- connection = system_connection
19
- connection.config[:current_library] = 'QTEMP'
20
- assert_true(connection.supports_migrations?)
21
-
22
- connection.config[:current_library] = nil
23
- assert_false(connection.supports_migrations?)
24
- end
25
- end