include Singleton
def initialize
- db_dir = CHISE::DataSource::DB_DIR
- @ds = DataSource.new(CHISE::DataSource::Berkeley_DB, db_dir, 0, 0755)
+ @location = CHISE::DataSource::DB_DIR.path
+ @ds = DataSource.new(CHISE::DataSource::Berkeley_DB, @location.to_s, 0, 0755)
@feature_db = {}
@ccs_db = {}
@byids_db = {}
end
- attr_reader :ds
+ attr_reader :ds, :location
def close
# @ds.close if @ds # do not close for now
end
def get_feature(name)
- @feature_db[name] = FeatureDB.new(@ds, name) if @feature_db[name].nil?
+ @feature_db[name] = FeatureDB.new(self, name) if @feature_db[name].nil?
@feature_db[name]
end
end
def get_ccs(name)
- @ccs_db[name] = CCS_DB.new(@ds, name) if @ccs_db[name].nil?
+ @ccs_db[name] = CCS_DB.new(self, name) if @ccs_db[name].nil?
@ccs_db[name]
end
end
def get_by_ids_db(n)
- @byids_db[n] = ByIDS_DB.new(@ds, n) if @byids_db[n].nil?
+ @byids_db[n] = ByIDS_DB.new(self, n) if @byids_db[n].nil?
@byids_db[n]
end
include EachEntryModule
end
+ module TableManagementModule
+ def to_hash
+ h = {}
+ each_char {|k, v| h[k] = v }
+ h
+ end
+
+ def dump
+ txt = @name.path.escape.escape_win_filename.to_s+".txt"
+ t = @cd.location+@category+@keyvalue+txt
+ t.open("wb"){|out|
+ to_hash.sort.each {|k, v|
+ out.printf("%s\t%s\n", k, v)
+ }
+ }
+ end
+ end
+
class FeatureDB
include ParseValueModule
- def initialize(ds, name)
- @ds, @name = ds, name
- # @feature = @ds.get_feature(@name)
+ include TableManagementModule
+
+ def initialize(cd, name)
+ @cd, @name = cd, name
+ @ds = @cd.ds
@feature = @ds.get_feature(@name.path.escape.escape_win_filename.to_s)
+ @category, @keyvalue = "character", "feature"
end
def setup_db(w) @feature.setup_db(w); end
def sync() @feature.sync(); end
alias close sync
- def set_value(cid, value) @feature.set_value(cid, value); end
+
+ def set_value(cid, value)
+ @feature.set_value(cid, value)
+ end
+
def get_value(cid)
parse_value(@feature.get_value(cid))
end
+
def each_char
@feature.each_char {|cid, value|
+ #qp cid, value
yield(cid, parse_value(value))
}
end
end
class CCS_DB
- def initialize(ds, name)
- @ds, @name = ds, name
- #qp @name
+ include TableManagementModule
+
+ def initialize(cd, name)
+ @cd, @name = cd, name
+ @ds = @cd.ds
@ccs = @ds.get_ccs(@name)
@dsr = @ccsr = nil
+ @category, @keyvalue = "character", "by_feature"
end
def setup_db(w) @ccs.setup_db(w); end
def sync() @ccs.sync(); end
include ChiseValue
include TableAccessModule
- def initialize(ds, name)
- @ds, @name = ds, name
+ def initialize(cd, name)
+ @cd, @name = cd, name
+ @ds = @cd.ds
@category, @keyvalue = "character", "by_ids"
reset
end