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

  1. #---------------------------------------------------------------------------
  2. #
  3. #    (c) Cadre Technologies Inc. 1995
  4. #
  5. #    File:        @(#)items.tcl    /main/hindenburg/1
  6. #    Author:        Harm Leijendeckers
  7. #    Description:    Report on WorkItems and properties
  8. #    Usage in:    SystemVersion and FileVersion
  9. #
  10. #---------------------------------------------------------------------------
  11. # SccsId = @(#)items.tcl    /main/hindenburg/1    11 Dec 1996    Copyright 1995 Cadre Technologies Inc.
  12.  
  13.  
  14. Class ReportItems : {ReportBase} {
  15.     constructor
  16.     method systemReport
  17.     method fileReport
  18.  
  19.     method doReport
  20.     method doName
  21.     method doProperties
  22.     method getDiagramWorkItems
  23. }
  24.  
  25.  
  26. constructor ReportItems {class this} {
  27.     set this [ReportBase::constructor $class $this]
  28.     $this reportName "Items and Properties"
  29.     return $this
  30. }
  31.  
  32.  
  33. method ReportItems::systemReport {this} {
  34.     $this doReport [[$this systemV] definedItems]
  35. }
  36.  
  37.  
  38. method ReportItems::fileReport {this} {
  39.     set fileV [$this fileV]
  40.     set configV [$this configV]
  41.     set allWorkItems [$fileV definedItems]
  42.  
  43.     if [$fileV isA Diagram] {
  44.     set allWorkItems [flatten [concat $allWorkItems \
  45.                   [$this getDiagramWorkItems $fileV $configV]]]
  46.                   #[$fileV definedItemRefs $configV]]]
  47.     }
  48.  
  49.     set sv [$this systemV]
  50.     foreach it [query "type == cl && item.qualifier == [ORB::nil]" \
  51.               $allWorkItems] {
  52.     set cdm [$sv findFileVersion -byNameAndType [$it name] cdm]
  53.     if ![$cdm isNil] {
  54.         set allWorkItems [concat $allWorkItems \
  55.                      [$this getDiagramWorkItems $cdm $configV]]
  56.     }
  57.     }
  58.  
  59.     $this doReport [flatten $allWorkItems]
  60. }
  61.  
  62.  
  63. method ReportItems::doReport {this allWorkItems} {
  64.     if [lempty $allWorkItems] { return 0 }
  65.     set allWorkItems $allWorkItems
  66.  
  67.     set report [$this report]
  68.     $report header {
  69.     [$this report] print Name 34
  70.     [$this report] print Type 5
  71.     [$this report] print Status 8
  72.     [$this report] print "Scope" 9
  73.     [$this report] print "Property Name" 24
  74.     [$this report] print "Property Value" line
  75.     [$this report] line
  76.     }
  77.  
  78.  
  79.     # print properties
  80.     # two seperate loops for speed optimalization
  81.     if [lempty $Options] {
  82.     foreach wi [osort item.qualifiedName $allWorkItems] {
  83.         $this doName $wi
  84.         set propObj [$wi properties]
  85.         if [$propObj isNil] {
  86.         $report line
  87.         continue
  88.         }
  89.         $this doProperties [$propObj properties]
  90.     }
  91.     } else {
  92.     foreach wi [osort item.qualifiedName $allWorkItems] {
  93.         $this doName $wi
  94.         set propObj [$wi properties]
  95.         if [$propObj isNil] {
  96.         $report line
  97.         continue
  98.         }
  99.         $this doProperties [query "name in {$Options}" \
  100.                       [$propObj properties]]
  101.     }
  102.     }
  103.  
  104.     $report page
  105.     $report remove header
  106.  
  107.     return 0
  108. }
  109.  
  110.  
  111. method ReportItems::doName {this wi} {
  112.     set item [$wi item]
  113.     set qual [$item qualifier]
  114.     set report [$this report]
  115.     $report print [$wi qualifiedName] 33
  116.     $report space
  117.     $report print [$wi type] 4 break
  118.     $report space
  119.     $report print [$wi status] 7
  120.     $report space
  121.     if [$qual isNil] {
  122.     regsub -all scope [$wi scope] "" scope
  123.     $report print $scope 8
  124.     $report space
  125.     } else {
  126.     $report space 9
  127.     }
  128. }
  129.  
  130.  
  131. method ReportItems::doProperties {this properties} {
  132.     set report [$this report]
  133.     if [lempty $properties] {
  134.     $report line
  135.     return
  136.     }
  137.     foreach prop [osort name $properties] {
  138.     if ![$report queued] { $report space 56 }
  139.     $report print [$prop name] 23
  140.     $report space
  141.     $report print [$prop value] 49 line
  142.     }
  143. }
  144.  
  145.  
  146. method ReportItems::getDiagramWorkItems {this diagram configV} {
  147.     set result ""
  148.     set components [$diagram components]
  149.     set connectors [query "objType == Connector" $components]
  150.  
  151.     set items [concat [[$diagram file] item] \
  152.                [query $components.labels.itemRefs.item] \
  153.                [query $connectors.segments.labels.itemRefs.item]]
  154.  
  155.     foreach item $items {
  156.     set wi [$diagram findDeclaration $item $configV]
  157.     if ![$wi isNil] {
  158.         set result [concat $result $wi]
  159.     }
  160.     }
  161.  
  162.     return [flatten $result]
  163. }
  164.  
  165.  
  166. set executeMe [ReportItems new]
  167.