home *** CD-ROM | disk | FTP | other *** search
- #---------------------------------------------------------------------------
- #
- # (c) Cayenne Software Inc. 1997
- #
- # File: @(#)drsdxlcomm.tcl /main/titanic/7
- # Author: <generated>
- # Description:
- #---------------------------------------------------------------------------
- # SccsId = @(#)drsdxlcomm.tcl /main/titanic/7 12 Nov 1997 Copyright 1997 Cayenne Software Inc.
-
- # Start user added include file section
- # End user added include file section
-
-
- Class DrsDxlCommand : {GCObject} {
- constructor
- method destructor
- method execute
- method newCommand
- method command
- method doorsInitialize
- method doorsObjectTypeCreate
- method doorsObjectAttributeCreate
- method doorsProjConfigure
- method doorsModuleConfigure
- method doorsModuleEdit
- method doorsViewSave
- method doorsObjectFind
- method doorsObjectDelete
- method doorsObjectAttrSetValue
- method doorsObjectAttrAppendValue
- method doorsObjectCreateTopObject
- method doorsObjectCreateChild
- method doorsObjectAttrSave
- method doorsObjectCreateLink
- method doorsObjectDeleteLinks
- method doorsObjectSetCurrent
- method doorsResultSave
- method doorsModuleSave
- method doorsFilterOn
- method doorsFilterOff
- method doorsObjectShow
- method doorsObjectHide
- attribute channel
- attribute firstOut
- attribute varCounter
- attribute mustBeDone
- attribute commandSection
- attribute oleObject
- }
-
- constructor DrsDxlCommand {class this} {
- set this [GCObject::constructor $class $this]
- # Start constructor user section
- if $win95 {
- $this oleObject [OleAutoObject new "DOORS.Application"]
- }
- $this commandSection [TextSection new]
- $this channel [args_file {} ]
- $this firstOut 0
- $this varCounter 1
- $this mustBeDone 0
- # End constructor user section
- return $this
- }
-
- method DrsDxlCommand::destructor {this} {
- # Start destructor user section
- set commandSection [$this commandSection]
- unlink [$this channel]
- if $win95 {
- [$this oleObject] delete
- }
- # End destructor user section
- }
-
- method DrsDxlCommand::execute {this {doorsModule ""}} {
- catch OtkRegister::license
- eval_encrypted .EJMDJMWGVhN2JeKzw.SFhSW18lRjNQW006V1pjU0tWVV9HYHJnWHtaVk1pNVZHSV4.UT1oZlZVUE5SNzI3QTVQOmdmYmRjSVZbXDxOU1NZL09RTk1IOzxXQGxqTklZTVc9R0FKVUhxY3tbUk83UjgyTlxDO1VQUkZgWylBQklPWUdfWz5YYjUqJTA5LEl9OSo2QzV3VGxPW0lgP0dPJj47Pl93Z15IVW5HVlRCJkBRRmU9QV9AVEJORE1AbGJnWUd1Y2M9UVRPTF5LYDdOWihBS0xRRlRQMUJcRmxfOnJeVFZaVV9wP0pPTVo8XmFPU01pPlNdRT5DTUAtZURITl0oUk8vVElN
- if $win95 {
- [$this oleObject] runFile $fileName
- } else {
- exec dxlsend "#include <$fileName>"
- }
- set returnFile [open [$this channel] r]
- set returnValue [read $returnFile]
- close $returnFile
- unlink $fileName
- $this mustBeDone 0
- return $returnValue
- }
-
- method DrsDxlCommand::newCommand {this} {
- set commandSection [$this commandSection]
- if [llength $commandSection] {
- $commandSection delete
- }
- $this commandSection [TextSection new]
- }
-
- method DrsDxlCommand::command {this} {
- [$this commandSection] contents
- }
-
- method DrsDxlCommand::doorsInitialize {this {refresh "true"}} {
- $this commandSection [TextSection new]
- regsub -all {\\} [$this channel] "/" dxlChannel
- expand_text [$this commandSection] {
- Module currentModule
- bool storedFiltering
- Link ln
- int linked = 0
- Object startObject
- Object lastObject
- Object searchObject
- Stream outStream
- int returnValue = 0
- string attrValue
- string projectName = ""
- Project curProj = current
- pragma runLim, 10000000
- if (!null curProj) {
- projectName = name curProj
- } else {
- ack "No DOORS project opened"
- halt
- }
- string otDrsProjName = "~[m4_var get M4_doors_project]"
- if (projectName != otDrsProjName) {
- if ("~$refresh" == "true") {
- ack "New project selected, first Refresh Project"
- halt
- }
- }
-
- int searchNo
- int found
- outStream = write "~${dxlChannel}"
-
-
-
- Object findObject (int searchNo) {
- Object searchObject
- startObject = current
- searchObject = startObject
- int returnValue
- found = 0
- returnValue = searchObject."Absolute Number"
- if (returnValue == searchNo) {
- return searchObject
- }
- for searchObject in startObject do {
- returnValue = searchObject."Absolute Number"
- if (returnValue == searchNo) {
- return searchObject
- }
- }
-
- while (found == 0 && !(null searchObject)) {
- returnValue = searchObject."Absolute Number"
- if (returnValue == searchNo) {
- return searchObject
- }
- else
- searchObject = parent searchObject
- }
- startObject = currentModule last
- searchObject = startObject
- returnValue = searchObject."Absolute Number"
- if (returnValue == searchNo) {
- return searchObject
- }
- else
- searchObject = previous searchObject
- while (searchObject!=startObject && !(null searchObject)) {
- returnValue = searchObject."Absolute Number"
- if (returnValue == searchNo) {
- return searchObject
- } else
- searchObject = previous searchObject
- }
- ack "Object with Object Identifier ", searchNo, "not found"
- }
-
- }
- }
-
- method DrsDxlCommand::doorsObjectTypeCreate {this attrName type} {
- $this mustBeDone 1
- expand_text [$this commandSection] {
- create object type "~$type" attribute "~$attrName"
- }
- }
-
- method DrsDxlCommand::doorsObjectAttributeCreate {this attrSection attrNames modName} {
- foreach attribute $attrNames {
- expand_text $attrSection {
- if (!exists attribute "~$attribute") {
- create object attribute "~$attribute" type "text"
- ack "In formal module ~$modName the ~$attribute attribute is created"
- }
- }
- }
- }
-
- method DrsDxlCommand::doorsProjConfigure {this userAttributes} {
- $this mustBeDone 1
- set functionBody [TextSection new]
- set formModName [m4_var get M4_doors_formal_module]
- $this doorsModuleConfigure $functionBody $formModName "formalModule" \
- "ObjectTeam reference"
- set attrs "SelectedItems ParentOTVersions OTType OTEditorTypes \
- OTViews $userAttributes"
- $this doorsObjectAttributeCreate $functionBody $attrs $formModName
- expand_text $functionBody {
- save newMod
- }
- set linkMod [m4_var get M4_doors_trace_link_module]
- $this doorsModuleConfigure $functionBody $linkMod "linkModule" \
- "ObjectTeam Interphase links" $formModName $formModName
- set linkMod [m4_var get M4_doors_connections_link_module]
- $this doorsModuleConfigure $functionBody $linkMod "linkModule" \
- "ObjectTeam object connections" $formModName $formModName \
- "manyToMany"
- expand_text [$this commandSection] {
- void createModules () {
- ~[$functionBody contents]
- }
- }
- expand_text [$this commandSection] {
- Project curProj = current
- if (null curProj) {
- ack "No DOORS project opend"
- halt
- } else {
- createModules
- }
- }
- }
-
- method DrsDxlCommand::doorsModuleConfigure {this modSection modName modType comment {fromModule ""} {toModule ""} {linkRelation "manyToOne"}} {
- if {$modType == "formalModule" } {
- expand_text $modSection {
- Module newMod = current
- if (exists module "~$modName") {
- ack "Formal module ~$modName not created. It already exists"
- newMod = edit "~$modName"
- current = newMod
- } else {
- newMod = create ("~$modName" , "~$comment", "OT", 1)
- current = newMod
- ack "Formal module ~$modName created."
- }
- }
- } else {
- expand_text $modSection {
- if (exists module "~$modName") {
- ack "Link module ~$modName not created. It already exists"
- } else {
- Module linkMod = create("~$modName", "~$comment", ~$linkRelation)
- ack "Link module ~$modName created."
- current = linkMod
- Linkset ls = create (linkMod, "~$fromModule", "~$toModule")
- ack "Linkset from ~$fromModule to ~$toModule in link module ~$modName created."
- save linkMod
- load ls
- }
- }
- }
- }
-
- method DrsDxlCommand::doorsModuleEdit {this moduleName editType displayed} {
- expand_text [$this commandSection] {
- currentModule = ~$editType ("~$moduleName", ~$displayed)
- storedFiltering = filtering currentModule
- }
- expand_text [$this commandSection] {
- level 0
- }
- $this doorsFilterOff
- return currentModule
- }
-
- method DrsDxlCommand::doorsViewSave {this viewName} {
- [.main messageArea] message "Save DOORS view $viewName"
- set moduleName [m4_var get M4_doors_formal_module]
- $this mustBeDone 1
- set m4_shared [m4_var get M4_doors_edit_shared]
- if ![llength $m4_shared] {
- m4_var set M4_doors_edit_shared "false"
- m4_var saveStatus M4_doors_edit_shared 0
- }
- if {$m4_shared == "true"} {
- set editType "share"
- } else {
- set editType "edit"
- }
-
- set m4_disp [m4_var get M4_doors_edit_displayed]
- if ![llength $m4_disp] {
- m4_var set M4_doors_edit_displayed "true"
- m4_var saveStatus M4_doors_edit_displayed 0
- }
- if {$m4_disp == "true"} {
- set displayed "true"
- }
- $this doorsInitialize
- expand_text [$this commandSection] {
- currentModule = ~$editType ("~$moduleName", ~$displayed)
- storedFiltering = filtering currentModule
- Object viewObject
- viewObject = currentModule first
- while (!null viewObject) {
- viewObject."OTViews"= viewObject."OTViews" " " "OTView_~$viewName"
- viewObject = next viewObject
- }
- Filter f1 = contents ("OTView_~$viewName", true)
- set f1
- save view "~$viewName"
- }
- $this doorsModuleSave "currentModule"
-
- }
-
- method DrsDxlCommand::doorsObjectFind {this no} {
- set varName "searchObject[$this varCounter]"
- $this varCounter [expr [$this varCounter] + 1]
- expand_text [$this commandSection] {
- Object ~$varName
- ~$varName = findObject ~$no
-
- }
- return $varName
- }
-
- method DrsDxlCommand::doorsObjectDelete {this doorsObject} {
- $this mustBeDone 1
- expand_text [$this commandSection] {
- ~$doorsObject delete
- flushDeletions
- }
- }
-
- method DrsDxlCommand::doorsObjectAttrSetValue {this obj attrName attrValue} {
- $this mustBeDone 1
- regsub -all {\\} $attrValue "" newValue
- regsub -all {\"} $newValue "\\\"" newValue
- expand_text [$this commandSection] {
- if (exists attribute "~$attrName")
- ~$obj."~$attrName"= "~$newValue"
- }
- return $obj
- }
-
- method DrsDxlCommand::doorsObjectAttrAppendValue {this attrName toAppValue} {
- $this mustBeDone 1
- expand_text [$this commandSection] {
- attrValue = ~$obj."~$attrName"
- ~$obj."~$attrName"= attrValue "~$toAppValue"
- }
- return $obj
- }
-
- method DrsDxlCommand::doorsObjectCreateTopObject {this objectName} {
- $this mustBeDone 1
- set newObject newObject[$this varCounter]
- $this varCounter [expr [$this varCounter] + 1]
- expand_text [$this commandSection] {
- lastObject = currentModule first
- Object ~$newObject
- if (null lastObject) {
- ~$newObject = create currentModule
- } else {
- lastObject = last sibling (currentModule first)
- ~$newObject = create lastObject
- }
- }
- $this doorsObjectShow $newObject
- return [$this doorsObjectAttrSetValue $newObject "Object Heading" $objectName]
- }
-
- method DrsDxlCommand::doorsObjectCreateChild {this doorsObject objectName {filteredName ""}} {
- $this mustBeDone 1
- set newObject newObject[$this varCounter]
- $this varCounter [expr [$this varCounter] + 1]
- expand_text [$this commandSection] {
- Object ~$newObject
- ~$newObject = create last below ~$doorsObject
- }
- $this doorsObjectShow $newObject
- set sectionDict [Dictionary new]
- $sectionDict contents [m4_var get M4_doors_section_mapping]
- set specialName [$sectionDict set $objectName]
- if [llength $specialName] {
- set objectName $specialName
- }
- return [$this doorsObjectAttrSetValue $newObject "Object Heading" $objectName]
- }
-
- method DrsDxlCommand::doorsObjectAttrSave {this toSaveObject toSaveAttr} {
- expand_text [$this commandSection] {
- attrValue = ~$toSaveObject."~$toSaveAttr"
- }
- $this doorsResultSave attrValue
- }
-
- method DrsDxlCommand::doorsObjectCreateLink {this destObject srcObject linkMod} {
- $this mustBeDone 1
- expand_text [$this commandSection] {
- ~$destObject <- "~$linkMod" <- ~$srcObject
- }
- return $srcObject
- }
-
- method DrsDxlCommand::doorsObjectDeleteLinks {this doorsObject linkMod} {
- $this mustBeDone 1
- expand_text [$this commandSection] {
- for ln in ~$doorsObject<-"~$linkMod" do {
- delete ln
- }
- for ln in ~$doorsObject->"~$linkMod" do {
- delete ln
- }
- flushDeletions
- }
- }
-
- method DrsDxlCommand::doorsObjectSetCurrent {this doorsObject} {
- expand_text [$this commandSection] {
- current = ~$doorsObject
- }
- }
-
- method DrsDxlCommand::doorsResultSave {this doorsResult} {
- if ![$this firstOut] {
- expand_text [$this commandSection] {
- outStream << ~$doorsResult ""
- }
- } else {
- expand_text [$this commandSection] {
- outStream << " " ~$doorsResult ""
- }
- }
- $this firstOut 1
- return $doorsResult
- }
-
- method DrsDxlCommand::doorsModuleSave {this toSaveModule} {
- expand_text [$this commandSection] {
- if (storedFiltering == true) {
- filtering on
- }
- save ~$toSaveModule
- }
- return $toSaveModule
- }
-
- method DrsDxlCommand::doorsFilterOn {this} {
- expand_text [$this commandSection] {
- filtering on
- }
- }
-
- method DrsDxlCommand::doorsFilterOff {this} {
- expand_text [$this commandSection] {
- if (storedFiltering == true) {
- filtering off
- }
- }
- }
-
- method DrsDxlCommand::doorsObjectShow {this doorsObject {minorOperation ""}} {
- $this mustBeDone 1
- if {$minorOperation == "All" } {
- expand_text [$this commandSection] {
- searchObject = currentModule first
- while (!null searchObject) {
- accept searchObject
- searchObject = searchObject next
- }
- }
- return ""
- }
- expand_text [$this commandSection] {
- if (!null ~$doorsObject)
- accept ~$doorsObject
- }
- return $doorsObject
- }
-
- method DrsDxlCommand::doorsObjectHide {this doorsObject {minorOperation ""}} {
- $this mustBeDone 1
- if {$minorOperation == "All" } {
- expand_text [$this commandSection] {
- searchObject = currentModule first
- while (!null searchObject) {
- reject searchObject
- searchObject = searchObject next
- }
- }
- return ""
- }
-
- expand_text [$this commandSection] {
- reject ~$doorsObject
- }
- return $doorsObject
- }
-
- # Do not delete this line -- regeneration end marker
-
-