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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)msumlpacka.tcl    /main/hindenburg/10
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)msumlpacka.tcl    /main/hindenburg/10   3 Jun 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 MSUMLPackage : {MSUMLElement} {
  17.     constructor
  18.     method destructor
  19.     method ms2ot
  20.     method promoter
  21.     method model
  22.     method elementSet
  23.     method addElement
  24.     method removeElement
  25.     attribute _model
  26.     attribute smModel
  27.     attribute _elementSet
  28. }
  29.  
  30. constructor MSUMLPackage {class this typeName smModel} {
  31.     set this [MSUMLElement::constructor $class $this $typeName]
  32.     $this smModel $smModel
  33.     $this _elementSet [List new]
  34.     # Start constructor user section
  35.     [$this elementSet] foreach element {
  36.         $element delete
  37.     }
  38.     # End constructor user section
  39.     return $this
  40. }
  41.  
  42. method MSUMLPackage::destructor {this} {
  43.     set ref [$this _model]
  44.     if {$ref != ""} {
  45.         [$ref _packageSet] removeValue $this
  46.     }
  47.     foreach ref [[$this _elementSet] contents] {
  48.         $ref _package ""
  49.     }
  50.     # Start destructor user section
  51.     # End destructor user section
  52.     $this MSUMLElement::destructor
  53. }
  54.  
  55. method MSUMLPackage::ms2ot {this {diag ""} {phaseName ""} {confName ""} {confV ""}} {
  56.     set cv [[ClientContext::global] currentConfig]
  57.     set myName [$this name]
  58.     puts "Package '$myName'"
  59.     if [llength $phaseName] {
  60.         set $myName [REDiagram new [$this name] [$this name] $phaseName $phaseName ]
  61.     } else {
  62.         set $myName [REDiagram new [$this name] [$this name]]
  63.     }
  64.     set diag [set $myName]
  65.     [$this elementSet] foreach uElement {
  66.         set uType [$uElement objectType]
  67.         if {$uType == "UMLPackage"} {
  68.         $uElement ms2ot $diag $phaseName 
  69.         } else {
  70.         $uElement ms2ot $diag
  71.         }
  72.     }
  73.     
  74.     set tmpSaveFileName [args_file {}]
  75.     $diag save $tmpSaveFileName
  76.     set resultFileName [lindex $argv 0]
  77.     if [file exists $resultFileName] {
  78.         set resultFile [open $resultFileName a]
  79.     } else {
  80.         set resultFile [open $resultFileName w]
  81.     }
  82.     set tmpFile [open $tmpSaveFileName r]
  83.     set tmpFileResult [read $tmpFile]
  84.     puts $resultFile $tmpFileResult
  85.     close $tmpFile
  86.     close $resultFile
  87.     unlink $tmpSaveFileName
  88. }
  89.  
  90. method MSUMLPackage::promoter {this} {
  91.     $this MSUMLElement::promoter
  92.     $this _elementSet [List new]
  93.     set noOfElements [$this getNoOfElements]
  94.     for {set i 1} {$i <= $noOfElements} {incr i} {
  95.         set umlElement [$this getElementAsUML $i]
  96.         MS[$umlElement property objectType] promote $umlElement
  97.         $this addElement $umlElement
  98.     }
  99. }
  100.  
  101. # Do not delete this line -- regeneration end marker
  102.  
  103. method MSUMLPackage::model {this args} {
  104.     if {$args == ""} {
  105.         return [$this _model]
  106.     }
  107.     set ref [$this _model]
  108.     if {$ref != ""} {
  109.         [$ref _packageSet] removeValue $this
  110.     }
  111.     set obj [lindex $args 0]
  112.     if {$obj != ""} {
  113.         [$obj _packageSet] append $this
  114.     }
  115.     $this _model $obj
  116. }
  117.  
  118. method MSUMLPackage::elementSet {this} {
  119.     return [$this _elementSet]
  120. }
  121.  
  122. method MSUMLPackage::addElement {this newElement} {
  123.     [$this _elementSet] append $newElement
  124.     $newElement _package $this
  125. }
  126.  
  127. method MSUMLPackage::removeElement {this oldElement} {
  128.     $oldElement _package ""
  129.     [$this _elementSet] removeValue $oldElement
  130. }
  131.  
  132.