Class: WinExcelDb::DataRow

Inherits:
Object
  • Object
show all
Defined in:
lib/win_excel_db/data_row.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(row_sheet, row_number, header) ⇒ DataRow

Returns a new instance of DataRow.



10
11
12
13
14
15
16
# File 'lib/win_excel_db/data_row.rb', line 10

def initialize(row_sheet, row_number, header)
  @row_sheet=row_sheet
  @row_number=row_number
  @name=@row_sheet.name
  @header=header
  @row_value_array=Array.new(WinExcelDb::MAX_COLUMNS)
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



8
9
10
# File 'lib/win_excel_db/data_row.rb', line 8

def name
  @name
end

#row_numberObject

Returns the value of attribute row_number.



7
8
9
# File 'lib/win_excel_db/data_row.rb', line 7

def row_number
  @row_number
end

#row_sheetObject

Returns the value of attribute row_sheet.



7
8
9
# File 'lib/win_excel_db/data_row.rb', line 7

def row_sheet
  @row_sheet
end

#row_value_arrayObject

Returns the value of attribute row_value_array.



7
8
9
# File 'lib/win_excel_db/data_row.rb', line 7

def row_value_array
  @row_value_array
end

Instance Method Details

#deleteObject



79
80
81
82
83
84
# File 'lib/win_excel_db/data_row.rb', line 79

def delete
  # delete only if datarow is still known by row_sheet
  if @row_sheet.data_rows[@row_number-2]==self then
    @row_sheet.delete_row(@row_number)
  end
end

#index=(index) ⇒ Object



75
76
77
# File 'lib/win_excel_db/data_row.rb', line 75

def index=(index)
  @row_number=index
end

#read(field) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/win_excel_db/data_row.rb', line 42

def read(field)
  if @row_sheet.data_rows[@row_number-2] == self then
    if read_row_buffer(field) then
      return read_row_buffer(field)
    else
      write_row_buffer(field, @row_sheet.read(@row_number, field))
    end
  else
    raise "Read error! Trying to read #{@name}.#{field} but Data_Row has been deleted in Row_Sheet already"
  end
end

#read_formula(field) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
# File 'lib/win_excel_db/data_row.rb', line 63

def read_formula(field)
  if @row_sheet.data_rows[@row_number-2] == self then
    if read_row_buffer(field) then
      return read_row_buffer(field)
    else
      write_row_buffer(field, @row_sheet.read_formula(@row_number, field))
    end
  else
    raise "Read error! Trying to read #{@name}.#{field} but Data_Row has been deleted in Row_Sheet already"
  end
end

#read_row_buffer(field) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/win_excel_db/data_row.rb', line 18

def read_row_buffer(field)
  if @header[field] then
    position=@header[field] - 1
    @row_value_array[position]
  else
    raise "Trying to read buffered value of not existing Row: #{field} in Worksheet: #{name}"
  end
end

#write(field, value) ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/win_excel_db/data_row.rb', line 33

def write(field, value)
  if @row_sheet.data_rows[@row_number-2] == self then
    write_row_buffer(field,value)
    @row_sheet.write(@row_number, field, value)
  else
    raise "Write error! Trying to write #{@name}.#{field} but Data_Row has been deleted in Row_Sheet already"
  end
end

#write_formula(field, value) ⇒ Object



54
55
56
57
58
59
60
61
# File 'lib/win_excel_db/data_row.rb', line 54

def write_formula(field, value)
  if @row_sheet.data_rows[@row_number-2] == self then
    write_row_buffer(field,value)
    @row_sheet.write_formula(@row_number, field, value)
  else
    raise "Write error! Trying to write #{@name}.#{field} but Data_Row has been deleted in Row_Sheet already"
  end
end

#write_row_buffer(field, value) ⇒ Object



27
28
29
30
31
# File 'lib/win_excel_db/data_row.rb', line 27

def write_row_buffer(field, value)
  raise "Write error! Column #{field} not found in Worksheet #{@name} " if !@header[field]
  position=@header[field] - 1
  @row_value_array[position]=value
end