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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)ccfile.tcl    /main/titanic/6
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)ccfile.tcl    /main/titanic/6   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 ClearCase file.
  17.  
  18. Class CCFile : {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 unCheckOut
  30.     method checkIn
  31.     method createBranch
  32.     method destroyBranch
  33.     method reserve
  34.     method unreserve
  35.     method setComment
  36.     method getReference
  37.     method deleteReference
  38.     method setAttribute
  39.     method getAttributeValue
  40. }
  41.  
  42. constructor CCFile {class this name type system} {
  43.     set this [VSFile::constructor $class $this $name $type $system]
  44.     # Start constructor user section
  45.     # End constructor user section
  46.     return $this
  47. }
  48.  
  49. method CCFile::destructor {this} {
  50.     # Start destructor user section
  51.     # End destructor user section
  52.     $this VSFile::destructor
  53. }
  54.  
  55. method CCFile::createVSPath {this} {
  56.     $this VSFile::createVSPath CC
  57. }
  58.  
  59. method CCFile::createUserPath {this} {
  60.     $this VSFile::createUserPath CC
  61. }
  62.  
  63. method CCFile::existsInVS {this} {
  64.     if [file exists [$this path]] {
  65.     return 1
  66.     }
  67.     return 0
  68. }
  69.  
  70. method CCFile::createInVS {this args} {
  71.     if [$this existsInVS] {
  72.     return 0
  73.     }
  74.     set path [$this path]
  75.     set dir [path_name directory $path]
  76.     set arguments [lindex $args 0]
  77.     set comment [lindex $arguments 0]
  78.  
  79.     # create path if necessary
  80.     if { ![file isdirectory $dir] } {
  81.     if { ![$this createUserPath] } {
  82.         return 0
  83.     }
  84.     }
  85.  
  86.     # check out directory if necessary
  87.     if  { ![CCSystem::checkOutDirectory $dir \
  88.         "Checked out by ObjectTeam for file creation"] } {
  89.     return 0
  90.     }
  91.  
  92.     # create the element itself
  93.     set ccType [[[$this systemVersion] typeMapper] map [$this type]]
  94.     set createCommand [CCCommand::createElem $path $ccType $comment]
  95.     return [vsCommandHandler execute $createCommand]
  96. }
  97.  
  98. method CCFile::removeFromVS {this} {
  99.     set path [$this path]
  100.     set dir [path_name directory $path]
  101.  
  102.     # check out directory if necessary
  103.     if  { ![CCSystem::checkOutDirectory $dir \
  104.         "Checked out by ObjectTeam for file removal"] } {
  105.     return 0
  106.     }
  107.  
  108.     set removeCommand [CCCommand::removeName $path]
  109.     if [vsCommandHandler execute $removeCommand] {
  110.     # remove in user environment if remove in ClearCase succeeded
  111.     if [file exists $path] {
  112.         BasicFS::removeFile $path
  113.     }
  114.     return 1
  115.     }
  116.  
  117.     return 0
  118. }
  119.  
  120. method CCFile::renameInVS {this oldName} {
  121.     set dir [path_name directory [$this path]]
  122.  
  123.     # check out directory if necessary
  124.     if  { ![CCSystem::checkOutDirectory $dir \
  125.         "Checked out by ObjectTeam for file rename"] } {
  126.     return 0
  127.     }
  128.  
  129.     # construct old path from new path and old name
  130.     set fullName [file tail [$this path]]
  131.     regsub ^[$this name] $fullName "" extensionPart
  132.     set oldPath [path_name concat [path_name directory [$this path]] \
  133.         "${oldName}$extensionPart"]
  134.  
  135.     set renameCommand [CCCommand::rename $oldPath [$this path]]
  136.     return [vsCommandHandler execute $renameCommand]
  137. }
  138.  
  139.  
  140. # Returns whether the file selected in the view
  141. # is checked out i.e. writable. For performance there is no
  142. # check if the file is actually in the vob.
  143. #
  144. method CCFile::isCheckedOut {this} {
  145.     return [file writable [$this path]]
  146. }
  147.  
  148. method CCFile::checkOut {this comment {reserved 1}} {
  149.     set checkoutCommand [CCCommand::checkOut [$this path] $comment $reserved]
  150.     return [vsCommandHandler execute $checkoutCommand]
  151. }
  152.  
  153. method CCFile::unCheckOut {this keepPrivate} {
  154.     set unCheckOutCommand [CCCommand::unCheckOut [$this path] $keepPrivate]
  155.     return [vsCommandHandler execute $unCheckOutCommand]
  156. }
  157.  
  158. method CCFile::checkIn {this noComment comment} {
  159.     set checkInCommand [CCCommand::checkIn [$this path] $noComment $comment]
  160.     return [vsCommandHandler execute $checkInCommand]
  161. }
  162.  
  163.  
  164. # Create the named branch on this file.
  165. #
  166. method CCFile::createBranch {this type comment} {
  167.     set createBranchCommand [CCCommand::createBranch [$this path] $type $comment]
  168.     return [vsCommandHandler execute $createBranchCommand]
  169. }
  170.  
  171. method CCFile::destroyBranch {this branch} {
  172.     set destroyBranchCommand [CCCommand::destroyBranch $branch]
  173.     return [vsCommandHandler execute $destroyBranchCommand]
  174. }
  175.  
  176.  
  177. # Reserve the checkout of this file.
  178. #
  179. method CCFile::reserve {this} {
  180.     set reserveCommand [CCCommand::reserve [$this path]]
  181.     return [vsCommandHandler execute $reserveCommand]
  182. }
  183.  
  184.  
  185. # Unreserve the checkout for this file.
  186. #
  187. method CCFile::unreserve {this} {
  188.     set unreserveCommand [CCCommand::unreserve [$this path]]
  189.     return [vsCommandHandler execute $unreserveCommand]
  190. }
  191.  
  192.  
  193. # Set the file comment to the specified comment.
  194. #
  195. method CCFile::setComment {this comment} {
  196.     set setCommentCommand [CCCommand::changeComment [$this path] $comment]
  197.     return [vsCommandHandler execute $setCommentCommand]
  198. }
  199.  
  200.  
  201. # Returns the version extended pathname to the specified version.
  202. #
  203. method CCFile::getReference {this {version ""}} {
  204.     if { $version == "" } {
  205.     return [$this path]
  206.     }
  207.     return "[$this path]\@\@$version"
  208. }
  209.  
  210.  
  211. # Does nothing.
  212. #
  213. method CCFile::deleteReference {this path} {
  214. }
  215.  
  216.  
  217. # Sets the specified ClearCase attribute to the
  218. # specified value.
  219. #
  220. method CCFile::setAttribute {this name value} {
  221.     set setCommand [CCCommand::setAttribute [$this path] $name $value]
  222.     return [vsCommandHandler executeSilent $setCommand]
  223. }
  224.  
  225.  
  226. # Get the value of the specified ClearCase attribute.
  227. #
  228. method CCFile::getAttributeValue {this name} {
  229.     return [CCCommand::getAttributeValue [$this path] $name]
  230. }
  231.  
  232. # Do not delete this line -- regeneration end marker
  233.  
  234.