Class: SiSU_DBI_Discrete::SQL

Inherits:
Object
  • Object
show all
Defined in:
lib/sisu/dbi_discrete.rb

Instance Method Summary collapse

Constructor Details

#initialize(opt) ⇒ SQL

Returns a new instance of SQL.



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/sisu/dbi_discrete.rb', line 74

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

Instance Method Details

#buildObject



90
91
92
93
# File 'lib/sisu/dbi_discrete.rb', line 90

def build
  prepare
  create_and_populate
end

#connectObject



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'lib/sisu/dbi_discrete.rb', line 164

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_populateObject



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/sisu/dbi_discrete.rb', line 117

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.
    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) ⇒ Boolean

Returns:

  • (Boolean)


105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/sisu/dbi_discrete.rb', line 105

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) ⇒ Object



94
95
96
97
# File 'lib/sisu/dbi_discrete.rb', line 94

def maintenance_check(opt,file,line)
  #p opt.selections.str
  p "at #{file} #{line}"
end

#populateObject



179
180
# File 'lib/sisu/dbi_discrete.rb', line 179

def populate
end

#prepareObject



98
99
100
101
102
103
104
# File 'lib/sisu/dbi_discrete.rb', line 98

def prepare
  if not FileTest.directory?(@output_path)
    FileUtils::mkdir_p(@output_path)
  elsif @file
    FileUtils::rm_rf(@file)
  end
end

#read_sqliteObject



152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/sisu/dbi_discrete.rb', line 152

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_fileObject



181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# File 'lib/sisu/dbi_discrete.rb', line 181

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