3 * Maps identifiers to property lists
\r
4 * Used for stylesheets, character maps, etc
\r
6 * @author Daniel Jackson
\r
7 * @version 0, 07/03/01
\r
12 //import java.util.*;
\r
14 public class PropertyMap {
\r
15 private HashMap map; // String -> LinkedList [Property]
\r
16 private HashSet keys;
\r
19 * ensures: constructs an empty property map
\r
21 public PropertyMap () {
\r
22 map = new HashMap ();
\r
23 keys = new HashSet();
\r
27 * ensures: constructs a property map using the parser <code>p</code>.
\r
29 public PropertyMap (PropertyParser p) {
\r
30 map = new HashMap ();
\r
31 keys = new HashSet();
\r
33 while (p.has_more_properties ()) {
\r
34 LinkedList props = p.get_property_list ();
\r
35 Property prop = (Property) props.removeFirst ();
\r
36 map.put (prop.value, props);
\r
37 keys.add(prop.value);
\r
42 * ensures: incorporates properties using the parser <code>p</code>.
\r
44 public void incorporate (PropertyParser p) {
\r
46 while (p.has_more_properties ()) {
\r
47 LinkedList props = p.get_property_list ();
\r
48 Property prop = (Property) props.removeFirst ();
\r
49 map.put (prop.value, props);
\r
50 keys.add(prop.value);
\r
56 * @return the property list for item <code>item</code>. Returns null if no such item.
\r
58 public LinkedList get_property_list (String item) {
\r
59 return (LinkedList) map.get (item);
\r
63 * @return the value of property <code>prop</code> for item <code>item</code>
\r
64 * or null if it does not exist
\r
66 public String get_property (String item, String prop) {
\r
67 LinkedList props = (LinkedList) map.get (item);
\r
68 if (props == null) return null;
\r
69 Iterator iter = props.iterator ();
\r
70 while (iter.hasNext ()) {
\r
71 Property p = (Property) iter.next ();
\r
72 if (p.property.equals (prop))
\r
79 * @return the set of items with property lists in the map
\r
81 public HashSet get_items () {
\r
82 return keys; //map.keySet ();
\r
85 public String toString () {
\r
86 return map.toString ();
\r