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