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.List;
032
033 import ucar.unidata.data.DataChoice;
034 import ucar.unidata.util.TwoFacedObject;
035 import ucar.visad.Util;
036 import visad.Real;
037 import visad.RealType;
038 import visad.Unit;
039 import visad.VisADException;
040
041 /**
042 * Created by IntelliJ IDEA. User: yuanho Date: Apr 18, 2008 Time: 1:45:38 PM To
043 * change this template use File | Settings | File Templates.
044 */
045
046 public class StormParam {
047
048 /** _more_ */
049 RealType type;
050
051 /** _more_ */
052 private boolean canDoDifference = true;
053
054 /** _more_ */
055 private boolean derived = false;
056
057 /** _more_ */
058 private boolean isChartParam = true;
059
060 /**
061 * _more_
062 */
063 public StormParam() {
064 }
065
066 /**
067 * _more_
068 *
069 * @param type
070 * _more_
071 */
072 public StormParam(RealType type) {
073 this.type = type;
074 if (type != null) {
075 DataChoice.addCurrentName(new TwoFacedObject("Storm Track>" + type,
076 Util.cleanTypeName(type)));
077 }
078 }
079
080 /**
081 * _more_
082 *
083 * @param type
084 * _more_
085 * @param derived
086 * _more_
087 */
088 public StormParam(RealType type, boolean derived) {
089 this(type);
090 this.derived = derived;
091 }
092
093 /**
094 * _more_
095 *
096 * @param type
097 * _more_
098 * @param derived
099 * _more_
100 * @param canDoDiff
101 * _more_
102 */
103 public StormParam(RealType type, boolean derived, boolean canDoDiff) {
104 this(type);
105 this.derived = derived;
106 this.canDoDifference = canDoDiff;
107 }
108
109 /**
110 * _more_
111 *
112 * @param type
113 * _more_
114 * @param derived
115 * _more_
116 * @param canDoDiff
117 * _more_
118 * @param chartList
119 * _more_
120 */
121 public StormParam(RealType type, boolean derived, boolean canDoDiff,
122 boolean chartList) {
123 this(type);
124 this.derived = derived;
125 this.canDoDifference = canDoDiff;
126 this.isChartParam = chartList;
127 }
128
129 /**
130 * _more_
131 *
132 * @param value
133 * _more_
134 *
135 * @return _more_
136 *
137 * @throws VisADException
138 * _more_
139 */
140 public Real getReal(double value) throws VisADException {
141 return new Real(type, value);
142 }
143
144 /**
145 * _more_
146 *
147 * @return _more_
148 */
149 public Unit getUnit() {
150 return type.getDefaultUnit();
151 }
152
153 /**
154 * _more_
155 *
156 * @return _more_
157 */
158 public int hashCode() {
159 return type.hashCode();
160 }
161
162 /**
163 * Set the CanDoDifference property.
164 *
165 * @param value
166 * The new value for CanDoDifference
167 */
168 public void setCanDoDifference(boolean value) {
169 canDoDifference = value;
170 }
171
172 /**
173 * Get the CanDoDifference property.
174 *
175 * @return The CanDoDifference
176 */
177 public boolean getCanDoDifference() {
178 return canDoDifference;
179 }
180
181 /**
182 * Set the CanDoDifference property.
183 *
184 * @param value
185 * The new value for CanDoDifference
186 */
187 public void setIsChartParam(boolean value) {
188 isChartParam = value;
189 }
190
191 /**
192 * Get the CanDoDifference property.
193 *
194 * @return The CanDoDifference
195 */
196 public boolean getIsChartParam() {
197 return isChartParam;
198 }
199
200 /**
201 * _more_
202 *
203 * @param attributes
204 * _more_
205 *
206 * @return _more_
207 */
208 public Real getAttribute(List<Real> attributes) {
209 if (attributes == null) {
210 return null;
211 }
212 for (Real attr : attributes) {
213 if (attr.getType().equals(type)) {
214 return attr;
215 }
216 }
217 return null;
218 }
219
220 /**
221 * _more_
222 *
223 * @param o
224 * _more_
225 *
226 * @return _more_
227 */
228 public boolean equals(Object o) {
229 if (!this.getClass().equals(o.getClass())) {
230 return false;
231 }
232 StormParam that = (StormParam) o;
233 return this.type.equals(that.type);
234 }
235
236 /**
237 * _more_
238 *
239 * @return _more_
240 */
241 public String toString() {
242 return Util.cleanTypeName(type.getName()).replace("_", " ");
243 }
244
245 /**
246 * _more_
247 *
248 * @return _more_
249 */
250 public String getName() {
251 return Util.cleanTypeName(type.getName());
252 }
253
254 /**
255 * Set the Type property.
256 *
257 * @param value
258 * The new value for Type
259 */
260 public void setType(RealType value) {
261 type = value;
262 }
263
264 /**
265 * Get the Type property.
266 *
267 * @return The Type
268 */
269 public RealType getType() {
270 return type;
271 }
272
273 /**
274 * Set the Derived property.
275 *
276 * @param value
277 * The new value for Derived
278 */
279 public void setDerived(boolean value) {
280 derived = value;
281 }
282
283 /**
284 * Get the Derived property.
285 *
286 * @return The Derived
287 */
288 public boolean getDerived() {
289 return derived;
290 }
291
292 }