home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / systems.tcl < prev    next >
Text File  |  1997-08-26  |  4KB  |  172 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #    (c) Cayenne Software Inc. 1997
  4. #
  5. #    File:        @(#)systems.tcl    /main/titanic/2
  6. #    Author:        M. van Leeuwen
  7. #    Description:    Report on system versions
  8. #    Usage in:    PhaseVersion and higher
  9. #
  10. #---------------------------------------------------------------------------
  11. # SccsId = @(#)systems.tcl    /main/titanic/2    26 Aug 1997    Copyright 1997 Cayenne Software Inc.
  12.  
  13. Class ReportSystemsObject : {GCObject} {
  14.     constructor
  15.  
  16.     attribute projectName
  17.     attribute configFullName
  18.     attribute systemVersion
  19.     attribute systemName
  20.     attribute systemVersionName
  21.     attribute phaseName
  22.     attribute phaseIndex
  23. }
  24.  
  25.  
  26. constructor ReportSystemsObject {class this proj cv pv sv} {
  27.     set this [GCObject::constructor $class $this]
  28.     $this projectName       [$proj name]
  29.     $this configFullName    [[$cv config] name].[$cv versionName]
  30.     $this systemVersion     $sv
  31.     $this systemName        [[$sv system] name]
  32.     $this systemVersionName [$sv versionName]
  33.     $this phaseName         [[$pv phase] name]
  34.     $this phaseIndex [lsearch \
  35.             "Analysis SystemDesign ObjectDesign Implementation" \
  36.             [[$pv phase] name]]
  37.     return $this
  38. }
  39.  
  40.  
  41. Class ReportSystems : {ReportBase} {
  42.     constructor
  43.  
  44.     attribute printProps
  45.  
  46.     method corporateReport
  47.     method projectReport
  48.     method configReport
  49.     method phaseReport
  50.     method doReport
  51. }
  52.  
  53.  
  54. constructor ReportSystems {class this} {
  55.     set this [ReportBase::constructor $class $this]
  56.     if { [lsearch $Options "properties"] != -1 } {
  57.         $this printProps 1
  58.     } else {
  59.         $this printProps 0
  60.     }
  61.     $this reportName "Systems"
  62.     return $this
  63. }
  64.  
  65.  
  66. method ReportSystems::corporateReport {this} {
  67.     foreach proj [[$this corporate] projects] {
  68.     foreach cv [$proj configVersions] {
  69.         foreach pv [$cv phaseVersions] {
  70.         foreach sv [query "system.type == system" $pv.systemVersions] {
  71.             lappend data [ReportSystemsObject new $proj $cv $pv $sv]
  72.         }
  73.         }
  74.     }
  75.     }
  76.  
  77.     return [$this doReport data]
  78. }
  79.  
  80.  
  81. method ReportSystems::projectReport {this} {
  82.     set proj [$this project]
  83.     foreach cv [[$this project] configVersions] {
  84.     foreach pv [$cv phaseVersions] {
  85.         foreach sv [query "system.type == system" $pv.systemVersions] {
  86.         lappend data [ReportSystemsObject new $proj $cv $pv $sv]
  87.         }
  88.     }
  89.     }
  90.  
  91.     return [$this doReport data]
  92. }
  93.  
  94.  
  95. method ReportSystems::configReport {this} {
  96.     set proj [$this project]
  97.     set cv   [$this configV]
  98.     foreach pv [[$this configV] phaseVersions] {
  99.     foreach sv [query "system.type == system" $pv.systemVersions] {
  100.         lappend data [ReportSystemsObject new $proj $cv $pv $sv]
  101.     }
  102.     }
  103.  
  104.     return [$this doReport data]
  105. }
  106.  
  107.  
  108. method ReportSystems::phaseReport {this} {
  109.     set proj [$this project]
  110.     set cv   [$this configV]
  111.     set pv   [$this phaseV]
  112.     foreach sv [query "system.type == system" $this.phaseV.systemVersions] {
  113.     lappend data [ReportSystemsObject new $proj $cv $pv $sv]
  114.     }
  115.  
  116.     return [$this doReport data]
  117. }
  118.  
  119.  
  120. method ReportSystems::doReport {this v_data} {
  121.     upvar $v_data data
  122.     if ![info exists data] { return 0 }
  123.     set report [$this report]
  124.  
  125.     $report header {
  126.     [$this report] print System             25
  127.     [$this report] print Phase              20
  128.     [$this report] print "Selected version" 25
  129.     [$this report] print Status             12
  130.     [$this report] print Project            20
  131.     [$this report] print Configuration      25
  132.     [$this report] line
  133.     [$this report] line
  134.     }
  135.  
  136.     set prevSystemName ""
  137.  
  138.     foreach record [osort projectName configFullName systemName \
  139.                                 phaseIndex $data] {
  140.     set systemName [$record systemName]
  141.  
  142.     if { $systemName != $prevSystemName || [$this printProps] } {
  143.         $report print $systemName 24
  144.         set prevSystemName $systemName
  145.     } else {
  146.         $report space 24
  147.     }
  148.  
  149.     $report space
  150.     $report print [$record phaseName] 19
  151.     $report space
  152.     $report print [$record systemVersionName] 24
  153.     $report space
  154.     $report print [[$record systemVersion] status ] 11
  155.     $report space
  156.     $report print [$record projectName] 19
  157.     $report space
  158.     $report print [$record configFullName] line
  159.  
  160.         if [$this printProps] {
  161.         $this showProperties [$record systemVersion]
  162.         }
  163.     }
  164.  
  165.     $report page
  166.     $report remove header
  167.  
  168.     return 0
  169. }
  170.  
  171. set executeMe [ReportSystems new]
  172.