001    package railo.runtime.chart;
002    
003    import java.util.Locale;
004    
005    import railo.runtime.PageContext;
006    import railo.runtime.engine.ThreadLocalPageContext;
007    import railo.runtime.exp.PageException;
008    import railo.runtime.functions.international.LSCurrencyFormat;
009    import railo.runtime.functions.international.LSDateFormat;
010    import railo.runtime.op.Caster;
011    import railo.runtime.type.dt.DateTime;
012    
013    public class LabelFormatUtil {
014    
015    
016            public static final int LABEL_FORMAT_NUMBER = 0;
017            public static final int LABEL_FORMAT_CURRENCY = 1;
018            public static final int LABEL_FORMAT_PERCENT = 2;
019            public static final int LABEL_FORMAT_DATE = 3;
020    
021            public static String formatDate(PageContext pc,double value) {
022                    DateTime d = Caster.toDate(Caster.toDouble(value),true,null,null);
023                    
024                    try {
025                            return LSDateFormat.call(pc, d);
026                    } catch (PageException e) {
027                    }
028                    return Caster.toString(d,null);
029            }
030    
031            public static String formatNumber(double value) {
032                    return Caster.toString(value);
033            }
034    
035            public static String formatPercent(double value) {
036                    return Caster.toIntValue(value*100)+" %";
037            }
038    
039            public static String formatCurrency(PageContext pc,double value) {
040                    //PageContext pc = Thread LocalPageContext.get();
041                    Locale locale=pc==null?Locale.US:pc.getLocale();
042                    return LSCurrencyFormat.local(locale, value);
043            }
044    
045            public static String format(int labelFormat, double value) {
046                    
047                    switch(labelFormat) {
048                    case LABEL_FORMAT_CURRENCY:     return formatCurrency(ThreadLocalPageContext.get(),value);
049                    case LABEL_FORMAT_DATE:         return formatDate(ThreadLocalPageContext.get(),value);
050                    case LABEL_FORMAT_NUMBER:       return formatNumber(value);
051                    case LABEL_FORMAT_PERCENT:      return formatPercent(value);
052                    }
053                    return Caster.toString(value);
054            }
055    }