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

  1. #---------------------------------------------------------------------------
  2. #
  3. #    (c) Cadre Technologies Inc. 1995
  4. #
  5. #    File:        %W%
  6. #    Author:        Harm Leijendeckers
  7. #    Description:    Report on Components and properties
  8. #    Usage in:    SystemVersion and FileVersion
  9. #
  10. #---------------------------------------------------------------------------
  11. # SccsId = %W%    %G%    Copyright 1996 Cadre Technologies Inc.
  12.  
  13.  
  14. Class ReportCompObject : {GCObject} {
  15.     constructor
  16.  
  17.     attribute component
  18.     attribute name
  19. }
  20.  
  21.  
  22. constructor ReportCompObject {class this component name} {
  23.     set this [GCObject::constructor $class $this]
  24.     $this component $component
  25.     $this name      $name
  26.     return $this
  27. }
  28.  
  29.  
  30. Class ReportComponents : {ReportBase} {
  31.     constructor
  32.     method systemReport
  33.     method fileReport
  34.  
  35.     method doReport
  36.     method getName
  37.     method doProperties
  38. }
  39.  
  40.  
  41. constructor ReportComponents {class this} {
  42.     set this [ReportBase::constructor $class $this]
  43.     $this reportName "Components and Properties"
  44.     return $this
  45. }
  46.  
  47.  
  48. method ReportComponents::systemReport {this} {
  49.     GCControl collectInterval 9999
  50.     set components [query -s components "file.type != cdm" \
  51.                     [[$this systemV] localFileVersions]]
  52.     return [$this doReport components 1]
  53. }
  54.  
  55.  
  56. method ReportComponents::fileReport {this} {
  57.     set components [[$this fileV] components]
  58.     return [$this doReport components 0]
  59. }
  60.  
  61.  
  62. method ReportComponents::doReport {this v_components onSystemLevel} {
  63.     upvar $v_components components
  64.     if [lempty $components] { return 0 }
  65.  
  66.     foreach comp $components {
  67.     lappend compobjects [ReportCompObject new $comp [$this getName $comp]]
  68.     }
  69.  
  70.     set report [$this report]
  71.  
  72.     $report header {
  73.     [$this report] print Component 46
  74.     [$this report] print Type 20
  75.     if $onSystemLevel {
  76.         [$this report] print Diagram
  77.     }
  78.     [$this report] line
  79.     [$this report] line
  80.     }
  81.  
  82.     foreach compobj [osort component.type name $compobjects] {
  83.         set comp [$compobj component]
  84.     $report print [$compobj name] 45
  85.     $report space
  86.     $report print [$comp type] 19
  87.     if $onSystemLevel {
  88.         $report space
  89.         $report print [[$comp diagram] text]
  90.     }
  91.     $report line
  92.  
  93.     # print properties
  94.     if [lempty $Options] {
  95.         $this doProperties $comp.properties
  96.     } else {
  97.         $this doProperties [query "name in {$Options}" $comp.properties]
  98.     }
  99.  
  100.     $report line
  101.     }
  102.  
  103.     $report page
  104.     $report remove header
  105.  
  106.     return 0
  107. }
  108.  
  109.  
  110. method ReportComponents::getName {this comp} {
  111.     set queryConstraint "type in {name name_type}"
  112.     case [$comp objType] in {
  113.     { Node ConnectedNode }
  114.         { return [query -s value $queryConstraint $comp.labels] }
  115.  
  116.     Connector
  117.         {
  118.         set from [query -s value $queryConstraint $comp.from.labels]
  119.         set to   [query -s value $queryConstraint $comp.to.labels  ]
  120.         return "($from - $to)"
  121.         }
  122.  
  123.     { Segment Row Cell }
  124.         {
  125.         # should not occur
  126.         return ""
  127.         }
  128.     }
  129. }
  130.  
  131.  
  132. method ReportComponents::doProperties {this properties} {
  133.     if [lempty $properties] {
  134.     return
  135.     }
  136.     set report [$this report]
  137.     foreach prop [osort name $properties] {
  138.     $report space 5
  139.     $report print [$prop name]: 23
  140.     $report space
  141.     $report print [$prop value] 49 line
  142.     }
  143. }
  144.  
  145.  
  146. set executeMe [ReportComponents new]
  147.