home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / reportbase.tcl < prev    next >
Text File  |  1996-11-20  |  6KB  |  239 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #    (c) Cadre Technologies Inc. 1995
  4. #
  5. #    File:        @(#)reportbase.tcl    /main/hindenburg/3
  6. #    Author:        Harm Leijendeckers
  7. #    Description:    Base of all report classes
  8. #
  9. #---------------------------------------------------------------------------
  10. # SccsId = @(#)reportbase.tcl    /main/hindenburg/3    20 Nov 1996    Copyright 1995 Cadre Technologies Inc.
  11.  
  12.  
  13. Class ReportBase : {GCObject} {
  14.     method destructor
  15.     constructor
  16.  
  17.     method setHeader
  18.     method setFooter
  19.     method corporateReport
  20.     method projectReport
  21.     method configReport
  22.     method phaseReport
  23.     method systemReport
  24.     method fileReport
  25.     method levelError
  26.     method execute
  27.  
  28.     attribute corporate
  29.     attribute project
  30.     attribute configV
  31.     attribute phaseV
  32.     attribute systemV
  33.     attribute fileV
  34.  
  35.     attribute report
  36.     attribute reportName
  37.     attribute logo1
  38.     attribute logo2
  39.     attribute logo3
  40.     attribute logo4
  41. }
  42.  
  43.  
  44. constructor ReportBase {class this} {
  45.     set this [GCObject::constructor $class $this]
  46.     $this report [Report new]
  47.     $this reportName unknown
  48.     $this logo1 ""
  49.     $this logo2 "ObjectTeam"
  50.     $this logo3 [versionInfo majorVersion].[versionInfo minorVersion].[versionInfo maintVersion]
  51.     $this logo4 ""
  52.     return $this
  53. }
  54.  
  55.  
  56. method ReportBase::destructor {this} {
  57.     [$this report] delete
  58. }
  59.  
  60.  
  61. method ReportBase::setHeader {this} {
  62.     # set a file-version header if on context level file
  63.     if ![[$this fileV] isNil] {
  64.     [$this report] header {
  65.         set report [$this report]
  66.         $report print - 131 fill line
  67.         $report print [$this logo1] 13 center break
  68.         $report print "|  "
  69.         $report print "Report       : [$this reportName]" 57
  70.         $report print "Date          : [$report date]" line
  71.         $report print [$this logo2] 13 center break
  72.         $report print "|  "
  73.         $report space 57
  74.         $report print "Creator       :\
  75.         [[[$this corporate] currentUser] name]" line
  76.         $report print [$this logo3] 13 center break
  77.         $report print "|  "
  78.         $report print "Project      : [[$this project] name]" 57
  79.         $report print "System Version:\
  80.         [[[$this systemV] system] name].[[$this systemV] versionName]"
  81.         $report line
  82.         $report print [$this logo4] 13 center break
  83.         $report print "|  "
  84.         $report print "Phase Version:\
  85.         [[[$this phaseV] phase] name].[[$this phaseV] versionName]" 57
  86.         $report print "File Version  :\
  87.         [[[$this fileV] file] qualifiedName].[[[$this fileV] file] \
  88.             type].[[$this fileV] versionName]"
  89.         $report line
  90.         $report print - 131 fill line
  91.         $report line
  92.     }
  93.  
  94.     return
  95.     }
  96.  
  97.     # header for levels project, configuration, phase and system
  98.     [$this report] header {
  99.     set report [$this report]
  100.     $report print - 131 fill line
  101.     $report print [$this logo1] 13 center break
  102.     $report print "|  "
  103.     $report print "Report               : [$this reportName]" 57
  104.     $report print "Date          : [$report date]" line
  105.     $report print [$this logo2] 13 center break
  106.     $report print "|  "
  107.     $report space 57
  108.     $report print "Creator       :\
  109.         [[[$this corporate] currentUser] name]" line
  110.     $report print [$this logo3] 13 center break
  111.     $report print "|  "
  112.     if ![[$this project] isNil] {
  113.         $report print "Project              :\
  114.         [[$this project] name]" 57
  115.         if ![[$this phaseV] isNil] {
  116.         $report print "Phase Version :\
  117.         [[[$this phaseV] phase] name].[[$this phaseV] versionName]"
  118.         }
  119.     }
  120.     $report line
  121.     $report print [$this logo4] 13 center break
  122.     $report print "|  "
  123.     if ![[$this configV] isNil] {
  124.         $report print "Configuration Version:\
  125.         [[[$this configV] config] name].[[$this configV] versionName]" 57
  126.         if ![[$this systemV] isNil] {
  127.         $report print "System Version:\
  128.         [[[$this systemV] system] name].[[$this systemV] versionName]"
  129.         }
  130.     }
  131.     $report line
  132.     $report print - 131 fill line
  133.     $report line
  134.     }
  135. }
  136.  
  137.  
  138. method ReportBase::setFooter {this} {
  139.     [$this report] footer {
  140.     [$this report] line
  141.     [$this report] print "- [[$this report] pageno] -" 131 center line
  142.     }
  143. }
  144.  
  145.  
  146. method ReportBase::corporateReport {this} {
  147.     foreach project [osort name [[$this corporate] projects]] {
  148.     $this project $project
  149.     if { [$this projectReport] == -1 } {
  150.         return -1
  151.     }
  152.     }
  153.     return 0
  154. }
  155.  
  156.  
  157. method ReportBase::projectReport {this} {
  158.     foreach configV [osort config.name versionNumber -versnum \
  159.     [[$this project] configVersions]] {
  160.         $this configV $configV
  161.         if { [$this configReport] == -1 } {
  162.         return -1
  163.         }
  164.     }
  165.     return 0
  166. }
  167.  
  168.  
  169. method ReportBase::configReport {this} {
  170.     foreach phaseV [[$this configV] phaseVersions] {
  171.     $this phaseV $phaseV
  172.     if { [$this phaseReport] == -1 } {
  173.         return -1
  174.     }
  175.     }
  176.     return 0
  177. }
  178.  
  179.  
  180. method ReportBase::phaseReport {this} {
  181.     foreach systemV [osort system.name versionNumber -versnum \
  182.     [query "system.type == system" [[$this phaseV] systemVersions]]] {
  183.         $this systemV $systemV
  184.         if { [$this systemReport] == -1 } {
  185.         return -1
  186.         }
  187.     }
  188.     return 0
  189. }
  190.  
  191.  
  192. method ReportBase::systemReport {this} {
  193.     foreach fileV [osort file.type file.name versionNumber -versnum \
  194.     [[$this systemV] localFileVersions]] {
  195.         $this fileV $fileV
  196.         if { [$this fileReport] == -1 } {
  197.         return -1
  198.         }
  199.     }
  200.     return 0
  201. }
  202.  
  203.  
  204. method ReportBase::fileReport {this} {
  205.     $this levelError
  206.     return -1
  207. }
  208.  
  209.  
  210. method ReportBase::levelError {this} {
  211.     [$this report] print "This report cannot be executed on context "
  212.     [$this report] print "level [[ClientContext::global] currentLevel]"
  213.     [$this report] line
  214. }
  215.  
  216.  
  217. method ReportBase::execute {this} {
  218.     set cc [ClientContext::global]
  219.     $this corporate [$cc currentCorporate]
  220.     $this project   [$cc currentProject]
  221.     $this configV   [$cc currentConfig]
  222.     $this phaseV    [$cc currentPhase]
  223.     $this systemV   [$cc currentSystem]
  224.     $this fileV     [$cc currentFile]
  225.  
  226.     $this setHeader
  227.     $this setFooter
  228.  
  229.     case [$cc currentLevel] in {
  230.     Corporate    { $this corporateReport }
  231.     Project        { $this projectReport }
  232.     Config        { $this configReport }
  233.     Phase        { $this phaseReport }
  234.     System        { $this systemReport }
  235.     File        { $this fileReport }
  236.     default        { $this levelError }
  237.     }
  238. }
  239.