mirror of git://gcc.gnu.org/git/gcc.git
195 lines
4.0 KiB
Java
195 lines
4.0 KiB
Java
/* Copyright (C) 2000, 2001 Free Software Foundation
|
|
|
|
This file is part of libgcj.
|
|
|
|
This software is copyrighted work licensed under the terms of the
|
|
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
|
details. */
|
|
|
|
package javax.naming.directory;
|
|
|
|
import javax.naming.*;
|
|
import java.util.*;
|
|
|
|
/**
|
|
* @author Tom Tromey <tromey@redhat.com>
|
|
* @date June 22, 2001
|
|
*/
|
|
public class BasicAttributes implements Attributes
|
|
{
|
|
public BasicAttributes ()
|
|
{
|
|
this (false);
|
|
}
|
|
|
|
public BasicAttributes (boolean ignoreCase)
|
|
{
|
|
this.ignoreCase = ignoreCase;
|
|
this.attributes = new Vector ();
|
|
}
|
|
|
|
public BasicAttributes (String attrID, Object val)
|
|
{
|
|
this (attrID, val, false);
|
|
}
|
|
|
|
public BasicAttributes (String attrID, Object val, boolean ignoreCase)
|
|
{
|
|
this.ignoreCase = ignoreCase;
|
|
attributes = new Vector ();
|
|
attributes.add (new BasicAttribute (attrID, val));
|
|
}
|
|
|
|
public Object clone ()
|
|
{
|
|
// Slightly inefficient as we make a garbage Vector here.
|
|
BasicAttributes ba = new BasicAttributes (ignoreCase);
|
|
ba.attributes = (Vector) attributes.clone ();
|
|
return ba;
|
|
}
|
|
|
|
public boolean equals (Object obj)
|
|
{
|
|
if (! (obj instanceof BasicAttributes))
|
|
return false;
|
|
BasicAttributes b = (BasicAttributes) obj;
|
|
if (ignoreCase != b.ignoreCase
|
|
|| attributes.size () != b.attributes.size ())
|
|
return false;
|
|
|
|
// Does order matter?
|
|
for (int i = 0; i < attributes.size (); ++i)
|
|
{
|
|
if (! attributes.get (i).equals (b.attributes.get (i)))
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public Attribute get (String attrID)
|
|
{
|
|
for (int i = 0; i < attributes.size (); ++i)
|
|
{
|
|
Attribute at = (Attribute) attributes.get (i);
|
|
if ((ignoreCase && attrID.equalsIgnoreCase (at.getID ()))
|
|
|| (! ignoreCase && attrID.equals (at.getID ())))
|
|
return at;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public NamingEnumeration getAll ()
|
|
{
|
|
return new BasicAttributesEnumeration (false);
|
|
}
|
|
|
|
public NamingEnumeration getIDs ()
|
|
{
|
|
return new BasicAttributesEnumeration (true);
|
|
}
|
|
|
|
public int hashCode ()
|
|
{
|
|
int val = 0;
|
|
for (int i = 0; i < attributes.size (); ++i)
|
|
val += attributes.get (i).hashCode ();
|
|
return val;
|
|
}
|
|
|
|
public boolean isCaseIgnored ()
|
|
{
|
|
return ignoreCase;
|
|
}
|
|
|
|
public Attribute put (Attribute attr)
|
|
{
|
|
Attribute r = remove (attr.getID ());
|
|
attributes.add (attr);
|
|
return r;
|
|
}
|
|
|
|
public Attribute put (String attrID, Object val)
|
|
{
|
|
return put (new BasicAttribute (attrID, val));
|
|
}
|
|
|
|
public Attribute remove (String attrID)
|
|
{
|
|
for (int i = 0; i < attributes.size (); ++i)
|
|
{
|
|
Attribute at = (Attribute) attributes.get (i);
|
|
if ((ignoreCase && attrID.equalsIgnoreCase (at.getID ()))
|
|
|| (! ignoreCase && attrID.equals (at.getID ())))
|
|
{
|
|
attributes.remove (i);
|
|
return at;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public int size ()
|
|
{
|
|
return attributes.size ();
|
|
}
|
|
|
|
public String toString ()
|
|
{
|
|
String r = "";
|
|
for (int i = 0; i < attributes.size (); ++i)
|
|
{
|
|
if (i > 0)
|
|
r += "; ";
|
|
r += attributes.get (i).toString ();
|
|
}
|
|
return r;
|
|
}
|
|
|
|
// This is set by the serialization spec.
|
|
private boolean ignoreCase;
|
|
private transient Vector attributes;
|
|
|
|
// Used when enumerating.
|
|
private class BasicAttributesEnumeration implements NamingEnumeration
|
|
{
|
|
int where = -1;
|
|
boolean id;
|
|
|
|
public BasicAttributesEnumeration (boolean id)
|
|
{
|
|
this.id = id;
|
|
}
|
|
|
|
public void close () throws NamingException
|
|
{
|
|
}
|
|
|
|
public boolean hasMore () throws NamingException
|
|
{
|
|
return hasMoreElements ();
|
|
}
|
|
|
|
public Object next () throws NamingException
|
|
{
|
|
return nextElement ();
|
|
}
|
|
|
|
public boolean hasMoreElements ()
|
|
{
|
|
return where < attributes.size ();
|
|
}
|
|
|
|
public Object nextElement () throws NoSuchElementException
|
|
{
|
|
if (where + 1 >= attributes.size ())
|
|
throw new NoSuchElementException ("no more elements");
|
|
++where;
|
|
Attribute at = (Attribute) attributes.get (where);
|
|
return id ? (Object) at.getID () : (Object) at;
|
|
}
|
|
}
|
|
}
|