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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)drstreeobj.tcl    /main/titanic/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)drstreeobj.tcl    /main/titanic/4   29 Aug 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require reqdriver.tcl
  13. # End user added include file section
  14.  
  15. require "drsobject.tcl"
  16.  
  17. Class DrsTreeObject : {DrsObject} {
  18.     constructor
  19.     method destructor
  20.     method getChildLevels
  21.     method getParentPropertyObject
  22.     method getPropertyObject
  23.     method getTimeStampObject
  24.     method synObjects
  25.     method saveReference
  26.     method deleteObsolete
  27.     method show
  28.     method filter
  29.     method getLevelV
  30.     attribute childLevels
  31. }
  32.  
  33. constructor DrsTreeObject {class this level} {
  34.     set this [DrsObject::constructor $class $this $level]
  35.     # Start constructor user section
  36.     # End constructor user section
  37.     return $this
  38. }
  39.  
  40. method DrsTreeObject::destructor {this} {
  41.     # Start destructor user section
  42.     # End destructor user section
  43.     $this DrsObject::destructor
  44. }
  45.  
  46. method DrsTreeObject::getChildLevels {this} {
  47.     return [$this childLevels]    
  48. }
  49.  
  50. method DrsTreeObject::getParentPropertyObject {this} {
  51.     return [$this parentLevel]
  52. }
  53.  
  54. method DrsTreeObject::getPropertyObject {this} {
  55.     return [$this level]
  56. }
  57.  
  58. method DrsTreeObject::getTimeStampObject {this} {
  59.     return [$this getLevelV]
  60. }
  61.  
  62. method DrsTreeObject::synObjects {this} {
  63.     set levelType [$this levelType]
  64.     set levelName [$this levelName]
  65.     [.main messageArea] message  "Checking Diagram Objects of $levelType $levelName"
  66.     set currObject [$this level]
  67.     set currVersId [$this versionId]
  68.     set parVOfChildLevDict [Dictionary new]
  69.     set childInDoorsDict [Dictionary new]
  70.     $childInDoorsDict contents \
  71.           [$currObject  getPropertyValue  ${DrsDriver::FORMALMODULE}_SelectedItems]
  72.  
  73.     # for each selected item and its versions which is selected in one
  74.     # of the versions of the curren phase
  75.     set thisChildLevelVersions [$this childLevelVersions]
  76.     $childInDoorsDict foreach childName childVersionIds {
  77.         set childLevels [$this getChildLevels]
  78.         set childLevel [ReqDriver::searchOnName $childLevels $childName]
  79.         if ![llength $childLevel ] {
  80.         continue
  81.         }
  82.         if [$childLevel isA WorkItem] {
  83.         set childLevel [$childLevel properties]
  84.         }
  85.         # the back reference
  86.         $parVOfChildLevDict contents [$childLevel  getPropertyValue  \
  87.                         ${DrsDriver::FORMALMODULE}_ParentOTVersions]
  88.         $parVOfChildLevDict foreach childVersId childsParentVersIds {
  89.         if { [lsearch $childsParentVersIds $currVersId] != -1 } {
  90.             if ![llength [ReqDriver::searchOnNameAndVersion $thisChildLevelVersions\
  91.                          $childName $childVersId]] {
  92.             $this deleteObsolete $childLevel $childVersId $currObject $currVersId
  93.             }
  94.         }
  95.         }
  96.      }
  97.  
  98.     return "1"
  99. }
  100.  
  101. method DrsTreeObject::saveReference {this levelObject doorsRef selItems} {
  102.     set thisLevel [$this level]
  103.     set doorsRef [lindex $doorsRef 0]
  104.     $levelObject setProperty ${DrsDriver::FORMALMODULE} $doorsRef
  105.  
  106.  
  107.     # for synchronization, just a dummy
  108.     set propObj [$this getPropertyObject]
  109.     set timeStamp ""
  110.     $propObj setProperty ${DrsDriver::FORMALMODULE}_TIMESTAMP $timeStamp
  111.  
  112.     # now the real time stamp
  113.     set timeStampObj [$this getTimeStampObject]
  114.     set timeStamp [$timeStampObj updateTime]
  115.     $levelObject setProperty ${DrsDriver::FORMALMODULE}_TIMESTAMP $timeStamp
  116.  
  117.     #$this addDoorsRefToCorp [[$thisLevel project] name] $doorsRef
  118.     set parentLevel [$this getParentPropertyObject]
  119.     $parentLevel setProperty ${DrsDriver::FORMALMODULE}_SelectedItems $selItems
  120. }
  121.  
  122. method DrsTreeObject::deleteObsolete {this childLevel childVersId currObject currVersId} {
  123.     if [$childLevel isA ItemProperties] {
  124.         set childLevel [$childLevel workItem]
  125.         set doorsObject [DrsSMItemObject new $childLevel \
  126.                 $childVersId $currObject $currVersId]
  127.     } else {
  128.         set doorsObject [Drs[$childLevel ORB_class]Object new \
  129.                 $childLevel $childVersId $currObject $currVersId]
  130.     }
  131.     $doorsObject synObjects
  132.     $doorsObject deleteObject
  133.  
  134. }
  135.  
  136. method DrsTreeObject::show {this majorOper minorOper} {
  137.     set levelName [$this levelName]
  138.     set levelType [$this levelType]
  139.     [.main messageArea] message  "Processing $levelName"
  140.         set dxlCommand [$this dxlCommand]
  141.         set thisLevel [$this getPropertyObject]
  142.         set doorsObjectId [$thisLevel getPropertyValue ${DrsDriver::FORMALMODULE}]
  143.         if {[llength $doorsObjectId] && $doorsObjectId > 0 } {
  144.             set doorsObject [$dxlCommand doorsObjectFind $doorsObjectId]
  145.             $dxlCommand doorsObject$majorOper $doorsObject $minorOper
  146.         }
  147. }
  148.  
  149. method DrsTreeObject::filter {this majorOper minorOper} {
  150.     set dxlCommand [$this getDxlCommand]
  151.         if {$minorOper == "All"} {
  152.             $dxlCommand doorsObject$majorOper "" $minorOper
  153.             return
  154.         }
  155.         $this show $majorOper $minorOper
  156.         return [$this dxlCommand]
  157. }
  158.  
  159. method DrsTreeObject::getLevelV {this} {
  160.     
  161. }
  162.  
  163. # Do not delete this line -- regeneration end marker
  164.  
  165.