home *** CD-ROM | disk | FTP | other *** search
/ Popular Software (Premium Edition) / mycd.iso / INTERNET / NETSCAP4.06 / CP32E406.EXE / nav40.z / ldap10.jar / netscape / ldap / LDAPAttributeSet.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-08-13  |  3.9 KB  |  191 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 {
  9.    private int current;
  10.    private Vector attrs;
  11.    Hashtable attrHash;
  12.  
  13.    public LDAPAttributeSet() {
  14.       this.attrs = new Vector();
  15.       this.attrHash = new Hashtable();
  16.       this.current = 0;
  17.    }
  18.  
  19.    LDAPAttributeSet(LDAPAttribute[] var1) {
  20.       this.attrs = new Vector();
  21.       this.attrHash = new Hashtable();
  22.       this.current = 0;
  23.  
  24.       for(int var2 = 0; var2 < var1.length; ++var2) {
  25.          this.attrs.addElement(var1[var2]);
  26.          this.attrHash.put(var1[var2].getName().toLowerCase(), var1[var2]);
  27.       }
  28.  
  29.    }
  30.  
  31.    protected LDAPAttributeSet(LDAPAttributeSet var1) {
  32.       synchronized(this){}
  33.  
  34.       try {
  35.          this.attrs = (Vector)var1.attrs.clone();
  36.       } catch (Throwable var5) {
  37.          throw var5;
  38.       }
  39.  
  40.       this.attrHash = new Hashtable();
  41.  
  42.       for(int var2 = 0; var2 < this.attrs.size(); ++var2) {
  43.          LDAPAttribute var3 = (LDAPAttribute)this.attrs.elementAt(var2);
  44.          this.attrHash.put(var3.getName().toLowerCase(), var3);
  45.       }
  46.  
  47.       this.current = 0;
  48.    }
  49.  
  50.    public Enumeration getAttributes() {
  51.       return this.attrs.elements();
  52.    }
  53.  
  54.    public LDAPAttributeSet getSubset(String var1) {
  55.       LDAPAttributeSet var2 = new LDAPAttributeSet();
  56.       if (var1 == null) {
  57.          return var2;
  58.       } else {
  59.          StringTokenizer var3 = new StringTokenizer(var1, ";");
  60.          if (var3.countTokens() < 1) {
  61.             return var2;
  62.          } else {
  63.             String[] var4 = new String[var3.countTokens()];
  64.  
  65.             for(int var5 = 0; var3.hasMoreElements(); ++var5) {
  66.                var4[var5] = (String)var3.nextElement();
  67.             }
  68.  
  69.             Enumeration var6 = this.getAttributes();
  70.  
  71.             while(var6.hasMoreElements()) {
  72.                LDAPAttribute var7 = (LDAPAttribute)var6.nextElement();
  73.                if (var7.hasSubtypes(var4)) {
  74.                   var2.add(new LDAPAttribute(var7));
  75.                }
  76.             }
  77.  
  78.             return var2;
  79.          }
  80.       }
  81.    }
  82.  
  83.    public LDAPAttribute getAttribute(String var1) {
  84.       return (LDAPAttribute)this.attrHash.get(var1.toLowerCase());
  85.    }
  86.  
  87.    public LDAPAttribute getAttribute(String var1, String var2) {
  88.       if (var2 != null && var2.length() >= 1) {
  89.          String var3 = var2.toLowerCase();
  90.          if (!var3.substring(0, 5).equals("lang-")) {
  91.             return null;
  92.          } else {
  93.             StringTokenizer var4 = new StringTokenizer(var3, "-");
  94.             var4.nextToken();
  95.             String[] var5 = new String[var4.countTokens()];
  96.  
  97.             for(int var6 = 0; var4.hasMoreTokens(); ++var6) {
  98.                var5[var6] = var4.nextToken();
  99.             }
  100.  
  101.             String var7 = LDAPAttribute.getBaseName(var1);
  102.             String[] var8 = LDAPAttribute.getSubtypes(var1);
  103.             LDAPAttribute var9 = null;
  104.             int var10 = 0;
  105.  
  106.             for(int var16 = 0; var16 < this.attrs.size(); ++var16) {
  107.                boolean var11 = false;
  108.                LDAPAttribute var12 = (LDAPAttribute)this.attrs.elementAt(var16);
  109.                if (var12.getBaseName().equalsIgnoreCase(var7)) {
  110.                   if (var8 != null && var8.length >= 1) {
  111.                      if (var12.hasSubtypes(var8)) {
  112.                         var11 = true;
  113.                      }
  114.                   } else {
  115.                      var11 = true;
  116.                   }
  117.                }
  118.  
  119.                Object var13 = null;
  120.                if (var11) {
  121.                   String var17 = var12.getLangSubtype();
  122.                   if (var17 == null) {
  123.                      var9 = var12;
  124.                   } else {
  125.                      var4 = new StringTokenizer(var17.toLowerCase(), "-");
  126.                      var4.nextToken();
  127.                      if (var4.countTokens() <= var5.length) {
  128.                         int var14;
  129.                         for(var14 = 0; var4.hasMoreTokens(); ++var14) {
  130.                            if (!var5[var14].equals(var4.nextToken())) {
  131.                               var14 = 0;
  132.                               break;
  133.                            }
  134.                         }
  135.  
  136.                         if (var14 > var10) {
  137.                            var9 = var12;
  138.                            var10 = var14;
  139.                         }
  140.                      }
  141.                   }
  142.                }
  143.             }
  144.  
  145.             return var9;
  146.          }
  147.       } else {
  148.          return this.getAttribute(var1);
  149.       }
  150.    }
  151.  
  152.    public LDAPAttribute elementAt(int var1) {
  153.       return (LDAPAttribute)this.attrs.elementAt(var1);
  154.    }
  155.  
  156.    public void removeElementAt(int var1) {
  157.       this.attrs.removeElementAt(var1);
  158.    }
  159.  
  160.    public int size() {
  161.       return this.attrs.size();
  162.    }
  163.  
  164.    public synchronized void add(LDAPAttribute var1) {
  165.       this.attrs.addElement(var1);
  166.       this.attrHash.put(var1.getName().toLowerCase(), var1);
  167.    }
  168.  
  169.    public synchronized void remove(String var1) {
  170.       for(int var2 = 0; var2 < this.attrs.size(); ++var2) {
  171.          LDAPAttribute var3 = (LDAPAttribute)this.attrs.elementAt(var2);
  172.          if (var1.equalsIgnoreCase(var3.getName())) {
  173.             this.attrs.removeElementAt(var2);
  174.             return;
  175.          }
  176.       }
  177.  
  178.    }
  179.  
  180.    public String toString() {
  181.       String var1 = "LDAPAttributeSet: ";
  182.       if (this.attrs.size() > 0) {
  183.          for(int var2 = 0; var2 < this.attrs.size(); ++var2) {
  184.             var1 = var1 + this.attrs.elementAt(var2).toString();
  185.          }
  186.       }
  187.  
  188.       return var1;
  189.    }
  190. }
  191.