home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / stimporter.tcl < prev    next >
Text File  |  1997-06-19  |  3KB  |  123 lines

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