home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / util / Properties.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  4.8 KB  |  311 lines

  1. package java.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.io.PrintStream;
  7. import java.io.PrintWriter;
  8.  
  9. public class Properties extends Hashtable {
  10.    protected Properties defaults;
  11.    private static char[] hexDigit = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
  12.  
  13.    public Properties() {
  14.       this((Properties)null);
  15.    }
  16.  
  17.    public Properties(Properties var1) {
  18.       this.defaults = var1;
  19.    }
  20.  
  21.    public synchronized void load(InputStream var1) throws IOException {
  22.       int var2 = 80;
  23.       char[] var3 = new char[var2];
  24.       int var4 = 0;
  25.       var1 = Runtime.getRuntime().getLocalizedInputStream(var1);
  26.       int var5 = var1.read();
  27.  
  28.       label149:
  29.       while(true) {
  30.          switch (var5) {
  31.             case -1:
  32.                return;
  33.             case 9:
  34.             case 10:
  35.             case 13:
  36.             case 32:
  37.                var5 = var1.read();
  38.                continue;
  39.             case 33:
  40.             case 35:
  41.                while(true) {
  42.                   var5 = var1.read();
  43.                   if (var5 < 0 || var5 == 10 || var5 == 13) {
  44.                      continue label149;
  45.                   }
  46.                }
  47.             default:
  48.                var4 = 0;
  49.          }
  50.  
  51.          while(var5 >= 0 && var5 != 61 && var5 != 58 && var5 != 32 && var5 != 9 && var5 != 10 && var5 != 13) {
  52.             if (var4 >= var2) {
  53.                var2 *= 2;
  54.                char[] var6 = new char[var2];
  55.                System.arraycopy(var3, 0, var6, 0, var3.length);
  56.                var3 = var6;
  57.             }
  58.  
  59.             var3[var4++] = (char)var5;
  60.             var5 = var1.read();
  61.          }
  62.  
  63.          while(var5 == 32 || var5 == 9) {
  64.             var5 = var1.read();
  65.          }
  66.  
  67.          if (var5 == 61 || var5 == 58) {
  68.             var5 = var1.read();
  69.          }
  70.  
  71.          while(var5 == 32 || var5 == 9) {
  72.             var5 = var1.read();
  73.          }
  74.  
  75.          String var14 = new String(var3, 0, var4);
  76.          var4 = 0;
  77.  
  78.          label111:
  79.          while(var5 >= 0 && var5 != 10 && var5 != 13) {
  80.             int var7 = 0;
  81.             if (var5 == 92) {
  82.                switch (var5 = var1.read()) {
  83.                   case 13:
  84.                      if ((var5 = var1.read()) != 10 && var5 != 32 && var5 != 9) {
  85.                         continue;
  86.                      }
  87.                   case 10:
  88.                      while(true) {
  89.                         while((var5 = var1.read()) == 32) {
  90.                         }
  91.  
  92.                         if (var5 != 9) {
  93.                            continue label111;
  94.                         }
  95.                      }
  96.                   case 110:
  97.                      var5 = 10;
  98.                      var7 = var1.read();
  99.                      break;
  100.                   case 114:
  101.                      var5 = 13;
  102.                      var7 = var1.read();
  103.                      break;
  104.                   case 116:
  105.                      var5 = 9;
  106.                      var7 = var1.read();
  107.                      break;
  108.                   case 117:
  109.                      while((var5 = var1.read()) == 117) {
  110.                      }
  111.  
  112.                      int var8 = 0;
  113.  
  114.                      label100:
  115.                      for(int var9 = 0; var9 < 4; ++var9) {
  116.                         var7 = var1.read();
  117.                         switch (var5) {
  118.                            case 48:
  119.                            case 49:
  120.                            case 50:
  121.                            case 51:
  122.                            case 52:
  123.                            case 53:
  124.                            case 54:
  125.                            case 55:
  126.                            case 56:
  127.                            case 57:
  128.                               var8 = (var8 << 4) + var5 - 48;
  129.                               break;
  130.                            case 65:
  131.                            case 66:
  132.                            case 67:
  133.                            case 68:
  134.                            case 69:
  135.                            case 70:
  136.                               var8 = (var8 << 4) + 10 + var5 - 65;
  137.                               break;
  138.                            case 97:
  139.                            case 98:
  140.                            case 99:
  141.                            case 100:
  142.                            case 101:
  143.                            case 102:
  144.                               var8 = (var8 << 4) + 10 + var5 - 97;
  145.                               break;
  146.                            default:
  147.                               break label100;
  148.                         }
  149.  
  150.                         var5 = var7;
  151.                      }
  152.  
  153.                      var5 = var8;
  154.                      break;
  155.                   default:
  156.                      var7 = var1.read();
  157.                }
  158.             } else {
  159.                var7 = var1.read();
  160.             }
  161.  
  162.             if (var4 >= var2) {
  163.                var2 *= 2;
  164.                char[] var16 = new char[var2];
  165.                System.arraycopy(var3, 0, var16, 0, var3.length);
  166.                var3 = var16;
  167.             }
  168.  
  169.             var3[var4++] = (char)var5;
  170.             var5 = var7;
  171.          }
  172.  
  173.          String var15 = new String(var3, 0, var4);
  174.          ((Hashtable)this).put(var14, var15);
  175.       }
  176.    }
  177.  
  178.    public synchronized void save(OutputStream var1, String var2) {
  179.       OutputStream var3 = Runtime.getRuntime().getLocalizedOutputStream(var1);
  180.       PrintStream var4 = new PrintStream(var3, false);
  181.       boolean var5 = var3 != var1;
  182.       if (var2 != null) {
  183.          var4.write(35);
  184.          var4.println(var2);
  185.       }
  186.  
  187.       var4.write(35);
  188.       var4.println(new Date());
  189.       Enumeration var6 = ((Hashtable)this).keys();
  190.  
  191.       while(var6.hasMoreElements()) {
  192.          String var7 = (String)var6.nextElement();
  193.          var4.print(var7);
  194.          var4.write(61);
  195.          String var8 = (String)((Hashtable)this).get(var7);
  196.          int var9 = var8.length();
  197.          boolean var10 = false;
  198.  
  199.          for(int var11 = 0; var11 < var9; ++var11) {
  200.             char var12 = var8.charAt(var11);
  201.             switch (var12) {
  202.                case '\t':
  203.                   var4.write(92);
  204.                   var4.write(116);
  205.                   break;
  206.                case '\n':
  207.                   var4.write(92);
  208.                   var4.write(110);
  209.                   break;
  210.                case '\r':
  211.                   var4.write(92);
  212.                   var4.write(114);
  213.                   break;
  214.                case '\\':
  215.                   var4.write(92);
  216.                   var4.write(92);
  217.                   break;
  218.                default:
  219.                   if (var12 < ' ' || var12 >= 127 || var10 && var12 == ' ') {
  220.                      if (var12 > 255 && var5) {
  221.                         var4.write(var12);
  222.                      } else {
  223.                         var4.write(92);
  224.                         var4.write(117);
  225.                         var4.write(toHex(var12 >> 12 & 15));
  226.                         var4.write(toHex(var12 >> 8 & 15));
  227.                         var4.write(toHex(var12 >> 4 & 15));
  228.                         var4.write(toHex(var12 & 15));
  229.                      }
  230.                   } else {
  231.                      var4.write(var12);
  232.                   }
  233.             }
  234.  
  235.             var10 = false;
  236.          }
  237.  
  238.          var4.write(10);
  239.       }
  240.  
  241.    }
  242.  
  243.    public String getProperty(String var1) {
  244.       String var2 = (String)super.get(var1);
  245.       return var2 == null && this.defaults != null ? this.defaults.getProperty(var1) : var2;
  246.    }
  247.  
  248.    public String getProperty(String var1, String var2) {
  249.       String var3 = this.getProperty(var1);
  250.       return var3 == null ? var2 : var3;
  251.    }
  252.  
  253.    public Enumeration propertyNames() {
  254.       Hashtable var1 = new Hashtable();
  255.       this.enumerate(var1);
  256.       return var1.keys();
  257.    }
  258.  
  259.    public void list(PrintStream var1) {
  260.       var1.println("-- listing properties --");
  261.       Hashtable var2 = new Hashtable();
  262.       this.enumerate(var2);
  263.  
  264.       String var4;
  265.       String var5;
  266.       for(Enumeration var3 = var2.keys(); var3.hasMoreElements(); var1.println(var4 + "=" + var5)) {
  267.          var4 = (String)var3.nextElement();
  268.          var5 = (String)var2.get(var4);
  269.          if (var5.length() > 40) {
  270.             var5 = var5.substring(0, 37) + "...";
  271.          }
  272.       }
  273.  
  274.    }
  275.  
  276.    public void list(PrintWriter var1) {
  277.       var1.println("-- listing properties --");
  278.       Hashtable var2 = new Hashtable();
  279.       this.enumerate(var2);
  280.  
  281.       String var4;
  282.       String var5;
  283.       for(Enumeration var3 = var2.keys(); var3.hasMoreElements(); var1.println(var4 + "=" + var5)) {
  284.          var4 = (String)var3.nextElement();
  285.          var5 = (String)var2.get(var4);
  286.          if (var5.length() > 40) {
  287.             var5 = var5.substring(0, 37) + "...";
  288.          }
  289.       }
  290.  
  291.    }
  292.  
  293.    private synchronized void enumerate(Hashtable var1) {
  294.       if (this.defaults != null) {
  295.          this.defaults.enumerate(var1);
  296.       }
  297.  
  298.       Enumeration var2 = ((Hashtable)this).keys();
  299.  
  300.       while(var2.hasMoreElements()) {
  301.          String var3 = (String)var2.nextElement();
  302.          var1.put(var3, ((Hashtable)this).get(var3));
  303.       }
  304.  
  305.    }
  306.  
  307.    private static char toHex(int var0) {
  308.       return hexDigit[var0 & 15];
  309.    }
  310. }
  311.