001 /*
002 * This file is part of McIDAS-V
003 *
004 * Copyright 2007-2013
005 * Space Science and Engineering Center (SSEC)
006 * University of Wisconsin - Madison
007 * 1225 W. Dayton Street, Madison, WI 53706, USA
008 * https://www.ssec.wisc.edu/mcidas
009 *
010 * All Rights Reserved
011 *
012 * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and
013 * some McIDAS-V source code is based on IDV and VisAD source code.
014 *
015 * McIDAS-V is free software; you can redistribute it and/or modify
016 * it under the terms of the GNU Lesser Public License as published by
017 * the Free Software Foundation; either version 3 of the License, or
018 * (at your option) any later version.
019 *
020 * McIDAS-V is distributed in the hope that it will be useful,
021 * but WITHOUT ANY WARRANTY; without even the implied warranty of
022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023 * GNU Lesser Public License for more details.
024 *
025 * You should have received a copy of the GNU Lesser Public License
026 * along with this program. If not, see http://www.gnu.org/licenses.
027 */
028
029 package edu.wisc.ssec.mcidasv.data.cyclone;
030
031 import java.util.ArrayList;
032 import java.util.List;
033
034 import visad.DateTime;
035 import visad.Real;
036 import visad.georef.EarthLocation;
037
038 /**
039 * Created by IntelliJ IDEA. User: yuanho Date: Apr 18, 2008 Time: 1:45:38 PM To
040 * change this template use File | Settings | File Templates.
041 */
042
043 public class StormTrackPoint implements Comparable {
044
045 /** _more_ */
046 private int id = -1;
047
048 /** _more_ */
049 private boolean edited = false;
050
051 /** _more_ */
052 private EarthLocation location;
053
054 /** _more_ */
055 private DateTime time;
056
057 /** _more_ */
058 private List<Real> attributes;
059
060 /** _more_ */
061 private int forecastHour = 0;
062
063 /**
064 * copy ctor
065 *
066 * @param that
067 * The track point to copy
068 */
069 public StormTrackPoint(StormTrackPoint that) {
070 this.location = that.location;
071 this.time = that.time;
072 if (that.attributes != null) {
073 this.attributes = (List<Real>) new ArrayList(that.attributes);
074 }
075 this.forecastHour = that.forecastHour;
076 this.id = that.id;
077 this.edited = that.edited;
078 }
079
080 /**
081 * _more_
082 *
083 * @param pointLocation
084 * _more_
085 * @param time
086 * _more_
087 * @param forecastHour
088 * _more_
089 * @param attrs
090 * _more_
091 */
092 public StormTrackPoint(EarthLocation pointLocation, DateTime time,
093 int forecastHour, List<Real> attrs) {
094 this.location = pointLocation;
095 this.time = time;
096 this.forecastHour = forecastHour;
097 this.attributes = attrs;
098 }
099
100 /**
101 * Compare this object to another.
102 *
103 * @param o
104 * object in question.
105 * @return spec from Comparable interface.
106 */
107 public int compareTo(Object o) {
108 if (o instanceof StormTrackPoint) {
109 StormTrackPoint that = (StormTrackPoint) o;
110 return (time.compareTo(that.time));
111 }
112 return toString().compareTo(o.toString());
113 }
114
115 /**
116 * Set the ForecastHour property.
117 *
118 * @param value
119 * The new value for ForecastHour
120 */
121 public void setForecastHour(int value) {
122 forecastHour = value;
123 }
124
125 /**
126 * Get the ForecastHour property.
127 *
128 * @return The ForecastHour
129 */
130 public int getForecastHour() {
131 return forecastHour;
132 }
133
134 /**
135 * _more_
136 *
137 * @param time
138 * _more_
139 */
140 public void setTime(DateTime time) {
141 this.time = time;
142 }
143
144 /**
145 * _more_
146 *
147 * @return _more_
148 */
149 public DateTime getTime() {
150 return time;
151 }
152
153 /**
154 * _more_
155 *
156 * @param point
157 * _more_
158 */
159 public void setLocation(EarthLocation point) {
160 this.location = point;
161 }
162
163 /**
164 * _more_
165 *
166 * @return _more_
167 */
168 public EarthLocation getLocation() {
169 return location;
170 }
171
172 /*
173 * _more_
174 *
175 * @return _more_
176 */
177
178 /**
179 * _more_
180 *
181 * @return _more_
182 */
183 public List<Real> getTrackAttributes() {
184 return attributes;
185 }
186
187 /**
188 * _more_
189 *
190 * @return _more_
191 */
192 public String toString() {
193 return location + "";
194 }
195
196 /**
197 * _more_
198 *
199 *
200 * @param param
201 * _more_
202 *
203 * @return _more_
204 */
205 public Real getAttribute(StormParam param) {
206 return param.getAttribute(attributes);
207 }
208
209 /**
210 * _more_
211 *
212 *
213 * @param real
214 * _more_
215 *
216 * @return _more_
217 */
218 public void setAttribute(Real real) {
219 for (Real attr : attributes) {
220 if (attr.getType().equals(real.getType())) {
221 // attr.(real)
222 attributes.remove(attr);
223 attributes.add(real);
224 }
225 }
226
227 }
228
229 /**
230 * _more_
231 *
232 * @param attr
233 * _more_
234 *
235 */
236 public void addAttribute(Real attr) {
237 if (attributes == null) {
238 attributes = new ArrayList<Real>();
239 }
240
241 attributes.add(attr);
242
243 }
244
245 /**
246 * _more_
247 *
248 * @param o
249 * _more_
250 *
251 * @param value
252 * _more_
253 *
254 * @return _more_
255 */
256 /*
257 * public boolean equals(Object o) { if (o == null) { return false; } if (
258 * !(o instanceof StormTrackPoint)) { return false; } StormTrackPoint other
259 * = (StormTrackPoint) o; return
260 * ((trackPointId.equals(other.trackPointId))); }
261 */
262
263 /**
264 * Set the Id property.
265 *
266 * @param value
267 * The new value for Id
268 */
269 public void setId(int value) {
270 id = value;
271 }
272
273 /**
274 * Get the Id property.
275 *
276 * @return The Id
277 */
278 public int getId() {
279 return id;
280 }
281
282 /**
283 * Set the Edited property.
284 *
285 * @param value
286 * The new value for Edited
287 */
288 public void setEdited(boolean value) {
289 edited = value;
290 }
291
292 /**
293 * Get the Edited property.
294 *
295 * @return The Edited
296 */
297 public boolean getEdited() {
298 return edited;
299 }
300
301 }