123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 |
- package javax.print.attribute;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.Serializable;
- import java.util.HashMap;
- import java.util.Iterator;
- public class HashAttributeSet implements AttributeSet, Serializable
- {
- private static final long serialVersionUID = 5311560590283707917L;
- private Class myInterface;
- private transient HashMap attributeMap = new HashMap();
-
- public HashAttributeSet()
- {
- this(Attribute.class);
- }
-
- public HashAttributeSet(Attribute attribute)
- {
- this(attribute, Attribute.class);
- }
-
- public HashAttributeSet(Attribute[] attributes)
- {
- this(attributes, Attribute.class);
- }
-
- public HashAttributeSet(AttributeSet attributes)
- {
- this(attributes, Attribute.class);
- }
-
- protected HashAttributeSet(Class<?> interfaceName)
- {
- if (interfaceName == null)
- throw new NullPointerException("interfaceName may not be null");
- myInterface = interfaceName;
- }
-
- protected HashAttributeSet(Attribute attribute, Class<?> interfaceName)
- {
- this(interfaceName);
- if (attribute == null)
- throw new NullPointerException();
- addInternal(attribute, interfaceName);
- }
-
- protected HashAttributeSet(Attribute[] attributes, Class<?> interfaceName)
- {
- this(interfaceName);
- if (attributes != null)
- {
- for (int index = 0; index < attributes.length; index++)
- addInternal(attributes[index], interfaceName);
- }
- }
-
- protected HashAttributeSet(AttributeSet attributes, Class<?> interfaceName)
- {
- this(interfaceName);
- if (attributes != null)
- addAllInternal(attributes, interfaceName);
- }
-
- public boolean add(Attribute attribute)
- {
- return addInternal(attribute, myInterface);
- }
- private boolean addInternal(Attribute attribute, Class interfaceName)
- {
- if (attribute == null)
- throw new NullPointerException("attribute may not be null");
- AttributeSetUtilities.verifyAttributeCategory(interfaceName,
- myInterface);
- Object old = attributeMap.put
- (attribute.getCategory(), AttributeSetUtilities.verifyAttributeValue
- (attribute, interfaceName));
- return !attribute.equals(old);
- }
-
- public boolean addAll(AttributeSet attributes)
- {
- return addAllInternal(attributes, myInterface);
- }
- private boolean addAllInternal(AttributeSet attributes, Class interfaceName)
- {
- boolean modified = false;
- Attribute[] array = attributes.toArray();
- for (int index = 0; index < array.length; index++)
- if (addInternal(array[index], interfaceName))
- modified = true;
- return modified;
- }
-
- public void clear()
- {
- attributeMap.clear();
- }
-
- public boolean containsKey(Class<?> category)
- {
- return attributeMap.containsKey(category);
- }
-
- public boolean containsValue(Attribute attribute)
- {
- return attributeMap.containsValue(attribute);
- }
-
- public boolean equals(Object obj)
- {
- if (! (obj instanceof HashAttributeSet))
- return false;
- return attributeMap.equals(((HashAttributeSet) obj).attributeMap);
- }
-
- public Attribute get(Class<?> category)
- {
- if (category == null)
- throw new NullPointerException("category may not be null");
- return (Attribute) attributeMap.get(category);
- }
-
- public int hashCode()
- {
- int hashcode = 0;
- Iterator it = attributeMap.values().iterator();
- while (it.hasNext())
- hashcode = hashcode + it.next().hashCode();
- return hashcode;
- }
-
- public boolean isEmpty()
- {
- return attributeMap.isEmpty();
- }
-
- public boolean remove(Attribute attribute)
- {
- if (attribute == null)
- return false;
- return attributeMap.remove(attribute.getCategory()) != null;
- }
-
- public boolean remove(Class<?> category)
- {
- if (category == null)
- return false;
- return attributeMap.remove(category) != null;
- }
-
- public int size()
- {
- return attributeMap.size();
- }
-
- public Attribute[] toArray()
- {
- int index = 0;
- Iterator it = attributeMap.values().iterator();
- Attribute[] array = new Attribute[size()];
- while (it.hasNext())
- {
- array[index] = (Attribute) it.next();
- index++;
- }
- return array;
- }
-
- private void readObject(ObjectInputStream s)
- throws ClassNotFoundException, IOException
- {
- myInterface = (Class) s.readObject();
- int size = s.readInt();
- attributeMap = new HashMap(size);
- for (int i=0; i < size; i++)
- add((Attribute) s.readObject());
- }
- private void writeObject(ObjectOutputStream s) throws IOException
- {
- s.writeObject(myInterface);
- s.writeInt(size());
- Iterator it = attributeMap.values().iterator();
- while (it.hasNext())
- s.writeObject(it.next());
- }
- }
|