home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / stimporter.tcl < prev    next >
Text File  |  1997-01-30  |  3KB  |  135 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)stimporter.tcl    /main/hindenburg/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)stimporter.tcl    /main/hindenburg/1   30 Jan 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12.  
  13. require stgclasses.tcl
  14. require stgrammar.tcl
  15. require stfilehand.tcl
  16. require stgenerato.tcl
  17. require stregenera.tcl
  18.  
  19. # End user added include file section
  20.  
  21. require "importer.tcl"
  22.  
  23. Class StImporter : {Importer} {
  24.     constructor
  25.     method destructor
  26.     method generateOopl
  27.     method getFileNamesNotToGenerateFor
  28.     method getOoplFileTypesToGenerateFor
  29. }
  30.  
  31. constructor StImporter {class this} {
  32.     set this [Importer::constructor $class $this]
  33.     # Start constructor user section
  34.     # End constructor user section
  35.     return $this
  36. }
  37.  
  38. method StImporter::destructor {this} {
  39.     # Start destructor user section
  40.     # End destructor user section
  41.     $this Importer::destructor
  42. }
  43.  
  44. method StImporter::generateOopl {this classes} {
  45.     set fileHandler [STFileHandler new]
  46.     $fileHandler sourceTclFiles
  47.     set selectedClasses [List new]
  48.  
  49.     foreach class $classes {
  50.         if [$class isExternal] {
  51.         continue
  52.         }
  53.  
  54.         if {[$class getName] == ""} {
  55.         m4_warning $W_CLASS_WITHOUT_NAME
  56.         continue
  57.         }
  58.  
  59.         set externalSource [List new]
  60.         $externalSource contents [string trim [$class getPropertyValue class_source]]
  61.         if {![$externalSource empty]} {
  62.         $externalSource foreach fileName {
  63.             $fileHandler importExternal $class [$fileHandler stType] $fileName
  64.         }
  65.         continue
  66.         }
  67.  
  68.         $selectedClasses append $class
  69.     }
  70.  
  71.     $fileHandler checkUniqueFiles $selectedClasses
  72.  
  73.     set generator [STGenerator new]
  74.  
  75.     $selectedClasses foreach class {
  76.         set l [List new]
  77.         $l append $class
  78.         set generatedSections [$generator generate $l]
  79.  
  80.         $generatedSections foreach type classToSection {
  81.         $classToSection foreach class section {
  82.             $fileHandler writeSectionToFile $section $class $type
  83.         }
  84.  
  85.         set classToSection ""
  86.         }
  87.  
  88.         set generatedSections ""
  89.     }
  90.  
  91.     #
  92.     # Special files
  93.     #
  94.  
  95.     if [lempty [$this targetObjects]] {
  96.         #
  97.         # Import all or import new
  98.         #
  99.  
  100.         set specialFiles [$fileHandler getSpecialFiles]
  101.     } else {
  102.         #
  103.         # Import selected
  104.         #
  105.  
  106.         set specialFiles [List new]
  107.         set selectedFiles [$this targetObjects]
  108.  
  109.         [$fileHandler getSpecialFiles] foreach specialFile {
  110.         if {[lsearch $selectedFiles $specialFile] != -1} {
  111.             $specialFiles append $specialFile
  112.         }
  113.         }
  114.     }
  115.  
  116.     if {![$specialFiles empty]} {
  117.         if {[M4CheckManager::getErrorCount] > 0} {
  118.         puts "Not generating special files because of previous errors"
  119.         } else {
  120.         $generator generateSpecialFiles [$this ooplModel] $specialFiles
  121.         }
  122.     }
  123. }
  124.  
  125. method StImporter::getFileNamesNotToGenerateFor {this} {
  126.     return "vwimport vwexport"
  127. }
  128.  
  129. method StImporter::getOoplFileTypesToGenerateFor {this} {
  130.     return "st"
  131. }
  132.  
  133. # Do not delete this line -- regeneration end marker
  134.  
  135.