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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)drssmitemo.tcl    /main/titanic/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)drssmitemo.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 "drsitemobj.tcl"
  16.  
  17. Class DrsSMItemObject : {DrsItemObject} {
  18.     method destructor
  19.     constructor
  20.     method getEditorTypes
  21.     method linkComponents
  22.     method levelName
  23.     method levelType
  24.     attribute semTypeName
  25.     attribute smObject
  26. }
  27.  
  28. method DrsSMItemObject::destructor {this} {
  29.     # Start destructor user section
  30.     # End destructor user section
  31.     $this DrsItemObject::destructor
  32. }
  33.  
  34. constructor DrsSMItemObject {class this smObject system systemV} {
  35.     set workItem [$smObject getWorkItem]
  36.     set this [DrsItemObject::constructor $class $this $workItem $system $systemV]
  37.     $this smObject $smObject
  38.         set semType [$smObject getSemType]
  39.         $this semTypeName [ReqDriver::getSMTypeName $semType]
  40.     return $this
  41. }
  42.  
  43. method DrsSMItemObject::getEditorTypes {this} {
  44.     set smObject [$this smObject]
  45.         set semType [$smObject getSemType]
  46.     set semType [$semType name]
  47.     if {[llength $semType] == 2} {
  48.         return [string tolower [lindex $semType 0]]
  49.     }
  50.     if {$semType == "Class"} {
  51.         return "cad ccd etd std"
  52.     }
  53.     if {$semType == "Event"} {
  54.         return "mgd etd ccd ucd std"
  55.     }
  56.     if {$semType == "EventSender" || $semType == "EventReceiver"} {
  57.         return "ccd std etd ucd"
  58.     }
  59.     return [string tolower [lindex $semType 0]]
  60. }
  61.  
  62. method DrsSMItemObject::linkComponents {this currDoorsObject} {
  63.     set dxlCommand [$this dxlCommand]
  64.     set semTypeNames [m4_var get M4_doors_semantic_types]
  65.     set smTypes ""
  66.     foreach smTypeName $semTypeNames {
  67.         set smType [SMTypeDB::find $smTypeName]
  68.         if ![$smType isNil] {
  69.         lappend smTypes $smType
  70.         }
  71.     }
  72.     set otConnections [m4_var get M4_doors_connections_link_module]
  73.     $dxlCommand doorsObjectDeleteLinks $currDoorsObject $otConnections
  74.     set smObject [$this smObject]
  75.     if [$smObject isA SMConnector] {
  76.         # this is a link connector
  77.         set smConnector $smObject
  78.         foreach smType $smTypes { 
  79.         set smFrom [$smConnector getFrom $smType]
  80.         if ![llength $smFrom]  {
  81.             continue
  82.         }
  83.         set fromWorkItem [$smFrom getWorkItem]
  84.         if [$fromWorkItem isNil] {
  85.             continue
  86.         }
  87.         set itemProps [$fromWorkItem properties]
  88.         set fromDrsId [$itemProps  getPropertyValue ${DrsDriver::FORMALMODULE}]
  89.         if ![llength $fromDrsId] {
  90.             continue
  91.         }
  92.         set fromDrsObj [$dxlCommand doorsObjectFind  $fromDrsId]
  93.                 $dxlCommand doorsObjectCreateLink $currDoorsObject $fromDrsObj\
  94.                         $otConnections
  95.         }
  96.         foreach smType $smTypes { 
  97.         set smTo [$smConnector getTo $smType]
  98.         if ![llength $smTo]  {
  99.             continue
  100.         }
  101.         set toWorkItem [$smTo getWorkItem]
  102.         if [$toWorkItem isNil] {
  103.             continue
  104.         }
  105.         set itemProps [$toWorkItem properties]
  106.         set toDrsId [$itemProps  getPropertyValue ${DrsDriver::FORMALMODULE}]
  107.         if ![llength $toDrsId] {
  108.             continue
  109.         }
  110.         set toDrsObj [$dxlCommand doorsObjectFind  $toDrsId]
  111.                 $dxlCommand doorsObjectCreateLink $toDrsObj $currDoorsObject\
  112.                         $otConnections
  113.         }
  114.         return
  115.     } 
  116.  
  117.  
  118.     # current isa node
  119.     set smNode $smObject
  120.     foreach connType $smTypes { 
  121.         foreach oppType $smTypes {
  122.         foreach smConn [$smNode getConnectorsIn $connType $oppType] {
  123.             set connWorkItem [$smConn getWorkItem]
  124.             if [$connWorkItem isNil] {
  125.             continue
  126.             }
  127.             set itemProps [$connWorkItem properties]
  128.             set connDrsId [$itemProps  getPropertyValue ${DrsDriver::FORMALMODULE}]
  129.             if ![llength $connDrsId] {
  130.             continue
  131.             }
  132.             set connDrsObj [$dxlCommand doorsObjectFind  $connDrsId]
  133.             $dxlCommand doorsObjectCreateLink $currDoorsObject \
  134.                 $connDrsObj $otConnections
  135.         }
  136.         foreach smConn [$smNode getConnectorsOut $connType $oppType] {
  137.             set connWorkItem [$smConn getWorkItem]
  138.             if [$connWorkItem isNil] {
  139.             continue
  140.             }
  141.             set itemProps [$connWorkItem properties]
  142.             set connDrsId [$itemProps  getPropertyValue ${DrsDriver::FORMALMODULE}]
  143.             if ![llength $connDrsId] {
  144.             continue
  145.             }
  146.             set connDrsObj [$dxlCommand doorsObjectFind  $connDrsId]
  147.             $dxlCommand doorsObjectCreateLink $connDrsObj \
  148.                 $currDoorsObject $otConnections
  149.         }
  150.         }
  151.     }
  152. }
  153.  
  154. method DrsSMItemObject::levelName {this} {
  155.         set smObject [$this smObject]
  156.         set item [$this item]
  157.         return "[$item name].[$this levelType]"
  158. }
  159.  
  160. method DrsSMItemObject::levelType {this} {
  161.     return [$this semTypeName]
  162. }
  163.  
  164. # Do not delete this line -- regeneration end marker
  165.  
  166.