home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / vsfile.tcl < prev    next >
Text File  |  1997-08-29  |  4KB  |  157 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)vsfile.tcl    /main/titanic/6
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)vsfile.tcl    /main/titanic/6   29 Aug 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. # This class represents a VSFile. It provides
  16. # an abstract interface that all subclasses must 
  17. # implement, as well as general VSFile functionality.
  18.  
  19. Class VSFile : {Object} {
  20.     method destructor
  21.     constructor
  22.     method path
  23.     method vsPath
  24.     method updatePath
  25.     method createVSPath
  26.     method createUserPath
  27.     method setClass
  28.     method getClass
  29.     method isNil
  30.  
  31.     # Cache for file path name in user environment.
  32.     #
  33.     attribute _path
  34.  
  35.     # Cache for file path in VS environment.
  36.     #
  37.     attribute _vsPath
  38.  
  39.     # List of temporary files that have been used as
  40.     # reference to a version of this file.
  41.     #
  42.     attribute references
  43.  
  44.     # Name of this file.
  45.     #
  46.     attribute name
  47.  
  48.     # ObjectTeam type of this file.
  49.     #
  50.     attribute type
  51.  
  52.     # project to which this file belongs.
  53.     #
  54.     attribute project
  55.     attribute systemVersion
  56. }
  57.  
  58.  
  59. # The name of the attribute that is used to store
  60. # generated class info.
  61. #
  62. global VSFile::classAttribute
  63. set VSFile::classAttribute "CLASSNAME"
  64.  
  65.  
  66. method VSFile::destructor {this} {
  67.     # Start destructor user section
  68.     # End destructor user section
  69. }
  70.  
  71.  
  72. # Creates file in given system with given type,
  73. # set project and name.
  74. #
  75. constructor VSFile {class this name type system} {
  76.     set this [Object::constructor $class $this $name]
  77.     $this systemVersion $system
  78.     $this type $type
  79.     $this project [$system project]
  80.     $this name [$system objectToFileName $name $type]
  81.     return $this
  82. }
  83.  
  84.  
  85. # Returns the user environment path of this object.
  86. #
  87. method VSFile::path {this} {
  88.     if { [$this _path] == "" } {
  89.     $this _path [[$this systemVersion] vsFileUserPath \
  90.         [$this name] [$this type]]
  91.     }
  92.     return [$this _path]
  93. }
  94.  
  95.  
  96. # Returns the path of the file in the VS environment.
  97. #
  98. method VSFile::vsPath {this} {
  99.     if { [$this _vsPath] == "" } {
  100.     $this _vsPath [[$this systemVersion] vsFileVSPath \
  101.         [$this name] [$this type]]
  102.     }
  103.     return [$this _vsPath]
  104. }
  105.  
  106.  
  107. # Refresh the path information
  108. # in _path and _vsPath.
  109. #
  110. method VSFile::updatePath {this} {
  111.     $this _path ""
  112.     $this _vsPath ""
  113. }
  114.  
  115.  
  116. # This method creates the path of this file in the VS environment.
  117. #
  118. method VSFile::createVSPath {this type} {
  119.     set vsPath [path_name directory [$this vsPath]]
  120.     VSSystem::createVSPath "${type}System" $vsPath
  121. }
  122.  
  123.  
  124. # This method creates the path of this file in 
  125. # the user environment.
  126. #
  127. method VSFile::createUserPath {this type} {
  128.     set userPath [path_name directory [$this path]]
  129.     VSSystem::createUserPath "${type}System" $userPath
  130. }
  131.  
  132.  
  133. # Associate this VSFile with the given classname.
  134. #
  135. method VSFile::setClass {this className} {
  136.     global VSFile::classAttribute
  137.     $this setAttribute ${VSFile::classAttribute} $className
  138. }
  139.  
  140.  
  141. # Get the associated classname of this file.
  142. #
  143. method VSFile::getClass {this} {
  144.     global VSFile::classAttribute
  145.     return [$this getAttributeValue ${VSFile::classAttribute}]
  146. }
  147.  
  148.  
  149. # Simulate repository objects by implementing this method.
  150. #
  151. method VSFile::isNil {this} {
  152.     return 0
  153. }
  154.  
  155. # Do not delete this line -- regeneration end marker
  156.  
  157.