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 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