home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / ldapjdk.jar / netscape / ldap / LDAPAttributeSet.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-13  |  3.5 KB  |  238 lines

  1. package netscape.ldap;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Hashtable;
  5. import java.util.StringTokenizer;
  6. import java.util.Vector;
  7.  
  8. public class LDAPAttributeSet implements Cloneable {
  9.    Hashtable attrHash;
  10.    LDAPAttribute[] attrs = new LDAPAttribute[0];
  11.    static final int ATTR_COUNT_REQUIRES_HASH = 5;
  12.  
  13.    public LDAPAttributeSet() {
  14.    }
  15.  
  16.    public LDAPAttributeSet(LDAPAttribute[] var1) {
  17.       this.attrs = var1;
  18.    }
  19.  
  20.    public synchronized Object clone() {
  21.       try {
  22.          LDAPAttributeSet var1 = new LDAPAttributeSet();
  23.          var1.attrs = new LDAPAttribute[this.attrs.length];
  24.  
  25.          for(int var2 = 0; var2 < this.attrs.length; ++var2) {
  26.             var1.attrs[var2] = new LDAPAttribute(this.attrs[var2]);
  27.          }
  28.  
  29.          return var1;
  30.       } catch (Exception var3) {
  31.          return null;
  32.       }
  33.    }
  34.  
  35.    public Enumeration getAttributes() {
  36.       Vector var1 = new Vector();
  37.       synchronized(this){}
  38.  
  39.       try {
  40.          for(int var4 = 0; var4 < this.attrs.length; ++var4) {
  41.             var1.addElement(this.attrs[var4]);
  42.          }
  43.       } catch (Throwable var6) {
  44.          throw var6;
  45.       }
  46.  
  47.       return var1.elements();
  48.    }
  49.  
  50.    public LDAPAttributeSet getSubset(String var1) {
  51.       LDAPAttributeSet var2 = new LDAPAttributeSet();
  52.       if (var1 == null) {
  53.          return var2;
  54.       } else {
  55.          StringTokenizer var3 = new StringTokenizer(var1, ";");
  56.          if (var3.countTokens() < 1) {
  57.             return var2;
  58.          } else {
  59.             String[] var4 = new String[var3.countTokens()];
  60.  
  61.             for(int var5 = 0; var3.hasMoreElements(); ++var5) {
  62.                var4[var5] = (String)var3.nextElement();
  63.             }
  64.  
  65.             Enumeration var6 = this.getAttributes();
  66.  
  67.             while(var6.hasMoreElements()) {
  68.                LDAPAttribute var7 = (LDAPAttribute)var6.nextElement();
  69.                if (var7.hasSubtypes(var4)) {
  70.                   var2.add(new LDAPAttribute(var7));
  71.                }
  72.             }
  73.  
  74.             return var2;
  75.          }
  76.       }
  77.    }
  78.  
  79.    public LDAPAttribute getAttribute(String var1) {
  80.       this.prepareHashtable();
  81.       if (this.attrHash != null) {
  82.          return (LDAPAttribute)this.attrHash.get(var1.toLowerCase());
  83.       } else {
  84.          for(int var2 = 0; var2 < this.attrs.length; ++var2) {
  85.             if (var1.equalsIgnoreCase(this.attrs[var2].getName())) {
  86.                return this.attrs[var2];
  87.             }
  88.          }
  89.  
  90.          return null;
  91.       }
  92.    }
  93.  
  94.    private void prepareHashtable() {
  95.       if (this.attrHash == null && this.attrs.length >= 5) {
  96.          this.attrHash = new Hashtable();
  97.  
  98.          for(int var1 = 0; var1 < this.attrs.length; ++var1) {
  99.             this.attrHash.put(this.attrs[var1].getName().toLowerCase(), this.attrs[var1]);
  100.          }
  101.       }
  102.  
  103.    }
  104.  
  105.    public LDAPAttribute getAttribute(String var1, String var2) {
  106.       if (var2 != null && var2.length() >= 1) {
  107.          String var3 = var2.toLowerCase();
  108.          if (var3.length() >= 5 && var3.substring(0, 5).equals("lang-")) {
  109.             StringTokenizer var4 = new StringTokenizer(var3, "-");
  110.             var4.nextToken();
  111.             String[] var5 = new String[var4.countTokens()];
  112.  
  113.             for(int var6 = 0; var4.hasMoreTokens(); ++var6) {
  114.                var5[var6] = var4.nextToken();
  115.             }
  116.  
  117.             String var7 = LDAPAttribute.getBaseName(var1);
  118.             String[] var8 = LDAPAttribute.getSubtypes(var1);
  119.             LDAPAttribute var9 = null;
  120.             int var10 = 0;
  121.  
  122.             for(int var16 = 0; var16 < this.attrs.length; ++var16) {
  123.                boolean var11 = false;
  124.                LDAPAttribute var12 = this.attrs[var16];
  125.                if (var12.getBaseName().equalsIgnoreCase(var7)) {
  126.                   if (var8 != null && var8.length >= 1) {
  127.                      if (var12.hasSubtypes(var8)) {
  128.                         var11 = true;
  129.                      }
  130.                   } else {
  131.                      var11 = true;
  132.                   }
  133.                }
  134.  
  135.                Object var13 = null;
  136.                if (var11) {
  137.                   String var17 = var12.getLangSubtype();
  138.                   if (var17 == null) {
  139.                      var9 = var12;
  140.                   } else {
  141.                      var4 = new StringTokenizer(var17.toLowerCase(), "-");
  142.                      var4.nextToken();
  143.                      if (var4.countTokens() <= var5.length) {
  144.                         int var14;
  145.                         for(var14 = 0; var4.hasMoreTokens(); ++var14) {
  146.                            if (!var5[var14].equals(var4.nextToken())) {
  147.                               var14 = 0;
  148.                               break;
  149.                            }
  150.                         }
  151.  
  152.                         if (var14 > var10) {
  153.                            var9 = var12;
  154.                            var10 = var14;
  155.                         }
  156.                      }
  157.                   }
  158.                }
  159.             }
  160.  
  161.             return var9;
  162.          } else {
  163.             return null;
  164.          }
  165.       } else {
  166.          return this.getAttribute(var1);
  167.       }
  168.    }
  169.  
  170.    public LDAPAttribute elementAt(int var1) {
  171.       return this.attrs[var1];
  172.    }
  173.  
  174.    public void removeElementAt(int var1) {
  175.       if (var1 >= 0 && var1 < this.attrs.length) {
  176.          synchronized(this){}
  177.  
  178.          try {
  179.             LDAPAttribute[] var4 = new LDAPAttribute[this.attrs.length - 1];
  180.             int var5 = 0;
  181.  
  182.             for(int var6 = 0; var6 < this.attrs.length; ++var6) {
  183.                if (var6 != var1) {
  184.                   var4[var5++] = this.attrs[var6];
  185.                }
  186.             }
  187.  
  188.             this.attrs = var4;
  189.          } catch (Throwable var8) {
  190.             throw var8;
  191.          }
  192.  
  193.       }
  194.    }
  195.  
  196.    public int size() {
  197.       return this.attrs.length;
  198.    }
  199.  
  200.    public synchronized void add(LDAPAttribute var1) {
  201.       if (var1 != null) {
  202.          LDAPAttribute[] var2 = new LDAPAttribute[this.attrs.length + 1];
  203.  
  204.          for(int var3 = 0; var3 < this.attrs.length; ++var3) {
  205.             var2[var3] = this.attrs[var3];
  206.          }
  207.  
  208.          var2[this.attrs.length] = var1;
  209.          this.attrs = var2;
  210.          if (this.attrHash != null) {
  211.             this.attrHash.put(var1.getName().toLowerCase(), var1);
  212.          }
  213.       }
  214.  
  215.    }
  216.  
  217.    public synchronized void remove(String var1) {
  218.       for(int var2 = 0; var2 < this.attrs.length; ++var2) {
  219.          if (var1.equalsIgnoreCase(this.attrs[var2].getName())) {
  220.             this.removeElementAt(var2);
  221.             return;
  222.          }
  223.       }
  224.  
  225.    }
  226.  
  227.    public String toString() {
  228.       String var1 = "LDAPAttributeSet: ";
  229.       if (this.attrs.length > 0) {
  230.          for(int var2 = 0; var2 < this.attrs.length; ++var2) {
  231.             var1 = var1 + this.attrs[var2].toString();
  232.          }
  233.       }
  234.  
  235.       return var1;
  236.    }
  237. }
  238.