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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)msumlgener.tcl    /main/titanic/2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)msumlgener.tcl    /main/titanic/2   29 Aug 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. #require "msumleleme.tcl"
  15.  
  16. Class MSUMLGeneralization : {MSUMLElement} {
  17.     constructor
  18.     method destructor
  19.     method ot2ms
  20.     method ms2ot
  21.     method promoter
  22.     method subType
  23.     method superType
  24.     attribute _subType
  25.     attribute _superType
  26.     attribute smGenNode
  27. }
  28.  
  29. constructor MSUMLGeneralization {class this typeName smGenNode} {
  30.     set this [MSUMLElement::constructor $class $this $typeName]
  31.     $this smGenNode $smGenNode
  32.     # Start constructor user section
  33.     # End constructor user section
  34.     return $this
  35. }
  36.  
  37. method MSUMLGeneralization::destructor {this} {
  38.     set ref [$this _subType]
  39.     if {$ref != ""} {
  40.         [$ref _generalizationSet] removeValue $this
  41.     }
  42.     set ref [$this _superType]
  43.     if {$ref != ""} {
  44.         [$ref _specializationSet] removeValue $this
  45.     }
  46.     # Start destructor user section
  47.     # End destructor user section
  48.     $this MSUMLElement::destructor
  49. }
  50.  
  51. method MSUMLGeneralization::ot2ms {this package} {
  52.     set superType [$this superType]
  53.     set subType [$this subType]
  54.  
  55.     set genSmNode [$superType  smClass]
  56.     set specSmNode [$subType smClass]
  57.  
  58.     set genName [[$genSmNode getItem] name]
  59.     set specName [[$specSmNode getItem] name]
  60.  
  61.     set uSuperType [$superType msUmlObject]
  62.     set uSubType [$subType msUmlObject]
  63.     $uSuperType setAsTo
  64.     $uSubType setAsFrom
  65.     global trans
  66.     $trans begin
  67.     set myGen [$package createGeneralization "$specName->$genName"]
  68.     $trans commit
  69.     #$this saveFreeTextProp $myGen [$workItem properties]
  70.     return $myGen 
  71. }
  72.  
  73. method MSUMLGeneralization::ms2ot {this rtDiag} {
  74.     #do not define this class
  75.     #set superClass [[$this superType] ms2ot $rtDiag]
  76.     #set subClass [[$this subType] ms2ot $rtDiag]
  77.  
  78.     set superName  [[$this superType] name]
  79.     set superClass [$rtDiag findClass $superName]
  80.     if ![llength $superClass] {
  81.         set superClass [$rtDiag addClass $superName]
  82.         $superClass setProp {is_folded} {1} comp
  83.     }
  84.  
  85.     set subName  [[$this subType] name]
  86.     set subClass [$rtDiag findClass $subName]
  87.     if ![llength $subClass] {
  88.         set subClass [$rtDiag addClass $subName]
  89.         $subClass setProp {is_folded} {1} comp
  90.     }
  91.  
  92.     set overLap 0
  93.     set myGen [$subClass addGeneralization $superClass $overLap]
  94.     $this loadFreeTextProp $myGen
  95.     return $myGen
  96. }
  97.  
  98. method MSUMLGeneralization::promoter {this} {
  99.     # this is called when importing from MS Repository
  100.     $this MSUMLElement::promoter
  101.     set superClass [$this getSuperTypeAsUML]
  102.     MSUMLClass promote $superClass
  103.     $this superType $superClass
  104.     set subClass [$this getSubTypeAsUML]
  105.     MSUMLClass promote $subClass
  106.     $this subType $subClass
  107. }
  108.  
  109. # Do not delete this line -- regeneration end marker
  110.  
  111. method MSUMLGeneralization::subType {this args} {
  112.     if {$args == ""} {
  113.         return [$this _subType]
  114.     }
  115.     set ref [$this _subType]
  116.     if {$ref != ""} {
  117.         [$ref _generalizationSet] removeValue $this
  118.     }
  119.     set obj [lindex $args 0]
  120.     if {$obj != ""} {
  121.         [$obj _generalizationSet] append $this
  122.     }
  123.     $this _subType $obj
  124. }
  125.  
  126. method MSUMLGeneralization::superType {this args} {
  127.     if {$args == ""} {
  128.         return [$this _superType]
  129.     }
  130.     set ref [$this _superType]
  131.     if {$ref != ""} {
  132.         [$ref _specializationSet] removeValue $this
  133.     }
  134.     set obj [lindex $args 0]
  135.     if {$obj != ""} {
  136.         [$obj _specializationSet] append $this
  137.     }
  138.     $this _superType $obj
  139. }
  140.  
  141.