class SiSU_DBI_Discrete::SQL

Public Class Methods

new(opt) click to toggle source
# File lib/sisu/dbi_discrete.rb, line 72
def initialize(opt)
  SiSU_Env::Load.new('sqlite3',true).prog
  @opt=opt
  @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
  @md=@particulars.md
  if @opt.act[:sqlite][:set]==:on
    @sql_type=:sqlite
    if @opt.act[:maintenance][:set]==:on
      maintenance_check(@opt,__FILE__,__LINE__)
    end
  end
  @output_path=@md.file.output_path.sqlite_discrete.dir
  @filename=@md.file.base_filename.sqlite_discrete
  @file_maint=sql_maintenance_file
  @file="#{@output_path}/#{@filename}"
end

Public Instance Methods

build() click to toggle source
# File lib/sisu/dbi_discrete.rb, line 88
def build
  prepare
  create_and_populate
end
connect() click to toggle source
# File lib/sisu/dbi_discrete.rb, line 162
def connect
  begin
    SiSU_Screen::Ansi.new(
      @opt.act[:color_state][:set],
      "DBI (#{@sql_type}) #{@opt.selections.str}",
      @opt.fns
    ).dbi_title unless @opt.act[:quiet][:set]==:on
    @db.sqlite_discrete.conn_sqlite3
  rescue
    SiSU_Errors::Rescued.new($!,$@,@cf,@opt.fns).location do
      __LINE__.to_s + ':' + __FILE__
    end
  ensure
  end
end
create_and_populate() click to toggle source
# File lib/sisu/dbi_discrete.rb, line 115
def create_and_populate
  db=SiSU_Env::DbOp.new(@md)
  conn=db.sqlite_discrete.conn_sqlite3
  sdb=SiSU_DbDBI::Create.new(@opt,conn,@file,:sqlite)
  sdb_index=SiSU_DbDBI::Index.new(@opt,conn,@file,:sqlite)
  sdb.output_dir?
  begin
    SiSU_Screen::Ansi.new(
      @opt.act[:color_state][:set],
      'SQLite (discrete)',
      "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}"
    ).green_title_hi unless @opt.act[:quiet][:set]==:on
    sdb.create_db
    sdb.create_table.metadata_and_text
    sdb.create_table.doc_objects
    sdb.create_table.endnotes
    sdb.create_table.endnotes_asterisk
    sdb.create_table.endnotes_plus
    sdb.create_table.urls
    sdb_index.create_indexes
    db_exist?(db,conn)
    sdb_import=SiSU_DbDBI::Import.new(@opt,conn,@file_maint,:sqlite)
    sdb_import.marshal_load
    tell=SiSU_Screen::Ansi.new(
           @opt.act[:color_state][:set],
           "sqlite3 #{db.sqlite.db} database?"
         )
    tell.puts_grey if @opt.act[:verbose][:set]==:on
  rescue
    SiSU_Errors::Rescued.new($!,$@,'-d').location do
      __LINE__.to_s + ':' + __FILE__
    end
    sdb.output_dir?
  end
end
db_exist?(db,conn) click to toggle source
# File lib/sisu/dbi_discrete.rb, line 103
def db_exist?(db,conn)
  msg=%{no connection with sqlite database established, createdb "#{db.sqlite.db}"?}
  if (not (FileTest.file?(db.sqlite.db)) \
  or FileTest.zero?(db.sqlite.db))
    puts msg
    exit
  end
  if conn.is_a?(NilClass)
    puts msg
    exit
  end
end
maintenance_check(opt,file,line) click to toggle source
# File lib/sisu/dbi_discrete.rb, line 92
def maintenance_check(opt,file,line)
  #p opt.selections.str
  p "at #{file} #{line}"
end
populate() click to toggle source
# File lib/sisu/dbi_discrete.rb, line 177
def populate
end
prepare() click to toggle source
# File lib/sisu/dbi_discrete.rb, line 96
def prepare
  if not FileTest.directory?(@output_path)
    FileUtils::mkdir_p(@output_path)
  elsif @file
    FileUtils::rm_rf(@file)
  end
end
read_sqlite() click to toggle source
# File lib/sisu/dbi_discrete.rb, line 150
def read_sqlite
  begin
    begin
      require 'sqlite3'
      @conn=@db.sqlite.conn_sqlite3
    rescue LoadError
      SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('sqlite3 not available')
    ensure
      Dir.chdir(@opt.f_pth[:pth])
    end
  end
end
sql_maintenance_file() click to toggle source
# File lib/sisu/dbi_discrete.rb, line 179
def sql_maintenance_file
  file=if @opt.act[:maintenance][:set]==:on
    if @opt.fns and not @opt.fns.empty?
      @env=SiSU_Env::InfoEnv.new(@opt.fns) if @opt.fns
      if @sql_type ==:sqlite
        puts "\n#{@env.processing_path.sqlite}/#{@opt.fns}.sql"
      end
      @db=SiSU_Env::InfoDb.new
      @job="sqlite3 #{@db.sqlite.db} < #{@env.processing_path.sqlite}/#{@opt.fns}.sql"
      if @sql_type ==:sqlite
        File.new("#{@env.processing_path.sqlite}/#{@opt.fns}.sql",'w+')
      else
        File.new("#{@env.processing_path.postgresql}/#{@opt.fns}.sql",'w+')
      end
    elsif @opt.fns \
    and @opt.fns.inspect =~/create/
      nil #sort variations later
    else nil
    end
  else nil
  end
  file
end