001/*
002 * Copyright 2008 Marc Wick, geonames.org
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 *
016 */
017package org.geonames;
018
019import java.io.UnsupportedEncodingException;
020import java.net.URLEncoder;
021import java.util.Comparator;
022
023/**
024 * a wikipedia article
025 * 
026 * @author marc@geonames
027 * 
028 */
029public class WikipediaArticle {
030
031        private String language;
032
033        private String title;
034
035        private String summary;
036
037        private String wikipediaUrl;
038
039        private String feature;
040
041        private int population;
042
043        private Integer elevation;
044
045        private double latitude;
046
047        private double longitude;
048
049        private String thumbnailImg;
050
051        private int rank;
052
053        /**
054         * @return Returns the elevation.
055         */
056        public Integer getElevation() {
057                return elevation;
058        }
059
060        /**
061         * @param elevation
062         *            The elevation to set.
063         */
064        public void setElevation(int elevation) {
065                this.elevation = elevation;
066        }
067
068        /**
069         * @return Returns the feature.
070         */
071        public String getFeature() {
072                return feature;
073        }
074
075        /**
076         * @param feature
077         *            The feature to set.
078         */
079        public void setFeature(String feature) {
080                this.feature = feature;
081        }
082
083        /**
084         * @return Returns the language.
085         */
086        public String getLanguage() {
087                return language;
088        }
089
090        /**
091         * @param language
092         *            The language to set.
093         */
094        public void setLanguage(String language) {
095                this.language = language;
096        }
097
098        /**
099         * @return Returns the latitude.
100         */
101        public double getLatitude() {
102                return latitude;
103        }
104
105        /**
106         * @param latitude
107         *            The latitude to set.
108         */
109        public void setLatitude(double latitude) {
110                this.latitude = latitude;
111        }
112
113        /**
114         * @return Returns the longitude.
115         */
116        public double getLongitude() {
117                return longitude;
118        }
119
120        /**
121         * @param longitude
122         *            The longitude to set.
123         */
124        public void setLongitude(double longitude) {
125                this.longitude = longitude;
126        }
127
128        /**
129         * @return Returns the population.
130         */
131        public int getPopulation() {
132                return population;
133        }
134
135        /**
136         * @param population
137         *            The population to set.
138         */
139        public void setPopulation(int population) {
140                this.population = population;
141        }
142
143        /**
144         * @return Returns the summary.
145         */
146        public String getSummary() {
147                return summary;
148        }
149
150        /**
151         * @param summary
152         *            The summary to set.
153         */
154        public void setSummary(String summary) {
155                this.summary = summary;
156        }
157
158        /**
159         * @return Returns the title.
160         */
161        public String getTitle() {
162                return title;
163        }
164
165        /**
166         * @param title
167         *            The title to set.
168         */
169        public void setTitle(String title) {
170                this.title = title;
171        }
172
173        /**
174         * @return Returns the wikipediaUrl.
175         */
176        public String getWikipediaUrl() {
177                if (wikipediaUrl == null || WebService.isAndroid()) {
178                        String urlTitle = title.replace(' ', '_');
179                        try {
180                                urlTitle = URLEncoder.encode(urlTitle, "UTF8");
181                        } catch (UnsupportedEncodingException ex) {
182                        }
183                        String lang = language;
184                        if (WebService.isAndroid()) {
185                                lang += ".m";
186                        }
187                        return "http://" + lang + ".wikipedia.org/wiki/" + urlTitle;
188                }
189                return wikipediaUrl;
190        }
191
192        /**
193         * @param wikipediaUrl
194         *            The wikipediaUrl to set.
195         */
196        public void setWikipediaUrl(String wikipediaURL) {
197                this.wikipediaUrl = wikipediaURL;
198        }
199
200        /**
201         * @return the thumbnailImg
202         */
203        public String getThumbnailImg() {
204                return thumbnailImg;
205        }
206
207        /**
208         * @param thumbnailImg
209         *            the thumbnailImg to set
210         */
211        public void setThumbnailImg(String thumbnailImg) {
212                this.thumbnailImg = thumbnailImg;
213        }
214
215        /**
216         * @return the rank
217         */
218        public int getRank() {
219                return rank;
220        }
221
222        /**
223         * @param rank
224         *            the rank to set
225         */
226        public void setRank(int rank) {
227                this.rank = rank;
228        }
229
230        public final static Comparator ELEVATION_ORDER = new Comparator<WikipediaArticle>() {
231                public int compare(WikipediaArticle o1, WikipediaArticle o2) {
232                        return Double.compare(o2.elevation, o1.elevation);
233                }
234        };
235
236        public final static Comparator RANK_ORDER = new Comparator<WikipediaArticle>() {
237                public int compare(WikipediaArticle o1, WikipediaArticle o2) {
238                        return Double.compare(o2.rank, o1.rank);
239                }
240        };
241}