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