001/*
002 * This file is part of McIDAS-V
003 *
004 * Copyright 2007-2024
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 https://www.gnu.org/licenses/.
027 */
028
029package edu.wisc.ssec.mcidasv.data.cyclone;
030
031import visad.DateTime;
032
033/**
034 * Created by IntelliJ IDEA. User: yuanho Date: Apr 9, 2008 Time: 4:57:21 PM To
035 * change this template use File | Settings | File Templates.
036 */
037
038public class StormInfo implements Comparable {
039
040        /** _more_ */
041        private String stormID;
042
043        /** _more_ */
044        private String name;
045
046        /** _more_ */
047        private String basin;
048
049        /** _more_ */
050        private String number;
051
052        /** _more_ */
053        private DateTime startTime;
054
055        /**
056         * _more_
057         */
058        public StormInfo() {
059        }
060
061        /**
062         * _more_
063         * 
064         * @param id
065         *            _more_
066         * @param sTime
067         *            _more_
068         */
069        public StormInfo(String id, DateTime sTime) {
070                this(id, id, sTime);
071        }
072
073        /**
074         * _more_
075         * 
076         * @param id
077         *            _more_
078         * @param name
079         *            _more_
080         * @param sTime
081         *            _more_
082         */
083        public StormInfo(String id, String name, DateTime sTime) {
084                this(id, name, null, null, sTime);
085        }
086
087        /**
088         * _more_
089         * 
090         * @param id
091         *            _more_
092         * @param name
093         *            _more_
094         * @param basin
095         *            _more_
096         * @param number
097         *            _more_
098         * @param sTime
099         *            _more_
100         */
101        public StormInfo(String id, String name, String basin, String number,
102                        DateTime sTime) {
103                this.stormID = id;
104                this.name = name;
105                this.basin = basin;
106                this.startTime = sTime;
107                this.number = number;
108        }
109
110        /**
111         * Compare this object to another.
112         * 
113         * @param o
114         *            object in question.
115         * @return spec from Comparable interface.
116         */
117        public int compareTo(Object o) {
118                if (o instanceof StormInfo) {
119                        StormInfo that = (StormInfo) o;
120                        if (startTime.getValue() < that.startTime.getValue()) {
121                                return -1;
122                        }
123                        if (startTime.getValue() > that.startTime.getValue()) {
124                                return 1;
125                        }
126                        return 0;
127                }
128                return toString().compareTo(o.toString());
129        }
130
131        /**
132         * _more_
133         * 
134         * @param id
135         *            _more_
136         */
137        public void setStormId(String id) {
138                this.stormID = id;
139        }
140
141        /**
142         * _more_
143         * 
144         * @return _more_
145         */
146        public String getStormId() {
147                return stormID;
148        }
149
150        /**
151         * _more_
152         * 
153         * @param dt
154         *            _more_
155         */
156        public void setStartTime(DateTime dt) {
157                this.startTime = dt;
158        }
159
160        /**
161         * _more_
162         * 
163         * @return _more_
164         */
165        public DateTime getStartTime() {
166                return startTime;
167        }
168
169        /**
170         * _more_
171         * 
172         * @return _more_
173         */
174        public String toString() {
175                if (name != null) {
176                        return name;
177                }
178                return stormID;
179        }
180
181        /**
182         * _more_
183         * 
184         * @return _more_
185         */
186        public int hashCode() {
187                return stormID.hashCode();
188        }
189
190        /**
191         * _more_
192         * 
193         * @param o
194         *            _more_
195         * 
196         * @return _more_
197         */
198        public boolean equals(Object o) {
199                if (o == null) {
200                        return false;
201                }
202                if (!(o instanceof StormInfo)) {
203                        return false;
204                }
205                StormInfo other = (StormInfo) o;
206                return (this.stormID.equals(other.stormID));
207        }
208
209        /**
210         * Set the Name property.
211         * 
212         * @param value
213         *            The new value for Name
214         */
215        public void setName(String value) {
216                name = value;
217        }
218
219        /**
220         * Get the Name property.
221         * 
222         * @return The Name
223         */
224        public String getName() {
225                return name;
226        }
227
228        /**
229         * Set the Basin property.
230         * 
231         * @param value
232         *            The new value for Basin
233         */
234        public void setBasin(String value) {
235                basin = value;
236        }
237
238        /**
239         * Get the Basin property.
240         * 
241         * @return The Basin
242         */
243        public String getBasin() {
244                return basin;
245        }
246
247        /**
248         * Set the Number property.
249         * 
250         * @param value
251         *            The new value for Number
252         */
253        public void setNumber(String value) {
254                number = value;
255        }
256
257        /**
258         * Get the Number property.
259         * 
260         * @return The Number
261         */
262        public String getNumber() {
263                return number;
264        }
265
266}