001    package de.kiezatlas;
002    
003    import de.deepamehta.core.JSONEnabled;
004    import de.deepamehta.core.Topic;
005    
006    import org.codehaus.jettison.json.JSONArray;
007    import org.codehaus.jettison.json.JSONObject;
008    
009    
010    
011    /**
012     * A collection of Geo Objects as returned by the Kiezatlas service (a data transfer object).
013     */
014    public class GeoObjects implements JSONEnabled {
015    
016        // ---------------------------------------------------------------------------------------------- Instance Variables
017    
018        private JSONObject json = new JSONObject();
019        private JSONArray items = new JSONArray();
020    
021        // ---------------------------------------------------------------------------------------------------- Constructors
022    
023        GeoObjects(long clock) {
024            try {
025                json.put("items", items);
026                json.put("clock", clock);
027            } catch (Exception e) {
028                throw new RuntimeException("Constructing GeoObjects failed", e);
029            }
030        }
031    
032        // -------------------------------------------------------------------------------------------------- Public Methods
033    
034        void add(Topic geoObject) {
035            try {
036                items.put(geoObject.toJSON());
037            } catch (Exception e) {
038                throw new RuntimeException("Adding geo object to GeoObjects failed", e);
039            }
040        }
041    
042        @Override
043        public JSONObject toJSON() {
044            return json;
045        }
046    }