001    package de.deepamehta.plugins.topicmaps;
002    
003    import org.codehaus.jettison.json.JSONArray;
004    import org.codehaus.jettison.json.JSONObject;
005    
006    import java.util.ArrayList;
007    import java.util.Iterator;
008    import java.util.List;
009    import java.util.logging.Logger;
010    
011    
012    
013    public class ClusterCoords implements Iterable<ClusterCoords.Entry> {
014    
015        // ---------------------------------------------------------------------------------------------- Instance Variables
016    
017        private List<Entry> entries = new ArrayList();
018    
019        private Logger logger = Logger.getLogger(getClass().getName());
020    
021        // ---------------------------------------------------------------------------------------------------- Constructors
022    
023        public ClusterCoords(JSONArray entries) {
024            try {
025                for (int i = 0; i < entries.length(); i++) {
026                    JSONObject entry = entries.getJSONObject(i);
027                    this.entries.add(new Entry(
028                        entry.getLong("topic_id"),
029                        entry.getInt("x"),
030                        entry.getInt("y")
031                    ));
032                }
033            } catch (Exception e) {
034                throw new RuntimeException("Parsing ClusterCoords failed (JSONArray=" + entries + ")", e);
035            }
036        }
037    
038        // -------------------------------------------------------------------------------------------------- Public Methods
039    
040        @Override
041        public Iterator<Entry> iterator() {
042            return entries.iterator();
043        }
044    
045        public class Entry {
046    
047            public long topicId;
048            public int x;
049            public int y;
050    
051            private Entry(long topicId, int x, int y) {
052                this.topicId = topicId;
053                this.x = x;
054                this.y = y;
055            }
056        }
057    }