set comment {
===============================================================================

   Navn          : Peter Laulund, KMS

   Oprettet dato : 11 januar 2005 - 16:49

   Beskrivelse   :


===============================================================================}


# =============================================================================
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#if {![info exists gsPath2App ]}   { set gsPath2App [regsub -all -- {\\} $env(LDS_HOME) {/} ]}
#if {![info exists gsPath2MyFme ]} { set gsPath2MyFme [regsub -all -- {\\} $env(MY_FME) {/}]}
#if {![info exists gsPath2Data ]}  { set gsPath2Data  [regsub -all -- {\\} $env(LDS_DATA) {/} ]}
#if {![info exists gsPath2Temp ]}  { set gsPath2Temp  [regsub -all -- {\\} $env(FME_TEMP) {/} ] }

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namespace eval kmsOdbc {
  variable lib "$::gsPath2App/UTIL/odbc/lib/TCLODBC.DLL"
  load "$lib" tclodbc

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namespace export odbcCreateDb
proc odbcCreateDb {root dsn {flag 0}} {

     parseDef $::gsPath2App ${dsn}.DEF dbDef
     configDsn $root$dbDef(db) $dbDef(driver) $dsn $flag
     initDb $root$dbDef(db) $dbDef(driver) $flag

     foreach e [array names dbDef TABLE*] {
        set tName [lindex [split $e \,] 1]
        set index ""
        #puts $e
        if  [info exists dbDef(INDEX,$tName)] {
            #puts "index findes"
            #set index $dbDef(INDEX,$tName)
        }
        createTab $dsn $tName $dbDef($e) $index $flag
     }
     return
}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namespace export odbcGetSelect
  proc odbcGetSelect {dsn select} {

     database logDb $dsn
     set retVal [ join [eval "logDb \"$select\""] \n]
     logDb disconnect
     return $retVal
  }

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namespace export odbcInsert
proc odbcInsert {dsn tab colmLst valLst {flag 0} } {

     if { $flag } { puts "$tab opdaters med = $valLst" }

#  return
     database logDb $dsn
     logDb set autocommit on

     set cmd "logDb \"INSERT INTO $tab ( [ join $colmLst \, ] ) VALUES ([ join $valLst \, ] )\" "

     set res [ eval $cmd  ]
     logDb disconnect
     return $res
}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namespace export odbcGetDesc
proc odbcGetDesc {dsn t} {

     database logDb $dsn
     set retVal [ join [logDb columns $t] \n]
     logDb disconnect
     return $retVal
  }

# -----------------------------------------------------------------------------
# diverse private procedure der opretter og initiere databasen samt dsn
proc configDsn {dbfile driver dsn {flag 0 }} {

     if { $flag } {
        catch { database configure remove_sys_dsn $driver "DSN=$dsn" }
     }

     if {[lsearch [join [database datasources]] $dsn ] == -1 } {
         database configure add_sys_dsn $driver [list "DSN=$dsn" "DBQ=$dbfile"]
     }
     return 0
}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
proc initDb {dbfile driver {flag 0 }} {

     if { $flag } {
        if {[file exists $dbfile]} {file delete -force -- $dbfile}
     }

     if {![file exists [file dirname $dbfile] ]} {
        file mkdir [file dirname $dbfile]
     }

     if {![file exists $dbfile]} {
        database configure config_sys_dsn $driver [list "CREATE_DB=\"$dbfile\" General"]
     }

     return 0
}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  proc createTab {dsn name desc index {flag 0}} {

     database logDb $dsn
     if { $flag } {
         if {[llength [logDb tables $name]] != 0} {
            logDb "DROP TABLE $name"
         }
     }

     if {[llength [logDb tables $name]] == 0} {
        logDb "CREATE TABLE $name ( $desc )"
        if { "$index" != "c" } {
           set cmd "logDb \"CREATE INDEX $name ($index)\" " ; #puts $cmd
           #logDb "CREATE INDEX ERROR_IDX ON TABLE ERROR (DATO)"
        }
     }
     logDb disconnect
     return 0
  }

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  proc dropDsn {dsn driver} {
     variable driver ; variable dsn ; variable dbfile

     catch { database configure remove_sys_dsn $driver "DSN=$dsn" }
     catch { database configure remove_dsn $driver "DSN=$dsn" }
  }

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
proc parseDef {path f var } {

     upvar $var dbDef

     set rv "" ;
     set retVal [list]
     set defLst [split [string trim [read [set f [open $path/TCL/LIB/$f]]]][close $f] \n ]
     foreach l $defLst {
         if {[set l [string trim $l]] == "" } { continue }
         if {[regexp -- {^#.*$} $l ]} { continue }
         if {[regexp -- {(^.*)([\\]$)} $l a s b ] } {
             set rv "$rv $s"
         } else {
             set stmp [split [regsub -all -- {[ ]+} [string trim "$rv $l"] { } ] = ]
             lappend retVal [string trim [lindex $stmp 0]] [string trim [lindex $stmp 1]]
             set rv ""
         }
     }

     array set dbDef $retVal
     return 0 ;#$retVal
}
} ; #end kmsOdbc namespace

# ------------------------------------------------------------------------------
namespace import -force kmsOdbc::odbc*

namespace eval kmsHtml {
namespace export log2Html
proc log2Html {statRap} {

     set html ""
     set colm {STATUS ID USER DATASET FORMAT PROJ ADMKODE SKREVET STARTTS TID }
     set cmd "select [join $colm ,] from LDS_LOG where id > 0"

     set logLst  [split [odbcGetSelect XLDSLOG $cmd ] \n] ;#puts $logLst
     set htmlLst [GetListFromFile [pwd]/template.htm]     ;#puts [join $htmlLst \n]

     set col gray
     set pat { \&nbsp</TD><TD>\&nbsp }

     set i 0
     lappend res "<TR bgcolor='$col'><TD>[join $colm $pat]</TD></TR>"
     foreach l $logLst {
       #set f [lindex [split $l \; ] end]
       #set o [lindex [split $l \; ] 0]
       #set s [join [lrange [split $l \; ] 1 end-1] $pat]
       set f [lindex [split $l \; ] end] ;# indeholder link til logfil
       set o [lindex $l 0]
       set s [join $l $pat]

       if { !$o } { set col white } else {set col {#dddddd}}

      # lappend res  "<TR bgcolor='$col'><TD><A href='LOG/$f'> $s </TD></TR>"  ;#$s
       if { [expr $i % 2 ] } { set col {#dddddd}} else {set col white }
       lappend res  "<TR bgcolor='$col'><TD> $s </TD></TR>"  ;#$s
       incr i

     }

     set html [join [regsub -- {%rowList%} $htmlLst $res ] \n]
     write2file $statRap $html w
}
}
namespace import -force kmsHtml::


#log2Html "c:/temp/ldslog.htm"

set colm {

STATUS, STARTTS, TID, SKREVET, ADMKODE, FORMAT, PROJ, DATASET, USER

}


#foreach e [info procs o*] {puts $e ;# puts [info body $e] }

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# =============================================================================
