Class: Refi::SpreadsheetDbCache

Inherits:
SpreadsheetDb
  • Object
show all
Defined in:
lib/spreadsheet_db-cache_refi.rb

Constant Summary collapse

@@ext1_create_tbls_strs =
{
  sheet_cached: %q(
    create table sheet_cached(
      sheet_id integer, 
      cached integer,

      primary key(sheet_id), 
      foreign key(sheet_id) references sheet(id)
    );
  )
}.inject({}){|memo,(k,v)| memo[k] = v.strip_a_lot ; memo}.merge(@@std_create_tbls_strs)
@@ext1_stmts_strs =
{
  sheet_cached_set_sheet_cached: "insert or replace into sheet_cached(sheet_id,cached) values(?,?);",
  sheet_cached_get_cached_by_sheet: "select cached from sheet_cached where sheet_id=?;",
  sheet_cached_get_all: "select * from sheet_cached;",
}.merge(@@std_stmts_strs)
@@ext1_tbl_create_order =
@@std_tbl_create_order + [:sheet_cached]

Instance Method Summary collapse

Constructor Details

#initialize(db_pn, ss_pn, ss_manager) ⇒ SpreadsheetDbCache

Returns a new instance of SpreadsheetDbCache.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/spreadsheet_db-cache_refi.rb', line 34

def initialize(db_pn,ss_pn,ss_manager)
  @create_tbls_strs = @@ext1_create_tbls_strs
  @stmts_strs = @@ext1_stmts_strs
  @tbl_create_order = @@ext1_tbl_create_order
  init2
  @pn = db_pn
  @ss_pn = ss_pn
  @ss_manager = ss_manager
  @db_pn = db_pn
  has_old_db = File.exist?(db_pn)
  if(has_old_db)
    open
     = ()
    if(.at_least?(@ss_manager.(ss_pn)))
      # old db good

    else
      # old db metadata bad

      reset 
      File.delete(db_pn)
      create_cache
    end
  else
    # no old db

    create_cache
  end
end

Instance Method Details

#create_cacheObject



60
61
62
63
64
65
66
67
# File 'lib/spreadsheet_db-cache_refi.rb', line 60

def create_cache
  open
  @db.transaction{|foo|
    #set_feature("sheet_cache",true)

    import_sheet_names(@ss_manager.get_ss(@ss_pn).sheets)
    (@ss_manager.(@ss_pn))
  }
end

#get_sheet(sheet_xid) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/spreadsheet_db-cache_refi.rb', line 91

def get_sheet(sheet_xid)
  if sheet_xid == nil
    $Log.tlog({id: 'err1040'})
  end
  sheet_id = get_sheet_id_from_xid(sheet_xid)
  if(!is_sheet_cached?(sheet_id))
    ss = @ss_manager.get_ss(@ss_pn)
    sheet_name = get_sheet_name_from_xid(sheet_id)
    if sheet_name == nil
      $Log.tlog({id: 'err1070',sheet_id:sheet_id,sheet_xid:sheet_xid})
    end
    puts 'sheet_name:'
    pp sheet_name
    ss.default_sheet = sheet_name
    import_sheet(sheet_id,ss)
  end
  super
end

#import_metadata(metadata) ⇒ Object



80
81
82
83
84
# File 'lib/spreadsheet_db-cache_refi.rb', line 80

def ()
  .each{|name,value|
    @prep_stmts[:metadata_set_nam_val].execute(name,value)
  }
end

#import_sheet(sheet_id, ss) ⇒ Object



109
110
111
112
# File 'lib/spreadsheet_db-cache_refi.rb', line 109

def import_sheet(sheet_id,ss)
  super
  set_sheet_cached_state(sheet_id,1)
end

#import_sheet_names(sheet_names) ⇒ Object



68
69
70
71
72
73
74
75
# File 'lib/spreadsheet_db-cache_refi.rb', line 68

def import_sheet_names(sheet_names)
  sheet_names.each_index{|sheet_ix|
    sheet_name = sheet_names[sheet_ix]
    pos = sheet_ix
    id = create_sheet(sheet_name,pos)
    set_sheet_cached_state(id,0)
  }
end

#is_sheet_cached?(sheet_id) ⇒ Boolean

Returns:



85
86
87
88
89
90
# File 'lib/spreadsheet_db-cache_refi.rb', line 85

def is_sheet_cached?(sheet_id)
  # TODO prep_ex ?

  is_cached = ( @prep_stmts[:sheet_cached_get_cached_by_sheet].execute!(sheet_id).flatten[0] == 1 )
#pp @prep_stmts[:sheet_cached_get_cached_by_sheet].execute!(sheet_id)

  return is_cached
end

#set_sheet_cached_state(sheet_id, state) ⇒ Object



76
77
78
79
# File 'lib/spreadsheet_db-cache_refi.rb', line 76

def set_sheet_cached_state(sheet_id,state)
  dperr(324,"sheet_id must be of integer type (sheet_id.class:#{sheet_id.class.to_s})") unless sheet_id.is_a?(Fixnum)
  @prep_stmts[:sheet_cached_set_sheet_cached].execute(sheet_id,state)
end