001package de.deepamehta.plugins.topicmaps.model;
002
003import de.deepamehta.core.util.DeepaMehtaUtils;
004
005import org.codehaus.jettison.json.JSONObject;
006
007import java.util.HashMap;
008
009
010
011public 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}