home *** CD-ROM | disk | FTP | other *** search
- #---------------------------------------------------------------------------
- #
- # (c) Cadre Technologies Inc. 1995
- #
- # File: @(#)flows.tcl /main/hindenburg/1
- # Author: Harm Leijendeckers
- # Description: Report on flows
- # Usage in: SystemVersions and DFD editor
- #
- #---------------------------------------------------------------------------
- # SccsId = @(#)flows.tcl /main/hindenburg/1 22 Nov 1996 Copyright 1995 Cadre Technologies Inc.
-
-
- eval [$cc getCustomFileContents semanticbase tcl reports]
-
-
- Class ReportFlows : {SemanticBase} {
- constructor
- method doReport
-
- method makeFlow
- }
-
-
- constructor ReportFlows {class this} {
- set this [SemanticBase::constructor $class $this]
- $this reportName Flows
-
- defineTypes
- defineArrows
-
- return $this
- }
-
-
- method ReportFlows::doReport {this model} {
- # get all DFD nodes
- set nodes [query {getSemType.name in {"DFD DataProcess" \
- "DFD DataStore" "DFD Actor" "DFD Anchor"} && objType == SMNode} \
- [$model getSMObjects $ANY]]
- if [lempty $nodes] { return 0 }
-
- set report [$this report]
- $report header {
- set report [$this report]
- $report print "--- Data Flow -->" 32 center
- $report print "- - Control Flow - >" 32 center
- $report print "=== Result Flow ==>" 32 center
- $report print "<-< Update Flow >->" 32 center line
- $report line
- $report print "From Type" 12
- $report print "From Node" 27
- $report print Flow 54
- $report print "To Node" 27
- $report print "To Type" line
- $report line
- }
-
- set sortedNodes [concat [query "getItem.isNil == 1" $nodes] \
- [osort getItem.name [query "getItem.isNil == 0" $nodes]]]
-
- foreach node $sortedNodes {
- set outFlows [getOut $node]
- if [lempty $outFlows] { continue }
-
- $report print [string range [$this objType $node] 4 end] 11
- $report space
- $report print [$this objName $node] 26
- $report space
-
- foreach flow $outFlows {
- if ![$report queued] { $report space 39 }
- $report print [$this makeFlow $flow] 53
- $report space
- set toNode [lindex $flow [expr [llength $flow]-1]]
- $report print [$this objName $toNode] 26
- $report space
- $report print [string range [$this objType $toNode] 4 end] 11
- $report line
- }
-
- $report line
- }
-
- $report page
- $report remove header
-
- return 0
- }
-
-
- method ReportFlows::makeFlow {this flows} {
- set flowType [[lindex $flows 0] getSemType]
- set result $leftArrow($flowType)
- while { [llength $flows] != 2 } {
- set txt [$this labelValue [lvarpop flows]]
- if { $txt == "" } { continue }
- set result [concat $result $txt $middleArrow($flowType)]
- }
- return [concat $result [$this labelValue [lvarpop flows]] \
- $rightArrow($flowType)]
- }
-
-
- proc getOut {node} {
- set connsOut [$node getConnectorsOut $ANY $ANY]
-
- if { $connsOut == "" } { return "" }
-
- set result ""
- foreach conn $connsOut {
- set endNode [concat [$conn getTo $OMT_DFD_DataProcess] \
- [$conn getTo $OMT_DFD_DataStore] \
- [$conn getTo $OMT_DFD_Actor] \
- [$conn getTo $OMT_DFD_Anchor]]
- if { $endNode != "" } {
- lappend result [concat $conn $endNode]
- } else {
- set toSplit [$conn getTo $OMT_DFD_Node]
- foreach subResult [getOut $toSplit] {
- lappend result [concat $conn $subResult]
- }
- }
- }
-
- return $result
- }
-
-
- proc defineArrows {} {
- global leftArrow middleArrow rightArrow
-
- set leftArrow($OMT_DFD_DataFlow) "---"
- set leftArrow($OMT_DFD_UpdateFlow) "<-<"
- set leftArrow($OMT_DFD_ControlFlow) "- -"
- set leftArrow($OMT_DFD_ResultFlow) ""
-
- set middleArrow($OMT_DFD_DataFlow) "---"
- set middleArrow($OMT_DFD_UpdateFlow) "<->"
- set middleArrow($OMT_DFD_ControlFlow) "- -"
- set middleArrow($OMT_DFD_ResultFlow) ""
-
- set rightArrow($OMT_DFD_DataFlow) "-->"
- set rightArrow($OMT_DFD_UpdateFlow) ">->"
- set rightArrow($OMT_DFD_ControlFlow) "- >"
- set rightArrow($OMT_DFD_ResultFlow) "==>"
- }
-
-
- # ----------------------------------------------------------------------
- #
- set executeMe [ReportFlows new]
-