⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbquery.tcl

📁 WindML3.0补丁 WIND MEDIA LIBRARY 3.0.3 (CP3) for Tornado 2.2.0 and Tornado 2.2.1 Up-to-date produc
💻 TCL
📖 第 1 页 / 共 3 页
字号:
                windowTimerCallbackSet licInfoGetAllDlg \
                            -milliseconds 200 licInfoGetAllCallBack
            } \
            -controls [list \
                [list bitmap -name bmp -stretch \
                             -title [cdFileNameGet [file join RESOURCE \
                                BITMAPS SETUPICO.BMP]] \
                             -x 10 -y 5 -w 20 -h 20] \
                [list label -name "message1" -center \
                            -title [strTableGet DBQUERY_LICINFO_BANNER] \
                            -x 35 -y 10 -w 200 -h 10 ] \
                [list button -name cancel -title "&Cancel" \
                             -callback onCancel \
                             -x 100 -y 23 -w 50 -h 15] ]
    }
}

#############################################################################
#
# licInfoGetAllCallBack
#     GUI mode : a call back function for licInfoGetAllDlg
#     TEXT mode: retrieves license information from WRS database
#
# This function retrieves customer license information from WRS database. It 
# parses the license file, populates some lmVals values and calls 
# lmValsPopulate to fill the rest of lmVals values
#
# SYNOPSIS
# .tS
# licInfoGetAllCallBack
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc licInfoGetAllCallBack {} {
    global setupVals lmVals lmTotalRecs 
    global lmHostRecsLen lmHostRecs lmHostFeaturesNum
    global licInfoRetVal lmPurchasedProds lmPackages

    set licInfo ""
    set lmPackages {}

    if { [isGUImode] } {
        windowTimerCallbackSet licInfoGetAllDlg 0 ""
    } else {
        puts "\n[strTableGet DBQUERY_LICINFO_BANNER]"
    }

    set lmVals(successfulDbQuery) 0

    # get license information here
        # send the licInfoGetAllRequest = 5 (ALI2.0)
        # send WRSLicense and Tornado version
        #
        set licInfoGetAllRequest 5
        set parms "$setupVals(WRSLicense)|$setupVals(prodVer)"

    set licInfo [sendToALD $licInfoGetAllRequest $parms]

    if {[isNumeric $licInfo]} {
        # error handling code here ...

        if {$licInfo == 0 || $licInfo == 1} {
            set licInfoRetVal $licInfo
           
            if { [isGUImode] } { windowClose licInfoGetAllDlg }

            return
        }
    }

    set lmVals(successfulDbQuery) 1

    # parse the input into lmVals

    set licInfo [split $licInfo '\n']
    set listLen [llength $licInfo]
    if {[lindex $licInfo [expr $listLen - 1]] == ""} {
        set licInfo [lreplace $licInfo [expr $listLen - 1] [expr $listLen - 1]]
        set listLen [expr $listLen - 1]
    }

    # get the token
    set lmVals(token) [lindex $licInfo 0]

    # get the WRSLicense/projectName field
    set custLicProjName [split [lindex $licInfo 1] "|"]
    set lmVals(WRSLicense) [lindex $custLicProjName 0]
    set lmVals(projName) [lindex $custLicProjName 1]

    # get lmFeaturesTotal info (3rd line)
    set lmTotalRecs [split [lindex $licInfo 2] "|"]
    set lmVals(lmFeaturesTotal) ""

    # populate lmVals(lmFeaturesTotal)
    foreach feature $lmTotalRecs {
        set prod [split $feature ":"]
        set fName [lindex $prod 0]
        set fID [lindex $prod 1]

        # if any feature id is negative then this is an ELM user.

        if {$fID < 0} {
            dbgputs "dbQuery: ELM feature id found: $fID"
            set setupVals(ELMUser) 1
        } 	    		
	
        set fFLTotal [FLSeatsGet $feature]
        set fNLTotal [NLSeatsGet $feature]
        set fTotal [expr $fFLTotal + $fNLTotal]

        set lmVals(lmFeaturesTotal) \
            [lappend lmVals(lmFeaturesTotal) [list $fName $fTotal]]
        set lmVals(lmFLFeaturesTotal) \
            [lappend lmVals(lmFLFeaturesTotal) [list $fName $fFLTotal]]
        set lmVals(lmNLFeaturesTotal) \
            [lappend lmVals(lmNLFeaturesTotal) [list $fName $fNLTotal]]
    }

    # parse the hostRecords, they are of the form:
    # host|hostID|port|feature:featureId:FL-nn:NL-mm|...
    # Stop when we reach a line starting with %, then get the packages
    # and the purchased product records if any

    set packagesIndex [lsearch $licInfo "% Packages"]
    if {$packagesIndex != -1} {
        set lmHostRecs [lrange $licInfo 3 [expr $packagesIndex - 1]]
        set purchasedProdIndex [lsearch $licInfo "% PurchasedProducts"]
        set lmPackages [lrange $licInfo [expr $packagesIndex + 1] \
	   [expr $purchasedProdIndex -1]]
    } else {
        set purchasedProdIndex [lsearch $licInfo "% PurchasedProducts"]
        set lmHostRecs [lrange $licInfo 3 [expr $purchasedProdIndex - 1]]
    }
    set lmPurchasedProds [lrange $licInfo [expr $purchasedProdIndex + 1] $listLen]
    set lmHostRecsLen [llength $lmHostRecs]
    
    set lmHostFeaturesNum {}
    set nextRecIndex 0

    for {set ix 0} {$ix < $lmHostRecsLen} {incr ix} {
        set hostRec [split [lindex $lmHostRecs $ix] "|"]

        # get host information

        lappend lmVals(lmHosts) [lindex $hostRec 0]
        lappend lmVals(lmHostIds) [lindex $hostRec 1]
        lappend lmVals(lmHostPorts) [lindex $hostRec 2]  

        # get the number of features configured for that host

        set hostRecLen [llength $hostRec]
        lappend lmHostFeaturesNum [expr $hostRecLen - 3]
    }

    # Populate lmVals from the return record

    lmValsPopulate $lmVals(lmHostName)
    dbgputs "lmPurchasedProds: $lmPurchasedProds\n\n"
    dbgputs "lmPackages: $lmPackages\n\n"

    set licInfoRetVal ""

    if { [isGUImode] } { 
        windowClose licInfoGetAllDlg 
    } else {
        return 0
    }
}

#############################################################################
#
# onGrant - callback function when the grant option is selected
#
# This procedure is a callback which sets up wizard pages when the grant 
# option is selected
#
# SYNOPSIS
# .tS
# onGrant
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc onGrant {} {
    global setupVals 

    set setupVals(dbQueryOptions) "onGrant"
    
}

#############################################################################
#
# onDenied - callback function when the denied option is selected
#
# This procedure is a callback which sets up wizard pages when the denied 
# option is selected
#
# SYNOPSIS
# .tS
# onDenied
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#  
# ERRORS: N/A
#

proc onDenied {} {
    global setupVals 

    set setupVals(dbQueryOptions) "onDenied"
    
}


proc onSerial {} {
    global ctrlVals setupVals lmVals
    
    set w $ctrlVals(mainWindow) 
    
    
    if {[controlChecked $w.vsnChkBox]} {                                                 
        set id [hostIdGen vsn]
        set idType "(Disk Serial)"
    } else {
        set id [hostIdGen]
        set idType "(MAC)"
    }
    
    set setupVals(hostId) $id
    set lmVals(lmHostId) $id 
    
    set msg "Host ID $idType: $setupVals(hostId)"
       
    controlValuesSet $w.idInfo $msg
}

proc onVsnDetails {} {
    dialog ok_with_title \
        "Disk Serial Information" \
        [strTableGet DBQUERY_VSN_DETAILS]
}


#############################################################################
#
# onCancel - callback function when user clicks cancel while retrieving information
#
# This procedure is a callback when user clicks cancel button while retrieving
# license information from the database
#
# SYNOPSIS
# .tS
# onGrant
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc onCancel {} {
    global cancelDBQUERY
    global lmVals

    if {$lmVals(httpToken) != ""} {
        http_reset $lmVals(httpToken)
        set lmVals(httpToken) ""
    }
    controlEnable wizardDialog.backButt 0
    controlEnable wizardDialog.nextButt 0
    controlEnable wizardDialog.cancelButt 0
    controlEnable wizardDialog.helpButt 0
    windowClose licInfoGetAllDlg
    set cancelDBQUERY 1
}


#############################################################################
#
# lmValsInit - routine to clean out values that are volatile
#
# SYNOPSIS
# .tS
# lmValsInit
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc lmValsInit {} {
    global lmVals

    # clean out values that lmValsPopulate will add 
    
    set lmVals(lmHostIds) {}
    set lmVals(lmHostPorts) {}
    set lmVals(lmLicensedProductNames) {}
    set lmVals(lmLicensedFeatureIds) {}
    set lmVals(lmFeaturesAllocated) {}
    set lmVals(lmFeaturesAvailable) {}
    set lmVals(lmFeaturesRequested) {}

    # new lmVals for ALI 2.0
    set lmVals(lmFLFeaturesAllocated) {}
    set lmVals(lmNLFeaturesAllocated) {}
    set lmVals(lmFLFeaturesAvailable) {}
    set lmVals(lmNLFeaturesAvailable) {}
    set lmVals(lmFLFeaturesRequested) {}
    set lmVals(lmNLFeaturesRequested) {}

}


#############################################################################
#
# lmLicHostIndexGet - gets index to lmHostRecs for hostName
#
# This procedure gets the index in lmHostRecs list for the hostName parameter
#
# SYNOPSIS
# .tS
# lmLicHostInfoGet <attribute> index
#              
# .tE
#
# PARAMETERS: hostName
#
# RETURNS: index
#
# ERRORS: N/A
#

proc lmLicHostIndexGet {hostName} {
    global lmVals       

    set retVal -1
    for {set ix 0} {$ix < [llength $lmVals(lmHosts)]} {incr ix} {
        if {$hostName == [lindex $lmVals(lmHosts) $ix]} {
            set retVal $ix
            break
        }
    }
    return $retVal
}

#############################################################################
#
# lmLicHostInfoGet - gets attributes from lmHostRecs for host related items
#
# This procedure gets attributes from lmHostRecs list for licensed host items
# based on the index value parameter
#
# SYNOPSIS
# .tS
# lmLicHostInfoGet <attribute> index
#              
# .tE
#
# PARAMETERS: attribute index
# where attribute can be one of:
#       hostName        returns the host name corresponding to index
#       hostId          returns the host Id corresponding to index
#       hostPort        returns the host port corresponding to index
# and index is the index into the list
#
# RETURNS: see above
#
# ERRORS: N/A
#

proc lmLicHostInfoGet {attrib index} {
    global lmVals lmHostRecs lmHostRecsLen

    if {$index < 0} {
        puts "Error: index $index invalid"
        return ""
    }

    switch -exact $attrib {
        hostName {
            set rec [lindex $lmHostRecs $index]
            return [parseBarIndex $rec 0]
        }

        hostId {
            set rec [lindex $lmHostRecs $index]
            return [parseBarIndex $rec 1]
        }

        hostPort {
            set rec [lindex $lmHostRecs $index]
            return [parseBarIndex $rec 2]
        }
        
        default {
            puts "Error: no such attribute $attrib in lmHostRecs"
            return ""

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -