home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 1998 October
/
PCWorld_1998-10_cd.bin
/
software
/
prehled
/
komix
/
DATA.Z
/
flows.tcl
< prev
next >
Wrap
Text File
|
1997-08-21
|
5KB
|
210 lines
#---------------------------------------------------------------------------
#
# (c) Cayenne Software Inc. 1997
#
# File: @(#)flows.tcl /main/titanic/2
# Author: M. van Leeuewn
# Description: Report on flows
# Usage in: SystemVersions and DFD editor
#
#---------------------------------------------------------------------------
# SccsId = @(#)flows.tcl /main/titanic/2 21 Aug 1997 Copyright 1997 Cayenne Software Inc.
eval [$cc getCustomFileContents semanticbase tcl reports]
Class ReportFlows : {SemanticBase} {
constructor
method doReport
method objName
method printEvent
method printConnector
}
constructor ReportFlows {class this} {
set this [SemanticBase::constructor $class $this]
$this reportName Flows
return $this
}
method ReportFlows::doReport {this model} {
# get all DFD nodes
set nodes [concat \
[$model getSMObjects $OMT_DFD_Actor] \
[$model getSMObjects $OMT_DFD_Anchor] \
[$model getSMObjects $OMT_DFD_DataProcess] \
[$model getSMObjects $OMT_DFD_DataStore] \
]
if [lempty $nodes] { return 0 }
set report [$this report]
set sortedNodes [concat \
[query "getItem.isNil == 1" $nodes] \
[osort getItem.name [query "getItem.isNil == 0" $nodes]]]
foreach class $sortedNodes {
case [[$class getSemType] getFileType] in {
dfd {
set eventsSent [concat \
[$class getConnectorsOut $OMT_DFD_ControlFlow $ANY] \
[$class getConnectorsOut $OMT_DFD_DataFlow $ANY] \
[$class getConnectorsOut $OMT_DFD_ResultFlow $ANY] \
[$class getConnectorsOut $OMT_DFD_UpdateFlow $ANY] \
]
set eventsRcvd [concat \
[$class getConnectorsIn $OMT_DFD_ControlFlow $ANY] \
[$class getConnectorsIn $OMT_DFD_DataFlow $ANY] \
[$class getConnectorsIn $OMT_DFD_ResultFlow $ANY] \
[$class getConnectorsIn $OMT_DFD_UpdateFlow $ANY] \
]
}
}
if { [lempty $eventsSent] && [lempty $eventsRcvd] } {
continue
}
$report print "[$this objName $class]" line
# all events sent
if ![lempty $eventsSent] {
$report space 2
$report print Sends 40
$report print To 38
$report print In line
foreach sentEvent $eventsSent {
$this printEvent $sentEvent out
}
}
# all events received
if ![lempty $eventsRcvd] {
$report space 2
$report print Receives 40
$report print From 38
$report print In line
foreach rcvdEvent $eventsRcvd {
$this printEvent $rcvdEvent in
}
}
$report line
}
$report page
return 0
}
method ReportFlows::objName {this smObj} {
set type [query -s type $smObj.getComponents]
set objName ""
set item [$smObj getItem]
set qi [ORB::nil]
if [$item isNil] {
case $type in {
instance {
set item [$smObj getItem 0 name_type de]
set qi [$smObj getItem 0 name_type cl]
}
}
}
if ![$item isNil] {
append objName [$item name]
if ![$qi isNil] {
append objName ":"
}
}
if ![$qi isNil] {
append objName [$qi name]
}
if {"$objName" == "" } {
set objName ?
}
if {"$type" == "dfd_anchor"} {
return "($type)"
}
return "$objName ($type)"
}
method ReportFlows::printEvent {this event io} {
if [$event isA SMConnector] {
set conn [$event getConnector]
set items [query $conn.segments.labels.itemRefs.item]
if [lempty $items] {
set items [ORB::nil]
}
foreach item $items {
$this printConnector $event $item [ORB::nil] $io
}
return
}
if [$event isA SMNode] {
set conn [$event getSuperiorObjects $OMT_COD_Conn]
$this printConnector $conn [ORB::nil] [$event getLabel] $io
}
}
method ReportFlows::printConnector {this smConn item label io} {
set report [$this report]
set objName {}
set flowType [lindex [[$smConn getSemType] name] 1]
set end [string first "Flow" $flowType]
if { $end > 0 } {
incr end -1
set flowType "[string tolower [string range $flowType 0 $end]]"
}
if ![$item isNil] {
set objName [$item name]
} elseif ![$label isNil] {
set objName [$label value]
} elseif { "$flowType" != "result" } {
set objName ?
}
$report space 4
$report print "($flowType)" 9
$report space
$report print "$objName" 29
$report space
case [[$smConn getSemType] getFileType] in {
dfd {
if { $io == "in" } {
set action getFrom
} else {
set action getTo
}
set toComp [$smConn $action $OMT_DFD_Actor]
if {$toComp == ""} {
set toComp [$smConn $action $OMT_DFD_Anchor] }
if {$toComp == ""} {
set toComp [$smConn $action $OMT_DFD_DataProcess] }
if {$toComp == ""} {
set toComp [$smConn $action $OMT_DFD_DataStore] }
}
}
$report print "[$this objName $toComp]" 37
$report space
$report print [$this fullFileName [$smConn getDefiningDiagram]] line
}
# ----------------------------------------------------------------------
#
set executeMe [ReportFlows new]