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 CHANGED
@@ -1 +1 @@
1
- 0.3.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
@@ -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
- get_attributes(self.btrieve_table.schema[:columns].keys.sort.inject([]){|array,column|array<<column;array})
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(PK_KEYS)
90
+ get_composite_key(@btrieve_table.primary_key)
90
91
  end
91
92
 
92
93
  def foreign_key(prefix)
93
- keys=PK_KEYS.map{|key|:"#{prefix} #{key.to_s}"}
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+sizeof-1)
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(url_tablename)
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
- result << btr_record
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
- vals=pk.split('.')
97
- {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}
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
- tablename.gsub(' & ','.and.').gsub('a/c ', 'ac.').gsub('es - o','es.o').gsub(' ','.')
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
- url_tablename.gsub('.and.', ' & ').gsub('ac.', 'a/c ').gsub('es.o','es - o').gsub('.',' ')
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: 19
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 0.3.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-08-29 00:00:00 -07:00
18
+ date: 2010-10-03 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency