001 package de.java2html.util;
002 
003 import java.util.Collection;
004 import java.util.Enumeration;
005 import java.util.LinkedHashMap;
006 import java.util.Map;
007 import java.util.Properties;
008 import java.util.Set;
009 
010 /**
011  * A properties implementation that remembers the order of its entries.
012  
013  @author Markus Gebhard
014  */
015 public class LinkedProperties extends Properties {
016   private final LinkedHashMap map = new LinkedHashMap();
017 
018   @Override
019   public synchronized Object put(Object key, Object value) {
020     return map.put(key, value);
021   }
022 
023   @Override
024   public synchronized Object get(Object key) {
025     return map.get(key);
026   }
027 
028   @Override
029   public synchronized void clear() {
030     map.clear();
031   }
032 
033   @Override
034   public synchronized Object clone() {
035     throw new UnsupportedOperationException();
036   }
037 
038   @Override
039   public boolean containsValue(Object value) {
040     return map.containsValue(value);
041   }
042 
043   @Override
044   public synchronized boolean contains(Object value) {
045     return containsValue(value);
046   }
047 
048   @Override
049   public synchronized boolean containsKey(Object key) {
050     return map.containsKey(key);
051   }
052 
053   @Override
054   public synchronized Enumeration elements() {
055     return new IteratorEnumeration(map.values().iterator());    
056   }
057 
058   @Override
059   public Set entrySet() {
060     return map.entrySet();
061   }
062 
063   @Override
064   public synchronized boolean equals(Object o) {
065     throw new UnsupportedOperationException();
066   }
067 
068   @Override
069   public synchronized boolean isEmpty() {
070     return map.isEmpty();
071   }
072 
073   @Override
074   public synchronized Enumeration keys() {
075     return new IteratorEnumeration(map.keySet().iterator());
076   }
077 
078   @Override
079   public Set keySet() {
080     return map.keySet();
081   }
082 
083   @Override
084   public Enumeration propertyNames() {
085     throw new UnsupportedOperationException();
086   }
087 
088   @Override
089   public synchronized void putAll(Map t) {
090     map.putAll(t);
091   }
092   @Override
093   public synchronized Object remove(Object key) {
094     return map.remove(key);
095   }
096 
097   @Override
098   public synchronized int size() {
099     return map.size();
100   }
101 
102   @Override
103   public Collection values() {
104     throw new UnsupportedOperationException();
105   }
106   
107   @Override
108   public String getProperty(String key) {
109     final Object oval = get(key);
110     final String sval = (oval instanceof String(String)oval : null;
111     return ((sval == null&& (defaults != null)) ? defaults.getProperty(key: sval;
112   }
113 }