home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / repoptimdi.tcl < prev    next >
Text File  |  1997-11-28  |  8KB  |  309 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)repoptimdi.tcl    /main/titanic/12
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)repoptimdi.tcl    /main/titanic/12   28 Nov 1997 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "repository.tcl"
  13. # End user added include file section
  14.  
  15. require "repdbdialo.tcl"
  16.  
  17. Class RepOptimDialog : {RepDbDialog} {
  18.     constructor
  19.     method destructor
  20.     method popUp
  21.     method checkOk
  22.     method ok
  23.     method optimizeFinished
  24.     attribute projects
  25.     attribute allProjects
  26.     attribute models
  27.     attribute allModels
  28. }
  29.  
  30. constructor RepOptimDialog {class this name view} {
  31.     set this [RepDbDialog::constructor $class $this $name $view]
  32.     # Start constructor user section
  33.  
  34.         $this autoPopDown 0
  35.  
  36.         set rep [[$this view] rep]
  37.         set corp [$rep currentCorporate]
  38.         set name [$rep currentName]
  39.  
  40.         $this config \
  41.             -title "Optimize Repository '$name'" \
  42.             -okPressed { %this ok } \
  43.         -helpPressed { [%this view] helpOnName optimizeRepository }
  44.  
  45.         interface DlgColumn $this.gui {
  46.         verStretchFactor 0
  47.             NamedGroup options {
  48.                 label "Options"
  49.                 DlgRow r {
  50.             DlgColumn l {
  51.             verStretchFactor 0
  52.             CheckButton corp {
  53.                 label "Corporate"
  54.                 state 1
  55.             }
  56.             }
  57.             DlgColumn r {
  58.             verStretchFactor 0
  59.             CheckButton drop {
  60.                 label "Drop Indices"
  61.                 state 0
  62.             }
  63.             CheckButton create {
  64.                 label "Create Indices"
  65.                 state 0
  66.             }
  67.             CheckButton template {
  68.                 label "Template Optimizations"
  69.                 state 1
  70.             }
  71.             }
  72.                 }
  73.             }
  74.             DlgColumn list {
  75.         verStretchFactor 0
  76.             }
  77.         CheckButton shut {
  78.         label "Shutdown dbservers before optimizing."
  79.         state 1
  80.         }
  81.             NamedGroup db {
  82.                 label "Database"
  83.                 DlgColumn attr {
  84.             verStretchFactor 0
  85.                 }
  86.             }
  87.         }
  88.  
  89.         if [$view projectsEnabled] {
  90.             $this allProjects $this.gui.options.r.l.allprojects
  91.             interface CheckButton [$this allProjects] {
  92.         label "All Projects"
  93.         state 1
  94.         }
  95.  
  96.             set projects $this.gui.list.projects
  97.         $this projects $projects.list
  98.             interface NamedGroup $projects {
  99.                 label "Projects"
  100.         TextList list {
  101.             verStretchFactor 100
  102.             selectionPolicy EXTENDED
  103.             rowCount 5
  104.                 }
  105.             }
  106.  
  107.         if ![$corp isNil] {
  108.         [$this projects] entrySet \
  109.                     [lsort [query -s name [$corp projects]]]
  110.         }
  111.  
  112.         [$this projects] selectionChanged "
  113.                 set count \[llength \[[$this projects] selectedSet]]
  114.                 if {\$count > 0} {
  115.                     if [$view modelsEnabled] {
  116.             \[$this models] selectedSet {}
  117.             \[$this allModels] state 0
  118.                     }
  119.             [$this allProjects] state 0
  120.                 }
  121.         $this checkOk"
  122.  
  123.         [$this allProjects] stateChanged "
  124.                 [$this projects] selectedSet {}
  125.         if [$view modelsEnabled] {
  126.             \[$this models] selectedSet {}
  127.                     if \[%this state] {
  128.                         \[$this allModels] state 0
  129.                     }
  130.                 }
  131.                 $this checkOk"
  132.         }
  133.  
  134.         if [$view modelsEnabled] {
  135.             $this allModels $this.gui.options.r.l.allmodels
  136.             interface CheckButton [$this allModels] {
  137.         label "All Models"
  138.         state 1
  139.         }
  140.  
  141.         if [$view projectsEnabled] {
  142.                 [$this allModels] state 0
  143.             }
  144.  
  145.             set models $this.gui.list.models
  146.         $this models $models.list
  147.             interface NamedGroup $models {
  148.                 label "Models"
  149.         TextList list {
  150.             verStretchFactor 100
  151.             selectionPolicy EXTENDED
  152.             rowCount 5
  153.                 }
  154.             }
  155.  
  156.         if ![$corp isNil] {
  157.                 set models {}
  158.                 foreach m [$corp models] {
  159.                     lappend models [$m name].[$m type]
  160.                 }
  161.         [$this models] entrySet $models
  162.         }
  163.  
  164.         [$this models] selectionChanged "
  165.                 set count \[llength \[[$this models] selectedSet]]
  166.                 if {\$count > 0} {
  167.                     if [$view projectsEnabled] {
  168.             \[$this projects] selectedSet {}
  169.             \[$this allProjects] state 0
  170.                     }
  171.             [$this allModels] state 0
  172.                 }
  173.         $this checkOk"
  174.  
  175.         [$this allModels] stateChanged "
  176.                 [$this models] selectedSet {}
  177.         if [$view projectsEnabled] {
  178.             \[$this projects] selectedSet {}
  179.                     if \[%this state] {
  180.                         \[$this allProjects] state 0
  181.                     }
  182.                 }
  183.                 $this checkOk"
  184.         }
  185.  
  186.         $this.gui.options.r.l.corp stateChanged "
  187.             $this checkOk"
  188.  
  189.         $this createDbInterface $this.gui.db.attr
  190.         $this setDbFields
  191.         $this setupForPassword
  192.  
  193.     # End constructor user section
  194.     return $this
  195. }
  196.  
  197. method RepOptimDialog::destructor {this} {
  198.     # Start destructor user section
  199.     # End destructor user section
  200.     $this RepDbDialog::destructor
  201. }
  202.  
  203. method RepOptimDialog::popUp {this} {
  204.     $this checkOk
  205.     $this RepDbDialog::popUp
  206. }
  207.  
  208. method RepOptimDialog::checkOk {this} {
  209.     if {([$this.gui.options.r.l.corp state]
  210.             ||
  211.     ([[$this view] projectsEnabled] &&
  212.         ([[$this allProjects] state] ||
  213.          ![lempty [[$this projects] selectedSet]]))
  214.             ||
  215.     ([[$this view] modelsEnabled] &&
  216.         ([[$this allModels] state] ||
  217.          ![lempty [[$this models] selectedSet]])))
  218.             &&
  219.         [$this passwordOk]} {
  220.  
  221.         $this okSensitive 1
  222.     } else {
  223.         $this okSensitive 0
  224.     }
  225. }
  226.  
  227. method RepOptimDialog::ok {this} {
  228.     $this busy 1
  229.  
  230.     set view [$this view]
  231.     set rep [$view rep]
  232.     set name [$rep currentName]
  233.  
  234.     if [$view projectsEnabled] {
  235.     if {[$this.gui.shut state] && ![$rep shutdownDbServers $name]} {
  236.         [$this view] message "Repository not optimized."
  237.         $this busy 0
  238.         return
  239.     }
  240.     }
  241.  
  242.     if ![$this getDbFields cmdInfo] {
  243.     [$this view] message "Repository not optimized."
  244.     $this busy 0
  245.         return
  246.     }
  247.  
  248.     set options ""
  249.     set projects {}
  250.     set models {}
  251.  
  252.     if [$this.gui.options.r.l.corp state] {
  253.         append options " -c"
  254.     }
  255.  
  256.     if [$view projectsEnabled] {
  257.     if [[$this allProjects] state] {
  258.         append options " -a"
  259.     } else {
  260.         set projects ""
  261.         foreach project [[$this projects] selectedSet] {
  262.                 append projects " [quoteIf $project]"
  263.             }
  264.     }
  265.     }
  266.  
  267.     if [$view modelsEnabled] {
  268.     if [[$this allModels] state] {
  269.         append options " -a -m"
  270.     } else {
  271.         set models ""
  272.         foreach model [[$this models] selectedSet] {
  273.                 append models " [quoteIf $model]"
  274.             }
  275.             if ![lempty $models] {
  276.                 append options " -m"
  277.             }
  278.     }
  279.     }
  280.  
  281.     if [$this.gui.options.r.r.drop state] {
  282.         append options " -I"
  283.     }
  284.     if [$this.gui.options.r.r.create state] {
  285.         append options " -i"
  286.     }
  287.     if [$this.gui.options.r.r.template state] {
  288.         append options " -t"
  289.     }
  290.  
  291.     if ![[[$this view] rep] optimizeRepository "$this optimizeFinished" \
  292.             cmdInfo $options [$rep currentName] "$projects $models"] {
  293.         $this busy 0
  294.     }
  295. }
  296.  
  297. method RepOptimDialog::optimizeFinished {this exitCode} {
  298.     $this busy 0
  299.     if {$exitCode == 0} {
  300.         $this popDown
  301.         [$this view] message "Repository optimized successfully."
  302.     } else {
  303.         [$this view] message "Repository not optimized."
  304.     }
  305. }
  306.  
  307. # Do not delete this line -- regeneration end marker
  308.  
  309.