home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / ne_serial.tcl < prev    next >
Text File  |  1997-06-04  |  2KB  |  67 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. # Copyright (c) 1995 by Cayenne Software 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 Cayenne Software Inc.
  13. #
  14. #---------------------------------------------------------------------------
  15. #
  16. #    File        : @(#)ne_serial.tcl    /main/hindenburg/3
  17. #    Original date    : 31-01-1995
  18. #    Description    : procedure to support the serial data type
  19. #
  20. #---------------------------------------------------------------------------
  21. #
  22. # @(#)ne_serial.tcl    /main/hindenburg/3    4 Jun 1997 Copyright 1995 Cayenne Software Inc.
  23. #
  24. #---------------------------------------------------------------------------
  25.  
  26. # find the serial column nr
  27. #
  28. proc get_serial_column_nr {table} {
  29.     foreach col [$table columnSet] {
  30.         set col_type [get_table_type $col]
  31.         if [is_serial $col_type] {
  32.             return [get_column_nr $col]
  33.         }
  34.     }
  35.     return 0
  36. }
  37.  
  38. # update the data field which is a serial in the base class
  39. #
  40. proc call_for_all_bases_set_serial {class sect} {
  41.     set gen_nodes [$class genNodeSet]
  42.     if [lempty $gen_nodes] {
  43.         return
  44.     }
  45.     set class_data [uncap [$class getName]]Data
  46.     set class_serial_nr [get_serial_column_nr [$class table]]
  47.     $sect indent +
  48.     foreach gen_node $gen_nodes {
  49.         set superClass [$gen_node superClass]
  50.         if ![$superClass isPersistent] {
  51.             continue
  52.         }
  53.         set table [$superClass table]
  54.         set serial_nr [get_serial_column_nr $table]
  55.         if {$serial_nr == 0} {
  56.             continue
  57.         }
  58.         set name [$gen_node getSuperClassName]
  59.         set super_data [uncap $name]Data
  60.         expand_text $sect {
  61.         CALL ~$class_data.getVal(~$class_serial_nr).setValueStr(
  62.             ~$name::~$super_data.getVal(~$serial_nr).getValueStr())
  63.         }
  64.     }
  65.     $sect indent -
  66. }
  67.