home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / systems.tcl < prev    next >
Text File  |  1996-06-03  |  4KB  |  164 lines

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