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:

  • (Boolean)


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