diff options
| author | Ralph Amissah <ralph@amissah.com> | 2012-03-12 18:51:21 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2012-03-12 18:51:21 -0400 | 
| commit | 1b7b1b2aec62cf261faa94ce2fbc05e9c28c83e2 (patch) | |
| tree | 52b39f3a8e625db1678c3353a2a88a271379d81f /lib/sisu/v3dv/dbi_discreet.rb | |
| parent | debian/changelog (3.1.14-1) (diff) | |
| parent | v3dv: documentation sisu_commands, add sqlite3 discreet (diff) | |
Merge tag 'sisu_3.1.15' into debian/sid
Diffstat (limited to 'lib/sisu/v3dv/dbi_discreet.rb')
| -rw-r--r-- | lib/sisu/v3dv/dbi_discreet.rb | 158 | 
1 files changed, 158 insertions, 0 deletions
diff --git a/lib/sisu/v3dv/dbi_discreet.rb b/lib/sisu/v3dv/dbi_discreet.rb new file mode 100644 index 00000000..d9ecd8e7 --- /dev/null +++ b/lib/sisu/v3dv/dbi_discreet.rb @@ -0,0 +1,158 @@ +# encoding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997 - 2012, Ralph Amissah, All Rights Reserved. + + * License: GPL 3 or later: + +   SiSU, a framework for document structuring, publishing and search + +   Copyright (C) Ralph Amissah + +   This program is free software: you can redistribute it and/or modify it +   under the terms of the GNU General Public License as published by the Free +   Software Foundation, either version 3 of the License, or (at your option) +   any later version. + +   This program is distributed in the hope that it will be useful, but WITHOUT +   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +   FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +   more details. + +   You should have received a copy of the GNU General Public License along with +   this program. If not, see <http://www.gnu.org/licenses/>. + +   If you have Internet connection, the latest version of the GPL should be +   available at these locations: +   <http://www.fsf.org/licensing/licenses/gpl.html> +   <http://www.gnu.org/licenses/gpl.html> + +   <http://www.jus.uio.no/sisu/gpl.fsf/toc.html> +   <http://www.jus.uio.no/sisu/gpl.fsf/doc.html> +   <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt> + + * SiSU uses: +   * Standard SiSU markup syntax, +   * Standard SiSU meta-markup syntax, and the +   * Standard SiSU object citation numbering and system + + * Hompages: +   <http://www.jus.uio.no/sisu> +   <http://www.sisudoc.org> + + * Download: +   <http://www.jus.uio.no/sisu/SiSU/download.html> + + * Ralph Amissah +   <ralph@amissah.com> +   <ralph.amissah@gmail.com> + + ** Description: postgresql module, dbi import frame + +=end +module  SiSU_DBI_Discreet                               #% database building +  require_relative 'help'                               # help.rb +  require_relative 'sysenv'                             # sysenv.rb +    include SiSU_Env; include SiSU_Screen +  require_relative 'param'                              # param.rb +    include SiSU_Param +  require_relative 'db_dbi'                             # db_dbi.rb +    include SiSU_DbDBI +  require_relative 'shared_html_lite'                   # shared_html_lite.rb +    include SiSU_FormatShared +  require 'fileutils' +    include FileUtils::Verbose +  class SQL +    def initialize(opt) +      SiSU_Env::Load.new('dbi',true).prog +      @opt=opt +      @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt) +      @md=@particulars.md +      if @opt.cmd =~/[d]/ \ +      or  @opt.mod.inspect =~/--((?:sq)?lite)/ +        @sql_type='sqlite' +        maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/ +      end +      @output_path=@md.file.output_path.sqlite_discreet.dir +      @filename=@md.file.base_filename.sqlite_discreet +      @file="#{@output_path}/#{@filename}" +    end +    def build +      prepare +      create_and_populate +    end +    def maintenance_check(opt,file,line) +      p opt.mod +      p opt.cmd +      p "at #{file} #{line}" +    end +    def prepare +      if not FileTest.directory?(@output_path) +        FileUtils::mkdir_p(@output_path) +      elsif @file +        FileUtils::rm_rf(@file) +      end +    end +    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.class==NilClass +        puts msg +        exit +      end +    end +    def create_and_populate +      db=SiSU_Env::DbOp.new(@md) +      conn=db.sqlite_discreet.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 +        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,'sqlite') +        sdb_import.marshal_load +        tell=SiSU_Screen::Ansi.new(@opt.cmd,"sqlite3 #{db.sqlite.db} database?") +        tell.puts_grey if @opt.cmd =~/v/ +      rescue;  SiSU_Errors::InfoError.new($!,$@,'-d').error; sdb.output_dir? +      end +    end +    def read_sqlite +      begin +        @conn=@db.sqlite.conn_sqlite3 +      rescue +      ensure +      end +    end +    def connect +      begin +        sql_type='sqlite' +        SiSU_Screen::Ansi.new(@opt.cmd,"DBI (#{@sql_type}) #{@opt.mod}",@opt.fns).dbi_title unless @opt.cmd =~/q/ +        @db.sqlite_discreet.conn_sqlite3 +      rescue +        SiSU_Errors::InfoError.new($!,$@,@cf,@opt.fns).error +      ensure +      end +    end +    def populate +    end +  end +end +__END__  | 
