001    package de.deepamehta.plugins.topicmaps.model;
002    
003    import de.deepamehta.core.util.DeepaMehtaUtils;
004    
005    import org.codehaus.jettison.json.JSONObject;
006    
007    import java.util.HashMap;
008    
009    
010    
011    public class ViewProperties extends HashMap<String, Object> {
012    
013        // ---------------------------------------------------------------------------------------------------- Constructors
014    
015        /**
016         * Note: invoked from JAX-RS message body reader (see Webservice's ObjectProvider.java).
017         */
018        public ViewProperties(JSONObject viewProps) {
019            DeepaMehtaUtils.toMap(viewProps, this);
020        }
021    
022        // ---
023    
024        /**
025         * Convenience constructor that initializes the "dm4.topicmaps.x", "dm4.topicmaps.y", and "dm4.topicmaps.visibility"
026         * standard view properties.
027         */
028        public ViewProperties(int x, int y, boolean visibility) {
029            put(x, y);
030            put(visibility);
031        }
032    
033        /**
034         * Convenience constructor that initializes the "dm4.topicmaps.x" and "dm4.topicmaps.y" standard view properties.
035         */
036        public ViewProperties(int x, int y) {
037            put(x, y);
038        }
039    
040        /**
041         * Convenience constructor that initializes the "dm4.topicmaps.visibility" standard view property.
042         */
043        public ViewProperties(boolean visibility) {
044            put(visibility);
045        }
046    
047        // -------------------------------------------------------------------------------------------------- Public Methods
048    
049        public int getInt(String propUri) {
050            return (Integer) get(propUri);
051        }
052    
053        public boolean getBoolean(String propUri) {
054            return (Boolean) get(propUri);
055        }
056    
057        // ---
058    
059        public Iterable<String> propUris() {
060            return keySet();
061        }
062    
063        // ------------------------------------------------------------------------------------------------ Private  Methods
064    
065        private void put(int x, int y) {
066            put("dm4.topicmaps.x", x);
067            put("dm4.topicmaps.y", y);
068        }
069    
070        private void put(boolean visibility) {
071            put("dm4.topicmaps.visibility", visibility);
072        }
073    }