/* * Copyright 2006, United States Government as represented by the Administrator * for the National Aeronautics and Space Administration. No copyright is * claimed in the United States under Title 17, U.S. Code. All Other Rights * Reserved. * * Created on Mar 22, 2004 */ package gov.nasa.ial.mde.math; import java.text.AttributedCharacterIterator; import java.text.FieldPosition; import java.text.NumberFormat; import java.text.ParseException; import java.text.ParsePosition; import java.util.Currency; import java.util.Locale; /** * The MDE Number Format. * * @author Dr. Robert Shelton * @version 1.0 * @since 1.0 */ public class MdeNumberFormat { private NumberFormat nf; /** * Default Constructor. */ public MdeNumberFormat() { nf = null; } // end MdeNumberFormat /** * (non-Javadoc) * * @see java.text.NumberFormat#getAvailableLocales() */ public static Locale[] getAvailableLocales() { return NumberFormat.getAvailableLocales(); } /** * (non-Javadoc) * * @see java.text.NumberFormat#getCurrencyInstance(java.util.Locale) */ public static MdeNumberFormat getCurrencyInstance(Locale inLocale) { MdeNumberFormat r = new MdeNumberFormat(); r.nf = NumberFormat.getCurrencyInstance(inLocale); return r; } /** * Returns an instance of the MDE number format class. * * @return an instance of the MDE number format class. */ public static MdeNumberFormat getInstance() { MdeNumberFormat r = new MdeNumberFormat(); r.nf = NumberFormat.getInstance(); return r; } // end getInstance /** * (non-Javadoc) * * @see java.text.NumberFormat#getInstance(java.util.Locale) */ public static MdeNumberFormat getInstance(Locale inLocale) { MdeNumberFormat r = new MdeNumberFormat(); r.nf = NumberFormat.getInstance(inLocale); return r; } /** * (non-Javadoc) * * @see java.text.NumberFormat#getIntegerInstance(java.util.Locale) */ public static MdeNumberFormat getIntegerInstance(Locale inLocale) { MdeNumberFormat r = new MdeNumberFormat(); r.nf = NumberFormat.getIntegerInstance(inLocale); return r; } /** * (non-Javadoc) * * @see java.text.NumberFormat#getNumberInstance(java.util.Locale) */ public static MdeNumberFormat getNumberInstance(Locale inLocale) { MdeNumberFormat r = new MdeNumberFormat(); r.nf = NumberFormat.getNumberInstance(inLocale); return r; } /** * (non-Javadoc) * * @see java.text.NumberFormat#getPercentInstance(java.util.Locale) */ public static MdeNumberFormat getPercentInstance(Locale inLocale) { MdeNumberFormat r = new MdeNumberFormat(); r.nf = NumberFormat.getPercentInstance(inLocale); return r; } /** * (non-Javadoc) * * @see java.text.NumberFormat#equals(java.lang.Object) */ public boolean equals(Object obj) { return nf.equals(obj); } /** * Formats the specified floating point value. * * @param number the floating point value to format. * @return the formated floating point value. */ public String format(double number) { if (Double.isInfinite(number)) { return (number > 0.0) ? "infinity" : "-infinity"; } if (number == 0.0) { return "0"; } String str = nf.format(number); if ("-0".equals(str)) { return "0"; } return str; } // end format /** * Formats the specified floating point value. * * @param number the floating point number to format. * @param toAppendTo the StringBuffer to append the formated number to. * @param pos the FieldPosition for the number format. */ public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) { if (Math.abs(number) == Double.POSITIVE_INFINITY) { return new StringBuffer(new Double(number).toString()); } if (number == 0.0) { return new StringBuffer("0"); } StringBuffer strBuff = nf.format(number, toAppendTo, pos); if ("-0".equals(strBuff.toString())) { return new StringBuffer("0"); } return strBuff; } /** * Formats the specified fixed point value. * * @param number the fixed point number to format. * @param toAppendTo the StringBuffer to append the formated number to. * @param pos the FieldPosition for the number format. */ public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) { return nf.format(number, toAppendTo, pos); } /** * (non-Javadoc) * * @see java.text.Format#formatToCharacterIterator(java.lang.Object) */ public AttributedCharacterIterator formatToCharacterIterator(Object obj) { return nf.formatToCharacterIterator(obj); } /** * (non-Javadoc) * * @see java.text.NumberFormat#getCurrency() */ public Currency getCurrency() { return nf.getCurrency(); } /** * (non-Javadoc) * * @see java.text.NumberFormat#getMaximumFractionDigits() */ public int getMaximumFractionDigits() { return nf.getMaximumFractionDigits(); } /** * (non-Javadoc) * * @see java.text.NumberFormat#getMaximumIntegerDigits() */ public int getMaximumIntegerDigits() { return nf.getMaximumIntegerDigits(); } /** * (non-Javadoc) * * @see java.text.NumberFormat#getMinimumFractionDigits() */ public int getMinimumFractionDigits() { return nf.getMinimumFractionDigits(); } /** * (non-Javadoc) * * @see java.text.NumberFormat#getMinimumIntegerDigits() */ public int getMinimumIntegerDigits() { return nf.getMinimumIntegerDigits(); } /** * (non-Javadoc) * * @see java.text.NumberFormat#hashCode() */ public int hashCode() { return nf.hashCode(); } /** * (non-Javadoc) * * @see java.text.NumberFormat#isGroupingUsed() */ public boolean isGroupingUsed() { return nf.isGroupingUsed(); } /** * (non-Javadoc) * * @see java.text.NumberFormat#isParseIntegerOnly() */ public boolean isParseIntegerOnly() { return nf.isParseIntegerOnly(); } /** * (non-Javadoc) * * @see java.text.NumberFormat#parse(java.lang.String) */ public Number parse(String source) throws ParseException { return nf.parse(source); } /** * Returns the Number given the source string and parse position. * * @param source the source string. * @param parsePosition the parse position. * @return the Number. */ public Number parse(String source, ParsePosition parsePosition) { return nf.parse(source, parsePosition); } /** * (non-Javadoc) * * @see java.text.Format#parseObject(java.lang.String) */ public Object parseObject(String source) throws ParseException { return nf.parseObject(source); } /** * (non-Javadoc) * * @see java.text.NumberFormat#setCurrency(java.util.Currency) */ public void setCurrency(Currency currency) { nf.setCurrency(currency); } /** * (non-Javadoc) * * @see java.text.NumberFormat#setGroupingUsed(boolean) */ public void setGroupingUsed(boolean newValue) { nf.setGroupingUsed(newValue); } /** * (non-Javadoc) * * @see java.text.NumberFormat#setMaximumFractionDigits(int) */ public void setMaximumFractionDigits(int newValue) { nf.setMaximumFractionDigits(newValue); } /** * (non-Javadoc) * * @see java.text.NumberFormat#setMaximumIntegerDigits(int) */ public void setMaximumIntegerDigits(int newValue) { nf.setMaximumIntegerDigits(newValue); } /** * (non-Javadoc) * * @see java.text.NumberFormat#setMinimumFractionDigits(int) */ public void setMinimumFractionDigits(int newValue) { nf.setMinimumFractionDigits(newValue); } /** * (non-Javadoc) * * @see java.text.NumberFormat#setMinimumIntegerDigits(int) */ public void setMinimumIntegerDigits(int newValue) { nf.setMinimumIntegerDigits(newValue); } /** * (non-Javadoc) * * @see java.text.NumberFormat#setParseIntegerOnly(boolean) */ public void setParseIntegerOnly(boolean value) { nf.setParseIntegerOnly(value); } /** * (non-Javadoc) * * @see java.lang.Object#toString() */ public String toString() { return nf.toString(); } }