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