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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)drssystemo.tcl    /main/hindenburg/10
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)drssystemo.tcl    /main/hindenburg/10   7 Mar 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "drslinkabl.tcl"
  15. require "drssmmodel.tcl"
  16.  
  17. #Class DrsSystemObject : {DrsLinkableObject DrsSMModelObject} {
  18. #    method destructor
  19. #    constructor
  20. #    method childLevelVersions
  21. #    method getClassFeatures
  22. #    method getChildLevels
  23. #    method getLocalFileVersions
  24. #    method getMatrices
  25. #    method getPhase
  26. #    method installClassFeatures
  27. #    method show
  28. #    attribute classFeatures
  29. #    attribute localFileVersions
  30. #    attribute matrices
  31. #}
  32.  
  33. method DrsSystemObject::destructor {this} {
  34.     # Start destructor user section
  35.     # End destructor user section
  36.     $this DrsLinkableObject::destructor
  37.     $this DrsSMModelObject::destructor
  38. }
  39.  
  40. constructor DrsSystemObject {class this system systemV pLevel pLevelV} {
  41.     set this [DrsLinkableObject::constructor $class $this $system $systemV $pLevel $pLevelV]
  42.     set this [DrsSMModelObject::constructor $class $this [$system systemVersions]]
  43.  
  44.     $this levelVersions [$system systemVersions]
  45.     return $this
  46. }
  47.  
  48. method DrsSystemObject::childLevelVersions {this} {
  49.     set versOfCurrLevel [[$this level] systemVersions]
  50.         set  thisSysVers [searchOnVersion $versOfCurrLevel [$this versionId]]
  51.         if [llength $thisSysVers] {
  52.             set childLevelVersions \
  53.         [concat [$this getLocalFileVersions] [$this getClassFeatures]]
  54.         } else {
  55.             set childLevelVersions ""
  56.         }
  57.         return [concat $childLevelVersions [$this getItemDefs]]
  58. }
  59.  
  60. method DrsSystemObject::getClassFeatures {this} {
  61.     set sysV [$this getLevelV]
  62.     set features [$this classFeatures]
  63.     if [llength $features] {
  64.         return $features
  65.     }
  66.     set configV [$this getConfigVersion]
  67.     foreach matrix [$this getMatrices] {
  68.         $matrix loadRowData "name_type" rows
  69.         foreach rowData $rows {
  70.         foreach item [lindex $rowData 1] {
  71.             set itemType [$item type]
  72.             set workItem [$sysV findDefinition $item $configV]
  73.             if {$itemType == "de"} { 
  74.             lappend features $workItem.Attribute
  75.             }
  76.             if {$itemType == "pe"} {
  77.             lappend features $workItem.Operation
  78.             }
  79.         }
  80.         }
  81.     }
  82.     $this classFeatures $features
  83.     return $features
  84.     
  85. }
  86.  
  87. method DrsSystemObject::getChildLevels {this} {
  88.     set childLevels [$this childLevels]
  89.     if [llength $childLevels] {
  90.         return $childLevels
  91.     }
  92.     set system [$this level]
  93.     set childLevels [concat [$this getChildObjects] [$system files]]
  94.     $this childLevels [concat [$this getClassFeatures] $childLevels]
  95.     $this childLevels $childLevels
  96.     return $childLevels
  97. }
  98.  
  99. method DrsSystemObject::getLocalFileVersions {this} {
  100.     set localFileVersions [$this localFileVersions]
  101.     if [llength $localFileVersions] {
  102.         return
  103.     }
  104.     set sysV [$this getLevelV]
  105.     if ![llength $sysV] {
  106.         return
  107.     }
  108.     set system [$sysV system]
  109.     set localFileVersions ""
  110.     set matrices ""
  111.     foreach fileV [$sysV localFileVersions] {
  112.         set file [$fileV file]
  113.         if {[$file type] == "cdm"} {
  114.         lappend matrices $fileV
  115.         } else {
  116.         lappend localFileVersions $fileV
  117.         }
  118.     }
  119.     $this localFileVersions $localFileVersions
  120.     $this matrices $matrices
  121.     return $localFileVersions
  122. }
  123.  
  124. method DrsSystemObject::getMatrices {this} {
  125.     $this getLocalFileVersions
  126.     return [$this matrices]
  127. }
  128.  
  129. method DrsSystemObject::getPhase {this} {
  130.     set system [$this level]
  131.         return [$system phase]
  132. }
  133.  
  134. method DrsSystemObject::installClassFeatures {this} {
  135.     set sysV [$this getLevelV]
  136.     set system [$sysV system]
  137.     set configV [$this getConfigVersion]
  138.     set smModel [$this getSMModel]
  139.     set st [SMTypeDB::find "Class"] 
  140.     foreach matrix [$this getMatrices] {
  141.         set file [$matrix file]
  142.         set fileItem [$file item]    
  143.         if ![llength [$smModel getNamedSMObjects $st $fileItem]] {
  144.         continue
  145.         }
  146.         $matrix loadRowData "name_type" rows
  147.         foreach rowData $rows {
  148.         foreach item [lindex $rowData 1] {
  149.             set workItem [$sysV findDefinition $item $configV]
  150.             set itemType [$item type]
  151.             if {$itemType == "de" || $itemType == "pe"} {
  152.             set drsQItem [DrsQItemObject new $workItem $file [getVersion $matrix]]
  153.             $drsQItem qualifier [$item qualifier]
  154.             set dxlResult [$drsQItem install]
  155.             if ![llength $dxlResult] {
  156.                 return
  157.             }
  158.             }
  159.         }
  160.         }
  161.     }
  162. }
  163.  
  164. # Do not delete this line -- regeneration end marker
  165.  
  166.