home *** CD-ROM | disk | FTP | other *** search
/ Popular Software (Premium Edition) / mycd.iso / INTERNET / NETSCAP4.06 / CP32E406.EXE / nav40.z / ldap10.jar / netscape / ldap / LDAPAttribute.class (.txt) next >
Encoding:
Java Class File  |  1998-08-13  |  4.6 KB  |  235 lines

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