+++ /dev/null
-/* 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;
- }
- }
-}