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.



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# 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

Instance Method Details

#buildObject



88
89
90
91
# File 'lib/sisu/dbi_discrete.rb', line 88

def build
  prepare
  create_and_populate
end

#connectObject



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# 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_populateObject



115
116
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
# 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.
    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)


103
104
105
106
107
108
109
110
111
112
113
114
# 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) ⇒ Object



92
93
94
95
# File 'lib/sisu/dbi_discrete.rb', line 92

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

#populateObject



177
178
# File 'lib/sisu/dbi_discrete.rb', line 177

def populate
end

#prepareObject



96
97
98
99
100
101
102
# 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_sqliteObject



150
151
152
153
154
155
156
157
158
159
160
161
# 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_fileObject



179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# 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