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