/* * Copyright 1998-2015 University Corporation for Atmospheric Research/Unidata * * Portions of this software were developed by the Unidata Program at the * University Corporation for Atmospheric Research. * * Access and use of this software shall impose the following obligations * and understandings on the user. The user is granted the right, without * any fee or cost, to use, copy, modify, alter, enhance and distribute * this software, and any derivative works thereof, and its supporting * documentation for any purpose whatsoever, provided that this entire * notice appears in all copies of the software, derivative works and * supporting documentation. Further, UCAR requests that the user credit * UCAR/Unidata in any publications that result from the use of this * software or in any product that includes this software. The names UCAR * and/or Unidata, however, may not be used in any advertising or publicity * to endorse or promote any products or commercial entity unless specific * written permission is obtained from UCAR/Unidata. The user also * understands that UCAR/Unidata is not obligated to provide the user with * any support, consulting, training or assistance of any kind with regard * to the use, operation and performance of this software nor to provide * the user with any updates, revisions, new versions or "bug fixes." * * THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. */ package ucar.nc2.iosp.gempak; import ucar.nc2.iosp.grid.GridParameter; import ucar.unidata.util.StringUtil2; /** * Class which represents a GEMPAK parameter. Add on decimal scale * and numeric flag to the superclass. */ public class GempakParameter extends GridParameter { /** * decimal scale */ private int decimalScale = 0; /** * numeric or char */ private boolean isNumeric = true; /** * Create a new numeric GEMPAK parameter * * @param number * @param name * @param description * @param unit of parameter * @param scale decimal (10E*) scaling factor */ public GempakParameter(int number, String name, String description, String unit, int scale) { this(number, name, description, unit, scale, true); } /** * Create a new GEMPAK parameter * * @param number * @param name * @param description * @param unit of parameter * @param scale decimal (10E*) scaling factor * @param isNumeric flag for numeric */ public GempakParameter(int number, String name, String description, String unit, int scale, boolean isNumeric) { super(number, name, description, unit); decimalScale = scale; this.isNumeric = isNumeric; } /** * Get the decimal scale * * @return the decimal scale */ public int getDecimalScale() { return decimalScale; } /** * Get whether this is numeric or not * * @return true if numeric */ public boolean getIsNumeric() { return isNumeric; } /** * Set whether this is numeric or not * * @param yesorno true if numeric */ public void setIsNumeric(boolean yesorno) { isNumeric = yesorno; } /** * Return a String representation of this object * * @return a String representation of this object * public String toString() { * StringBuffer buf = new StringBuffer(super.toString()); * buf.append(" scale: "); * buf.append(getDecimalScale()); * return buf.toString(); * } */ /** * Return a String representation of this object * * @return a String representation of this object */ public String toString() { StringBuilder buf = new StringBuilder("GridParameter: "); buf.append(StringUtil2.padLeft(String.valueOf(getNumber()), 4)); buf.append(" "); String param = getName() + " (" + getDescription() + ")"; buf.append(StringUtil2.padRight(param, 40)); buf.append(" ["); buf.append(getUnit()); buf.append("]"); buf.append(" scale: "); buf.append(getDecimalScale()); return buf.toString(); } /** * Check for equality * * @param o the object in question * @return true if has the same parameters */ public boolean equals(Object o) { if ((o == null) || !(o instanceof GempakParameter)) { return false; } GempakParameter that = (GempakParameter) o; return super.equals(that) && (decimalScale == that.decimalScale); } /** * Generate a hash code. * * @return the hash code */ public int hashCode() { return super.hashCode() + 17 * decimalScale; } }