home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / drstreeobj.tcl < prev    next >
Text File  |  1997-02-14  |  5KB  |  165 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)drstreeobj.tcl    /main/hindenburg/12
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)drstreeobj.tcl    /main/hindenburg/12   14 Feb 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "drsobject.tcl"
  15.  
  16. #Class DrsTreeObject : {DrsObject} {
  17. #    constructor
  18. #    method destructor
  19. #    method getChildLevels
  20. #    method getParentPropertyObject
  21. #    method getPropertyObject
  22. #    method getTimeStampObject
  23. #    method synObjects
  24. #    method saveReference
  25. #    method deleteObsolete
  26. #    method show
  27. #    method filter
  28. #    method getLevelV
  29. #    attribute childLevels
  30. #    attribute propertyObject
  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  ${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 [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.                         ${FORMALMODULE}_ParentOTVersions]
  88.         $parVOfChildLevDict foreach childVersId childsParentVersIds {
  89.         if { [lsearch $childsParentVersIds $currVersId] != -1 } {
  90.             if ![llength [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 $FORMALMODULE $doorsRef
  105.  
  106.  
  107.     # for synchronization, just a dummy
  108.     set propObj [$this getPropertyObject]
  109.     set timeStamp ""
  110.     $propObj setProperty ${FORMALMODULE}_TIMESTAMP $timeStamp
  111.  
  112.     # now the real time stamp
  113.     set timeStampObj [$this getTimeStampObject]
  114.     set timeStamp [$timeStampObj updateTime]
  115.     $levelObject setProperty ${FORMALMODULE}_TIMESTAMP $timeStamp
  116.  
  117.     #$this addDoorsRefToCorp [[$thisLevel project] name] $doorsRef
  118.     set parentLevel [$this getParentPropertyObject]
  119.     $parentLevel setProperty ${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 $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.