beezwax 0.3.0 → 0.4.0
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.
- data/VERSION +1 -1
- data/lib/btrieve/btrieve_const.rb +1 -1
- data/lib/btrieve/btrieve_core.rb +0 -4
- data/lib/btrieve/btrieve_record.rb +9 -8
- data/lib/btrieve/btrieve_schema.rb +1 -1
- data/lib/btrieve/btrieve_session.rb +1 -2
- data/lib/btrieve/btrieve_table.rb +21 -18
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
@@ -1,5 +1,4 @@
|
|
1
1
|
module BtrCodes
|
2
|
-
PK_KEYS=[:"kid - date",:"kid - time",:"kid - user",:"kid - mult",:"kid - comm"]
|
3
2
|
OK = 0
|
4
3
|
OPEN = 0
|
5
4
|
CLOSE = 1
|
@@ -9,6 +8,7 @@ module BtrCodes
|
|
9
8
|
GET_EQUAL = 5
|
10
9
|
GET_NEXT = 6
|
11
10
|
GET_GREATER_THAN_OR_EQUAL = 9
|
11
|
+
GET_LESS_THAN_OR_EQUAL = 11
|
12
12
|
SET_DIRECTORY = 17
|
13
13
|
BEGIN_TRANSACTION = 19
|
14
14
|
END_TRANSACTION = 20
|
data/lib/btrieve/btrieve_core.rb
CHANGED
@@ -16,8 +16,6 @@ module Btrieve
|
|
16
16
|
attach_function :BTRCALLID, [:int, :pointer, :pointer, :pointer, :pointer, :uchar, :uchar, :pointer], :int
|
17
17
|
|
18
18
|
def btr_op(session, ops, pos_buffer, data_buffer, key_buffer, key_number, valid_return_codes=[0])
|
19
|
-
#result_code=nil
|
20
|
-
#dir_voodoo(session) do
|
21
19
|
data_length = [data_buffer.size].pack('L')
|
22
20
|
key_length = key_buffer.size
|
23
21
|
result_code = BTRCALLID(ops, pos_buffer, data_buffer, data_length, key_buffer, key_length, key_number, session.client_id)
|
@@ -25,7 +23,6 @@ module Btrieve
|
|
25
23
|
p "ops=#{ops} data_buffer.length=#{data_buffer.length} key_buffer=#{key_buffer}, key_buffer.length=#{key_buffer.length}, key_number=#{key_number}, session.client_id=#{session.client_id}"
|
26
24
|
raise Exception.new("PSQL Exception Code #{result_code} - #{EXCEPTION_MESSAGES[result_code]}")
|
27
25
|
end
|
28
|
-
#end
|
29
26
|
result_code
|
30
27
|
end
|
31
28
|
|
@@ -53,6 +50,5 @@ end
|
|
53
50
|
require_relative 'btrieve_session'
|
54
51
|
require_relative 'btrieve_table'
|
55
52
|
require_relative 'btrieve_schema'
|
56
|
-
require_relative 'btrieve_map'
|
57
53
|
require_relative 'btrieve_record'
|
58
54
|
require_relative 'btrieve_model'
|
@@ -82,15 +82,16 @@ class BtrieveRecord
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def get_all_attributes()
|
85
|
-
|
85
|
+
cols=@btrieve_table.schema[:columns].keys.sort
|
86
|
+
get_attributes(cols)
|
86
87
|
end
|
87
88
|
|
88
89
|
def primary_key()
|
89
|
-
get_composite_key(
|
90
|
+
get_composite_key(@btrieve_table.primary_key)
|
90
91
|
end
|
91
92
|
|
92
93
|
def foreign_key(prefix)
|
93
|
-
keys
|
94
|
+
keys=@btrieve_table.primary_key.map{|key|:"#{prefix} #{key.to_s}"}
|
94
95
|
get_composite_key(keys)
|
95
96
|
end
|
96
97
|
|
@@ -129,7 +130,7 @@ class BtrieveRecord
|
|
129
130
|
packer = "#{datatype}#{sizeof}"
|
130
131
|
array = [value]
|
131
132
|
packed_value = array.pack(packer)
|
132
|
-
range = (offset..offset+
|
133
|
+
range = (offset..offset+packed_value.size-1)
|
133
134
|
@data_buffer[range] = packed_value
|
134
135
|
end
|
135
136
|
|
@@ -137,16 +138,16 @@ class BtrieveRecord
|
|
137
138
|
@btrieve_table.schema[:columns].keys.inject('') { |pretty_print, key| pretty_print = "#{pretty_print} #{key}=>#{self[key]}"; pretty_print }
|
138
139
|
end
|
139
140
|
|
141
|
+
def version()
|
142
|
+
Digest::MD5.hexdigest(@data_buffer)
|
143
|
+
end
|
144
|
+
|
140
145
|
def method_missing(symbol)
|
141
146
|
return get_unique_reference(symbol) if(@btrieve_table.schema[:one_to_one][symbol])
|
142
147
|
return get_multiple_references(symbol) if(@btrieve_table.schema[:one_to_many][symbol])
|
143
148
|
super(symbol)
|
144
149
|
end
|
145
150
|
|
146
|
-
def version()
|
147
|
-
Digest::MD5.hexdigest(@data_buffer)
|
148
|
-
end
|
149
|
-
|
150
151
|
private
|
151
152
|
|
152
153
|
def dereference(association_group, association_name, &block)
|
@@ -30,7 +30,7 @@ class BtrieveSchema
|
|
30
30
|
offset = xfield[:'xe$offset']
|
31
31
|
size = xfield[:'xe$size']
|
32
32
|
datatype = xfield[:'xe$datatype']
|
33
|
-
datatype = (name == 'kid - mult') ? 14 : datatype # BS line of code...
|
33
|
+
datatype = (name == 'kid - mult') ? 14 : datatype # Absolute BS line of code... Needed for CTA-FOS
|
34
34
|
unpacker = BtrieveSchema.unpacker(offset, datatype, size)
|
35
35
|
schema[:columns][name.to_sym] = {:unpacker=>unpacker, :id=>id, :offset=>offset, :datatype=>datatype, :size=>size}
|
36
36
|
schema[:record_size] += size
|
@@ -28,8 +28,7 @@ class BtrieveSession
|
|
28
28
|
btr_op(self, END_TRANSACTION, NULL_BUFFER, NULL_BUFFER, NULL_BUFFER, NULL_KEY)
|
29
29
|
end
|
30
30
|
|
31
|
-
def get_table(
|
32
|
-
tablename=BtrieveTable.url_to_tablename(url_tablename)
|
31
|
+
def get_table(tablename)
|
33
32
|
table=@table_cache[tablename]||=BtrieveTable.new(tablename.to_sym, self)
|
34
33
|
[table,table.version]
|
35
34
|
end
|
@@ -2,7 +2,8 @@ require 'digest/md5'
|
|
2
2
|
|
3
3
|
class BtrieveTable
|
4
4
|
include Btrieve
|
5
|
-
attr_reader :tablename, :session, :pos_buffer, :schema
|
5
|
+
attr_reader :tablename, :session, :pos_buffer, :schema
|
6
|
+
attr_accessor :primary_key
|
6
7
|
|
7
8
|
def initialize(tablename, session, schema=nil)
|
8
9
|
@tablename = tablename
|
@@ -57,13 +58,15 @@ class BtrieveTable
|
|
57
58
|
result = []
|
58
59
|
batch() do
|
59
60
|
btr_record = BtrieveRecord.new(self)
|
60
|
-
btr_op(@session, GET_GREATER_THAN_OR_EQUAL, @pos_buffer, btr_record.data_buffer, key_buffer, index)
|
61
|
-
|
62
|
-
while(true)
|
63
|
-
btr_record = BtrieveRecord.new(self)
|
64
|
-
op_result = btr_op(@session, GET_NEXT, @pos_buffer, btr_record.data_buffer, key_buffer, index_number, [OK, EOF, 21])
|
65
|
-
break unless btr_record.get_attributes(absolute_match_keys)==absolute_match and op_result!=EOF and op_result!=21
|
61
|
+
ops_result = btr_op(@session, GET_GREATER_THAN_OR_EQUAL, @pos_buffer, btr_record.data_buffer, key_buffer, index, [OK, EOF])
|
62
|
+
if OK==ops_result
|
66
63
|
result << btr_record
|
64
|
+
while(true)
|
65
|
+
btr_record = BtrieveRecord.new(self)
|
66
|
+
op_result = btr_op(@session, GET_NEXT, @pos_buffer, btr_record.data_buffer, key_buffer, index_number, [OK, EOF, 21])
|
67
|
+
break unless btr_record.get_attributes(absolute_match_keys)==absolute_match and op_result!=EOF and op_result!=21
|
68
|
+
result << btr_record
|
69
|
+
end
|
67
70
|
end
|
68
71
|
end
|
69
72
|
result
|
@@ -89,21 +92,21 @@ class BtrieveTable
|
|
89
92
|
end
|
90
93
|
|
91
94
|
def version()
|
92
|
-
Digest::MD5.hexdigest(BtrieveSchema.sort(schema[:columns]).inject([]){|array,column|array<<BtrieveSchema.readable_type(column);array}.to_s)
|
95
|
+
Digest::MD5.hexdigest(BtrieveSchema.sort(schema[:columns]).inject([]){|array,column|array << BtrieveSchema.readable_type(column);array}.to_s)
|
93
96
|
end
|
94
97
|
|
95
|
-
def self.primary_key_match(pk)
|
96
|
-
|
97
|
-
|
98
|
-
end
|
98
|
+
#def self.primary_key_match(pk)
|
99
|
+
# vals=pk.split('.')
|
100
|
+
# {PK_KEYS[0]=>vals[0].to_i,PK_KEYS[1]=>vals[1].to_i,PK_KEYS[2]=>vals[2],PK_KEYS[3]=>vals[3].to_i,PK_KEYS[4]=>vals[4].to_i}
|
101
|
+
#end
|
99
102
|
|
100
|
-
def self.tablename_to_url(tablename)
|
101
|
-
|
102
|
-
end
|
103
|
+
#def self.tablename_to_url(tablename)
|
104
|
+
# tablename.gsub(' & ','.and.').gsub('a/c ', 'ac.').gsub('es - o','es.o').gsub(' ','.')
|
105
|
+
#end
|
103
106
|
|
104
|
-
def self.url_to_tablename(url_tablename)
|
105
|
-
|
106
|
-
end
|
107
|
+
#def self.url_to_tablename(url_tablename)
|
108
|
+
# url_tablename.gsub('.and.', ' & ').gsub('ac.', 'a/c ').gsub('es.o','es - o').gsub('.',' ')
|
109
|
+
#end
|
107
110
|
|
108
111
|
private
|
109
112
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beezwax
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 4
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Patrick Lardin
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-10-03 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|