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

  1. #---------------------------------------------------------------------------
  2. #
  3. # Copyright (c) 1995 by Cadre Technologies Inc.
  4. #
  5. # This software is furnished under a license and may be used only in
  6. # accordance with the terms of such license and with the inclusion of
  7. # the above copyright notice. This software or any other copies thereof
  8. # may not be provided or otherwise made available to any other person.
  9. # No title to and ownership of the software is hereby transferred.
  10. #
  11. # The information in this software is subject to change without notice
  12. # and should not be construed as a commitment by Cadre Technologies Inc.
  13. #
  14. #---------------------------------------------------------------------------
  15. #
  16. #    File        : @(#)impsystems.tcl    /main/hindenburg/1
  17. #    Author        : Big Brother
  18. #    Original date    : September 1995
  19. #    Description    : Import systems from previous phase
  20. #
  21. #---------------------------------------------------------------------------
  22. #
  23.  
  24. source    [m4_path_name tcl cginit.tcl]
  25.  
  26. require    platform.tcl
  27.  
  28. proc importSystems {} {
  29.     global argv
  30.     set cc [ClientContext::global]
  31.     set systemList $argv
  32.     set argv ""
  33.  
  34.     set currPhaseV [$cc currentPhase]
  35.  
  36.     if [$currPhaseV isNil] {
  37.     puts stdout "Not at phase level"
  38.     return
  39.     }
  40.  
  41.     set prevPhaseV [$currPhaseV previous [$cc currentConfig]]
  42.  
  43.     if [$prevPhaseV isNil] {
  44.     puts stdout "Previous phase version not found"
  45.     return
  46.     }
  47.  
  48.     while {![[$cc currentSystem] isNil]} {
  49.     $cc upLevel
  50.     }
  51.  
  52.     if {$systemList == ""} {
  53.     return [importNewSystems $cc $prevPhaseV]
  54.     }
  55.  
  56.     foreach sysId $systemList {
  57.     set prevSystem [System new $sysId]
  58.  
  59.     if [$prevSystem isNil] {
  60.         puts stdout "System with id '$sysId' not found"
  61.         continue
  62.     }
  63.  
  64.     set prevSysV [$prevSystem selectedVersion [$cc currentConfig]]
  65.  
  66.     if {[[$currPhaseV phase] type] == "Implementation"} {
  67.         importSpecifiedSystem $cc $prevSysV
  68.     } else {
  69.         copySpecifiedSystem $cc $prevSysV 
  70.     }
  71.     }
  72. }
  73.  
  74. #
  75. #    Import systems that exist in previous phase but not in current phase
  76. #
  77.  
  78. proc importNewSystems {cc prevPhaseV} {
  79.     set currPhaseV [$cc currentPhase]
  80.  
  81.     foreach prevSysV [$prevPhaseV systemVersions] {
  82.     set prevSystem [$prevSysV system]
  83.  
  84.     if {[$prevSystem type] == "system"} {
  85.         set sysName [$prevSystem name]
  86.  
  87.         if [[$currPhaseV findSystemVersion $sysName system] isNil] {
  88.         if {[[$currPhaseV phase] type] == "Implementation"} {
  89.             importSpecifiedSystem $cc $prevSysV
  90.         } else {
  91.             copySpecifiedSystem $cc $prevSysV
  92.         }
  93.         }
  94.     }
  95.     }
  96. }
  97.  
  98. #
  99. #    Copy system from previous phase to current phase
  100. #
  101.  
  102. proc copySpecifiedSystem {cc prevSysV} {
  103.     set sysName [[$prevSysV system] name]
  104.     set currPhaseV [$cc currentPhase]
  105.     set currConfV [$cc currentConfig]
  106.  
  107.     puts stdout ""
  108.     puts stdout "Copying system '$sysName'"
  109.  
  110.     if {[catch {$currPhaseV copy -systemVersion $prevSysV $currConfV} reason]} {
  111.     puts stdout "Copy failed: $reason"
  112.     } else {
  113.     puts stdout "Copy succeeded"
  114.     }
  115. }
  116.  
  117. #
  118. #    Import specified system to Implementation phase
  119. #
  120.  
  121. proc importSpecifiedSystem {cc prevSysV} {
  122.     set sysName [[$prevSysV system] name]
  123.     set currConfV [$cc currentConfig]
  124.     set currPhaseV [$cc currentPhase]
  125.  
  126.     set newSysV [$currPhaseV createSystemVersion $sysName cl system $currConfV]
  127.     $cc downLevelId $newSysV
  128.  
  129.     puts stdout ""
  130.     puts stdout "Importing system '$sysName'"
  131.     puts stdout ""
  132.  
  133.     global src_objects; set src_objects "oopl sql"
  134.     global tgt_objects; set tgt_objects ""
  135.  
  136.     require_with_reload import.tcl
  137.  
  138.     puts stdout ""
  139.     puts stdout "Finished importing system '$sysName'"
  140.     puts stdout ""
  141.  
  142.     while {![[$cc currentSystem] isNil]} {
  143.     $cc upLevel
  144.     }
  145. }
  146.  
  147. #
  148. # Just call importSystems
  149. #
  150.  
  151. if [catch {importSystems}] {
  152.     puts stderr $errorInfo
  153. }
  154.