View Javadoc

1   /*
2   * The contents of this file are subject to the BT "ZEUS" Open Source 
3   * Licence (L77741), Version 1.0 (the "Licence"); you may not use this file 
4   * except in compliance with the Licence. You may obtain a copy of the Licence
5   * from $ZEUS_INSTALL/licence.html or alternatively from
6   * http://www.labs.bt.com/projects/agents/zeus/licence.htm
7   * 
8   * Except as stated in Clause 7 of the Licence, software distributed under the
9   * Licence is distributed WITHOUT WARRANTY OF ANY KIND, either express or 
10  * implied. See the Licence for the specific language governing rights and 
11  * limitations under the Licence.
12  * 
13  * The Original Code is within the package zeus.*.
14  * The Initial Developer of the Original Code is British Telecommunications
15  * public limited company, whose registered office is at 81 Newgate Street, 
16  * London, EC1A 7AJ, England. Portions created by British Telecommunications 
17  * public limited company are Copyright 1996-9. All Rights Reserved.
18  * 
19  * THIS NOTICE MUST BE INCLUDED ON ANY COPY OF THIS FILE
20  */
21  
22  
23  
24  package zeus.util;
25  
26  import java.util.*;
27  
28  public class OrderedHashtable extends Hashtable {
29     protected Vector keys = new Vector();
30  
31     public OrderedHashtable() {
32        super();
33     }
34     public OrderedHashtable(int capacity) {
35        super(capacity);
36     }
37     public OrderedHashtable(int capacity, float loadFactor) {
38        super(capacity, loadFactor);
39     }
40     public synchronized Object getKeyAt(int position) {
41        return keys.elementAt(position);
42     }
43     public synchronized Enumeration keys() {
44        return keys.elements();
45     }
46     public synchronized Enumeration elements() {
47        Vector data = new Vector();
48        for(int i = 0; i < keys.size(); i++ )
49           data.addElement(this.get(keys.elementAt(i)));
50        return data.elements();
51     }
52     public synchronized Object put(Object key, Object value) {
53        Object result = super.put(key,value);
54        if ( result == null )
55           keys.addElement(key);
56        return result;
57     }
58  
59     public synchronized Object remove(Object key) {
60        keys.removeElement(key);
61        return super.remove(key);
62     }
63  
64     public synchronized void clear() {
65        keys.removeAllElements();
66        super.clear();
67     }
68     public synchronized Object clone() {
69        return null;
70     }
71     public synchronized void reKey(Object previousKey, Object currentKey,
72                                    Object value) {
73        int index = keys.indexOf(previousKey);
74        keys.setElementAt(currentKey,index);
75        super.remove(previousKey);
76        super.put(currentKey,value);
77     }
78   //----------------16.11.98---GO---------------------------------------
79     public synchronized Object getObjectAt(int index){
80          return keys.elementAt(index);
81     }   
82  }