package com.foundation.view; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.text.DecimalFormat; import java.text.Format; import java.text.NumberFormat; import com.common.comparison.Comparator; /** * Copyright Declarative Engineering LLC 2009

* Encapsulates the information necessary to setup a number formatter. */ public class FormatNumber extends AbstractFormat { public static final int TYPE_NUMBER = 0; public static final int TYPE_INTEGER = 1; public static final int TYPE_PERCENT = 2; public static final int TYPE_CURRENCY = 3; private String pattern = null; private int type = 0; /** * FormatNumber constructor. */ public FormatNumber() { }//FormatNumber()// /** * FormatNumber constructor. * @param pattern The pattern to use for formatting the number. */ public FormatNumber(String pattern) { if(pattern == null || pattern.length() == 0) { throw new IllegalArgumentException("Bad number pattern."); }//if// this.pattern = pattern; }//FormatNumber()// /** * FormatNumber constructor. * @param type The pre-defined number pattern type. */ public FormatNumber(int type) { if(type < 0 || type > TYPE_CURRENCY) { throw new IllegalArgumentException("Bad number type."); }//if// this.type = type; }//FormatNumber()// /* (non-Javadoc) * @see com.foundation.view.IJefFormat#createFormat() */ public Format createFormat() { Format result; if(pattern != null) { result = new DecimalFormat(pattern); }//if// else { switch(type) { case TYPE_NUMBER: { result = NumberFormat.getNumberInstance(); break; }//case// case TYPE_INTEGER: { result = NumberFormat.getIntegerInstance(); break; }//case// case TYPE_CURRENCY: { result = NumberFormat.getCurrencyInstance(); break; }//case// case TYPE_PERCENT: { result = NumberFormat.getPercentInstance(); break; }//case// default: { result = NumberFormat.getInstance(); break; }//default// }//switch// }//else// return result; }//createFormat()// /* (non-Javadoc) * @see java.io.Externalizable#readExternal(java.io.ObjectInput) */ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { pattern = in.readUTF(); type = in.readInt(); }//readExternal()// /* (non-Javadoc) * @see java.io.Externalizable#writeExternal(java.io.ObjectOutput) */ public void writeExternal(ObjectOutput out) throws IOException { out.writeUTF(pattern); out.writeInt(type); }//writeExternal()// /* (non-Javadoc) * @see java.lang.Object#clone() */ public Object clone() throws CloneNotSupportedException { FormatNumber result = new FormatNumber(); result.pattern = pattern; result.type = type; return result; }//clone()// /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object object) { return (object instanceof FormatNumber) && (Comparator.equals(pattern, ((FormatNumber) object).pattern)) && (type == ((FormatNumber) object).type); }//equals()// /* (non-Javadoc) * @see java.lang.Object#hashCode() */ public int hashCode() { return pattern == null ? type : pattern.hashCode(); }//hashCode()// /* (non-Javadoc) * @see java.lang.Object#toString() */ public String toString() { String result = "number "; if(pattern != null) { result += pattern; }//if// else { switch(type) { case TYPE_NUMBER: { result += "number"; break; }//case// case TYPE_INTEGER: { result += "integer"; break; }//case// case TYPE_CURRENCY: { result += "currency"; break; }//case// case TYPE_PERCENT: { result += "percent"; break; }//case// default: { result += "number"; break; }//default// }//switch// }//else// return result; }//toString()// }//FormatNumber//