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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)drssystemo.tcl    /main/titanic/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)drssystemo.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 "drslinkabl.tcl"
  16. require "drssmmodel.tcl"
  17.  
  18. Class DrsSystemObject : {DrsLinkableObject DrsSMModelObject} {
  19.     method destructor
  20.     constructor
  21.     method childLevelVersions
  22.     method getClassFeatures
  23.     method getChildLevels
  24.     method getLocalFileVersions
  25.     method getMatrices
  26.     method getPhase
  27.     method installClassFeatures
  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 [ReqDriver::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 [ReqDriver::getVersion $matrix]]
  153.             $drsQItem qualifier [$item qualifier]
  154.             $drsQItem driver [$this driver]
  155.             set dxlResult [$drsQItem install]
  156.             if ![llength $dxlResult] {
  157.                 return
  158.             }
  159.             }
  160.         }
  161.         }
  162.     }
  163. }
  164.  
  165. # Do not delete this line -- regeneration end marker
  166.  
  167.