001: package org.claros.commons.utility;
002:
003: import java.sql.Timestamp;
004: import java.text.DecimalFormat;
005: import java.text.DecimalFormatSymbols;
006: import java.text.SimpleDateFormat;
007: import java.util.Date;
008:
009: /**
010: * @author Umut Gökbayrak
011: */
012: public class Formatter {
013:
014: private Formatter() {
015: super ();
016: }
017:
018: /**
019: *
020: * @param df
021: * @param number
022: * @return
023: */
024: private static String format(DecimalFormat df, Object number) {
025: if (number == null) {
026: return null;
027: }
028: number = Utility.checkDecimalFormat(number);
029:
030: DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
031: dfs.setDecimalSeparator(',');
032: dfs.setGroupingSeparator('.');
033: df.setDecimalFormatSymbols(dfs);
034: try {
035: if (!number.equals("-")) {
036: return df.format(Double.parseDouble(number.toString()));
037: } else {
038: return number.toString();
039: }
040: } catch (NumberFormatException e) {
041: return number.toString();
042: }
043: }
044:
045: /**
046: *
047: * @param number
048: * @param groupingActive
049: * @return
050: */
051: public static String formatDecimal(Object number,
052: boolean groupingActive) {
053: if (groupingActive) {
054: return format(new DecimalFormat("#,##0.00"), number);
055: } else {
056: return format(new DecimalFormat("0.00"), number);
057: }
058: }
059:
060: /**
061: *
062: * @param number
063: * @param groupingActive
064: * @return
065: */
066: public static String formatInteger(Object number,
067: boolean groupingActive) {
068: if (groupingActive) {
069: return format(new DecimalFormat("#,##0"), number);
070: } else {
071: return format(new DecimalFormat("##0"), number);
072: }
073: }
074:
075: /**
076: *
077: * @param number
078: * @param groupingActive
079: * @param digits
080: * @return
081: */
082: public static String formatSensitive(Object number,
083: boolean groupingActive, int digits) {
084: String digitStr = "";
085: for (int i = 0; i < digits; i++) {
086: digitStr += "0";
087: }
088: if (groupingActive) {
089: return format(new DecimalFormat("#,##0." + digitStr),
090: number);
091: } else {
092: return format(new DecimalFormat("0." + digitStr), number);
093: }
094: }
095:
096: /**
097: *
098: * @param number
099: * @param pattern
100: * @return
101: */
102: public static String formatWithPattern(Object number, String pattern) {
103: return format(new DecimalFormat(pattern), number);
104: }
105:
106: /**
107: *
108: * @param date
109: * @param pattern
110: * @return
111: */
112: public static String formatDate(Object date, String pattern) {
113: if (date != null && date instanceof Timestamp) {
114: date = new Date(((Timestamp) date).getTime());
115: }
116:
117: if (date != null && date instanceof Date) {
118: SimpleDateFormat sdf = new SimpleDateFormat(pattern);
119: return sdf.format(date);
120: }
121: return null;
122: }
123:
124: /**
125: *
126: * @param obj
127: * @return
128: */
129: public static double getDouble(Object obj) {
130: if (obj == null) {
131: return 0;
132: }
133: obj = Utility.checkDecimalFormat(obj);
134: try {
135: return Double.parseDouble(obj.toString());
136: } catch (NumberFormatException e) {
137: return 0;
138: }
139: }
140: }
|