1
2 package st.ata.util;
3
4 import java.io.InputStream;
5 import java.util.Date;
6 import java.util.Iterator;
7
8
9
10 /*** Map from string keys to values. The mapping is "strongly types",
11 * e.g., a value saved as an "int" cannot be retrieved as a "long" or
12 * a "string". Throws {@link ClassCastException} if a type error
13 * occurs, {@link java.util.NoSuchElementException} if the key is not
14 * in the table. */
15
16 public interface AList {
17 public static final int F_ARRAY = 128;
18 public static final int F_ARRAY_ARRAY = 256;
19 public static final int T_ALIST = 1;
20 public static final int T_DATE = 2;
21 public static final int T_INT = 3;
22 public static final int T_LONG = 4;
23 public static final int T_STRING = 5;
24 public static final int T_INPUTSTREAM = 6;
25 public static final int T_OBJECT = 7;
26 public static final int T_UNDEFINED = 0;
27
28 /*** Returns an iterator of {@link String} containing all keys in
29 * this list */
30 public Iterator getKeys();
31
32 public boolean containsKey(String key);
33
34 public Object getObject(String key);
35 public void putObject(String key, Object val);
36 public Object clone();
37 public void remove(String key);
38 /*** Returns an array of {@link String} containing all keys in
39 * this list */
40
41 public String[] getKeyArray();
42 public int getInt(String key);
43
44 public long getLong(String key);
45
46 public String getString(String key);
47
48 public AList getAList(String key);
49
50 public Date getDate(String key);
51
52 public InputStream getInputStream(String key);
53
54 public int[] getIntArray(String key);
55
56 public long[] getLongArray(String key);
57
58 public String[] getStringArray(String key);
59
60 public AList[] getAListArray(String key);
61
62 public Date[] getDateArray(String key);
63
64 public InputStream[] getInputStreamArray(String key);
65
66 public String[][] getStringArrayArray(String key);
67
68 public void putInt(String key, int value);
69
70 public void putLong(String key, long value);
71
72 public void putString(String key, String value);
73
74 public void putAList(String key, AList value);
75
76 public void putDate(String key, Date value);
77
78 public void putInputStream(String key, InputStream value);
79
80 public void putIntArray(String key, int[] value);
81
82 public void putLongArray(String key, long[] value);
83
84 public void putStringArray(String key, String[] value);
85
86 public void putAListArray(String key, AList[] value);
87
88 public void putDateArray(String key, Date[] value);
89
90 public void putInputStreamArray(String key, InputStream[] value);
91
92 public void putStringArrayArray(String key, String[][] value);
93
94 /*** Return the type of the value associated with a key. Returns
95 * one of either {@link #T_UNDEFINED}, if the key is not in the
96 * table, or {@link #T_ALIST}, {@link #T_DATE}, {@link #T_INT},
97 * {@link #T_LONG}, {@link #T_STRING}, {@link #T_STRING},
98 * {@link #T_INPUTSTREAM} or {@link #F_ARRAY}
99 * bitwise-ored with any of those. */
100 public int getType(String key);
101
102
103 /***
104 * Closes the object and releases any resources
105 * (for example, InputStreams) held by it.
106 */
107 public void close();
108
109 public AList newAList();
110
111 public void clear();
112
113 /***
114 * Copy the iterator's keys from one AList to another, replacing any
115 * entries that exist in the destination.
116 *
117 * @param keys Iterator of String keys
118 * @param other source AList
119 */
120 public void copyKeysFrom(Iterator keys, AList other);
121
122 /***
123 * Copy the iterator's keys from one AList to another.
124 *
125 * @param keys Iterator of String keys
126 * @param other source AList
127 * @param clobber whether to replace entries that exist in the destination
128 */
129 public void copyKeysFrom(Iterator keys, AList other, boolean clobber);
130
131 /***
132 * Provides a somewhat pretty (matching brackets for nesting)
133 * string of AList.
134 *
135 * @return pretty String
136 */
137 public String toPrettyString();
138 }