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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)contfile.tcl    /main/titanic/7
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)contfile.tcl    /main/titanic/7   4 Sep 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require_module_file "vsfile.tcl" vcm
  15.  
  16. # This class represents a Continuus file.
  17.  
  18. Class ContFile : {VSFile} {
  19.     constructor
  20.     method destructor
  21.     method createVSPath
  22.     method createUserPath
  23.     method existsInVS
  24.     method createInVS
  25.     method removeFromVS
  26.     method renameInVS
  27.     method isCheckedOut
  28.     method checkOut
  29.     method deleteVersion
  30.     method unuseVersion
  31.     method getReference
  32.     method deleteReference
  33.     method setAttribute
  34.     method getAttributeValue
  35. }
  36.  
  37. constructor ContFile {class this name type system} {
  38.     set this [VSFile::constructor $class $this $name $type $system]
  39.     # Start constructor user section
  40.     # End constructor user section
  41.     return $this
  42. }
  43.  
  44. method ContFile::destructor {this} {
  45.     # Start destructor user section
  46.     # End destructor user section
  47.     $this VSFile::destructor
  48. }
  49.  
  50. method ContFile::createVSPath {this} {
  51.     $this VSFile::createVSPath Cont
  52. }
  53.  
  54. method ContFile::createUserPath {this} {
  55.     $this VSFile::createUserPath Cont
  56. }
  57.  
  58. method ContFile::existsInVS {this} {
  59.     if [file exists [$this path]] {
  60.     return 1
  61.     }
  62.     return 0
  63. }
  64.  
  65. method ContFile::createInVS {this args} {
  66.     if [$this existsInVS] {
  67.     return 0
  68.     }
  69.     set path [$this path]
  70.     set dir [path_name directory $path]
  71.  
  72.     # do some incomprehensible args manipulation
  73.     set arguments [lindex $args 0]
  74.     set comment [lindex $arguments 0]
  75.  
  76.     # check if there is a task argument
  77.     # this is given by the browser but not by code generation.
  78.     if { [llength $arguments] > 1 } {
  79.     set task [lindex $arguments 1]
  80.     } else {
  81.     set task 0
  82.     }
  83.  
  84.     # create path if necessary
  85.     if { ![file isdirectory $dir] } {
  86.     if { ![$this createUserPath] } {
  87.         return 0
  88.     }
  89.     }
  90.  
  91.     # create the element itself
  92.     set contType [[[$this systemVersion] typeMapper] map [$this type]]
  93.     set createCommand [ContCommand::createObject $path $contType $comment $task]
  94.     return [vsCommandHandler execute $createCommand]
  95. }
  96.  
  97. method ContFile::removeFromVS {this} {
  98.     set removeCommand [ContCommand::deleteObject [$this path]]
  99.     return [vsCommandHandler execute $removeCommand]
  100. }
  101.  
  102. method ContFile::renameInVS {this oldName} {
  103.     # construct old path from new path and old name
  104.     set fullName [path_name file [$this path]]
  105.     regsub ^[$this name] $fullName "" extensionPart
  106.     set oldPath [path_name concat [path_name directory [$this path]] \
  107.         "${oldName}$extensionPart"]
  108.  
  109.     set renameCommand [ContCommand::rename $oldPath [$this path]]
  110.     return [vsCommandHandler execute $renameCommand]
  111. }
  112.  
  113.  
  114. # Returns whether the currently selected version of this file
  115. # is in working state.
  116. #
  117. method ContFile::isCheckedOut {this} {
  118.     # just test writable
  119.     return [file writable [$this path]]
  120. }
  121.  
  122. method ContFile::checkOut {this comment args} {
  123.     set checkOutCommand [ContCommand::checkOut [$this path] $comment]
  124.     return [vsCommandHandler execute $checkOutCommand]
  125. }
  126.  
  127.  
  128. # Delete and replace current version of this file.
  129. #
  130. method ContFile::deleteVersion {this} {
  131.     set deleteCommand [ContCommand::deleteVersion [$this path]]
  132.     return [vsCommandHandler execute $deleteCommand]
  133. }
  134.  
  135.  
  136. # Unuse and replace current version of this file.
  137. #
  138. method ContFile::unuseVersion {this} {
  139.     set unuseCommand [ContCommand::unuseVersion [$this path]]
  140.     return [vsCommandHandler execute $unuseCommand]
  141. }
  142.  
  143. method ContFile::getReference {this {version ""}} {
  144.     if { $version == "" } {
  145.     return [$this path]
  146.     }
  147.  
  148.     set path [args_file {}]
  149.     if [ContCommand::getVersion [$this path] $version $path] {
  150.     $this references "[$this references] [list $path]"
  151.     return $path
  152.     }
  153.  
  154.     # don't know what went wrong, try to remove the file just in case
  155.     catch { BasicFS::removeFile $path }
  156.     return ""
  157. }
  158.  
  159. method ContFile::deleteReference {this path} {
  160.     set splitPath [file split $path]
  161.     set refFound 0
  162.     set newList {}
  163.     foreach ref [$this references] {
  164.     if { [file split $ref] == $splitPath } {
  165.         set refFound 1
  166.     } else {
  167.         lappend newList [list $ref]
  168.     }
  169.     }
  170.     if !$refFound {
  171.     return
  172.     }
  173.  
  174.     # reference was a temporary file, delete from list and file system
  175.     $this references $newList
  176.     BasicFS::removeFile $path
  177. }
  178.  
  179.  
  180. # Sets the specified Continuus attribute to the
  181. # specified value for this file.
  182. #
  183. method ContFile::setAttribute {this name value} {
  184.     set setCommand [ContCommand::setAttribute [$this path] $name $value]
  185.     return [vsCommandHandler execute $setCommand]
  186. }
  187.  
  188.  
  189. # Get the value of the specified attribute for this file.
  190. #
  191. method ContFile::getAttributeValue {this name} {
  192.     return [ContCommand::getAttributeValue [$this path] $name]
  193. }
  194.  
  195. # Do not delete this line -- regeneration end marker
  196.  
  197.