001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.data.osm;
003    
004    import java.util.Collection;
005    import java.util.Map;
006    /**
007     * Objects implement Tagged if they provide a map of key/value pairs.
008     *
009     *
010     */
011    // FIXME: better naming? setTags(), getTags(), getKeys() instead of keySet() ?
012    //
013    public interface Tagged {
014        /**
015         * Sets the map of key/value pairs
016         *
017         * @param keys the map of key value pairs. If null, reset to the empty map.
018         */
019        void setKeys(Map<String,String> keys);
020    
021        /**
022         * Replies the map of key/value pairs. Never null, but may be the empty map.
023         *
024         * @return the map of key/value pairs
025         */
026        Map<String,String> getKeys();
027    
028        /**
029         * Sets a key/value pairs
030         *
031         * @param key the key
032         * @param value the value. If null, removes the key/value pair.
033         */
034        void put(String key, String value);
035    
036        /**
037         * Replies the value of the given key; null, if there is no value for this key
038         *
039         * @param key the key
040         * @return the value
041         */
042        String get(String key);
043    
044        /**
045         * Removes a given key/value pair
046         *
047         * @param key the key
048         */
049        void remove(String key);
050    
051        /**
052         * Replies true, if there is at least one key/value pair; false, otherwise
053         *
054         * @return true, if there is at least one key/value pair; false, otherwise
055         */
056        boolean hasKeys();
057    
058        /**
059         * Replies the set of keys
060         *
061         * @return the set of keys
062         */
063        Collection<String> keySet();
064    
065        /**
066         * Removes all tags
067         */
068        void removeAll();
069    }