/** * Copyright 2014 tgrape Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package ph.fingra.statisticsweb.common.util; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.StringTokenizer; import java.util.regex.Pattern; public class FormatUtil { /** * Make file size format * <br> * @param filesize ex) "1234567"<br> * @return result ex) "1,234,567" */ public static String FormatFileSize(String filesize) { int len = 0; int mok = 0; int mod = 0; String result = ""; String reverseResult = ""; String stringMok = ""; String reverseMok = ""; len = filesize.length(); if (len < 4) return "1"; mok = Integer.parseInt(filesize) / 1024; mod = Integer.parseInt(filesize) % 1024; if (Integer.parseInt(String.valueOf(mod).substring(0, 1)) >= 5) mok++; stringMok = String.valueOf(mok); reverseMok = reverse(stringMok); for (int i = 0; i < reverseMok.length(); i++) { reverseResult = reverseResult + reverseMok.charAt(i); if ((i + 1) % 3 == 0) { if (i == reverseMok.length() - 1) continue; reverseResult = reverseResult + ","; } } result = reverse(reverseResult); return result; } /** * relation function to formatFileSize * @param String * @return String */ private static String reverse(String str) { int i, len; len = str.length(); String result = ""; for (i = (len - 1); i >= 0; i--) result = result + str.charAt(i); return result; } /** * Insert comma to String * @param String * @return String */ public static String getNumberComma(String number) { NumberFormat fmt = NumberFormat.getInstance(); String strNumber = fmt.format(Double.valueOf(number)); return strNumber; } /** * Insert comma to Double * @param Double * @return String */ public static String getNumberComma(Double number) { NumberFormat fmt = NumberFormat.getInstance(); String strNumber = fmt.format(number); return strNumber; } /** * Insert comma to int * @param int * @return String */ public static String getNumberComma(int number) { NumberFormat fmt = NumberFormat.getInstance(); String strNumber = fmt.format(number); return strNumber; } /** * relation fuction to Currency format<br> * <font color="#0000ff">String formatted = Util.format("1234.67789", 2);<br> * formatted ==> "1234.68" * </font> * @param String<br> * @param int<br> * @return formatted double */ public static double format(String str_number, int digits) { String pattern = "###."; double value = -1.; for (int i = 0; i < digits; i++) { pattern += "#"; } try { value = Double.parseDouble(str_number); } catch (NumberFormatException e) { System.err.println("[Util] Bad Number String!!"); } return customFormat(pattern, value); } /** * Use this method like this:<br> * <font color="#0000ff">String formatted = Util.format(1234.67789, 2);<br> * formatted ==> "1234.68" * </font> * @param numer<br> * @param digits<br> * @return formatted double */ public static double format(double number, int digits) { return format("" + number, digits); } /** * This method actually does all for number formatting...<br> * @param pattern pattern to apply to the given double value<br> * @param value number to be formatted<br> * @return formatted double */ private static double customFormat(String pattern, double value) { DecimalFormat myFormatter = new DecimalFormat(pattern); try { String output = myFormatter.format(value); return Double.parseDouble(output); } catch (NumberFormatException e) { System.err.println("[Util] at customFormat(..): NumberFormatException"); return -1.0; } } /** * Use this method like this:<br> * <font color="#0000ff">String formatted = Util.formatIntoCurr("123456789.123", 2);<br> * formatted ==> "123,456,789.12" * </font> * @param str_numer<br> * @param digits<br> * @return formatted String */ public static String formatIntoCurr(String str_number, int digits) { String pattern = "###,###"; double value = -1.; if (digits>0) pattern += "."; for (int i = 0; i < digits; i++) { pattern += "#"; } try { value = Double.parseDouble(str_number); } catch (NumberFormatException e) { System.err.println("[Util] Bad Number String!!"); } return toCurrencyFormat(pattern, value); } /** * This method actually does all for number formatting into Currency <br> * @param formatted<br> * @return : double type */ public static double currencyToNumber(String formatted) { StringTokenizer st = new StringTokenizer(formatted, ","); StringBuffer sb = new StringBuffer(); double ret = -1; while (st.hasMoreTokens()) { sb.append(st.nextToken()); } try { ret = Double.parseDouble(sb.toString()); } catch (NumberFormatException e) { System.err.println("[Util]: Bad Number Format ...." + sb); } finally {} return ret; } /** * Use this method like this:<br> * <font color="#0000ff">String formatted = Util.formatIntoCurr(123456789.123, 2);<br> * formatted ==> "123,456,789.12" * </font> * @param num <br> * @param digits <br> * @return formatted String */ public static String formatIntoCurr(double num, int digits) { return formatIntoCurr("" + num, digits); } /** * This method actually does all for number formatting into Currency <br> * @param pattern <br> * @param value <br> * @return formatted currency String */ private static String toCurrencyFormat(String pattern, double value) { DecimalFormat formatter = new DecimalFormat(pattern); return formatter.format(value); } /** * Date format ex)2001-01-01 13:00 * @param date * @return */ public static String DateForm(String date) { if (date == null) return ""; if (date.length() == 8) return new String(date.substring(0, 4) + "-" + date.substring(4, 6) + "-" + date.substring(6, 8)); if (date.length() == 12) return new String( date.substring(0, 4) + "-" + date.substring(4, 6) + "-" + date.substring(6, 8) + " " + date.substring(8, 10) + ":" + date.substring(10, 12)); return date; } public static String numstring(String currency) { String num1 = "만억조경해자양"; String strTemp = currency; String strTemp2 = ""; String strReturn = ""; int i = 0, j = 0; strTemp = strTemp.replaceAll("0","영"); strTemp = strTemp.replaceAll("1","일"); strTemp = strTemp.replaceAll("2","이"); strTemp = strTemp.replaceAll("3","삼"); strTemp = strTemp.replaceAll("4","사"); strTemp = strTemp.replaceAll("5","오"); strTemp = strTemp.replaceAll("6","육"); strTemp = strTemp.replaceAll("7","칠"); strTemp = strTemp.replaceAll("8","팔"); strTemp = strTemp.replaceAll("9","구"); if(strTemp.length()%4 != 0) { j = 4-(strTemp.length()%4); for(i=0;i<j;i++) { strTemp = "영" + strTemp; } } for(i=1;i<10;i++) { strTemp2 = strTemp.substring(strTemp.length()-(4*i),strTemp.length()-(4*i)+4); if(i > 1 && numstring2(strTemp2)!="") { strReturn = numstring2(strTemp2) + num1.substring(i-2,i-1) + strReturn; } else { strReturn = numstring2(strTemp2) + strReturn; } if(strTemp.length()/4==i) break; } return strReturn; } public static String numstring2(String strNum) { String num1 = "천백십"; int i = 0; String strReturn = ""; for(i=0;i<3;i++) { if(strNum.substring(i,i+1).compareTo("영")!=0 ) { strReturn = strReturn + strNum.substring(i,i+1) + num1.substring(i,i+1); } } if(strNum.substring(3,4).compareTo("영")!=0) { strReturn = strReturn + strNum.substring(i,i+1); } return strReturn; } private static final String INT_RE = "^\\d*$"; private static final String FLOAT_RE = "[-+]?([0-9]*\\.)?[0-9]+([eE][-+]?[0-9]+)?"; private static final String IP_RE = "([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})"; private static final String INT_FLAG = "(0|1)"; // 0|1 private static final String INT_20 = "^\\d{1,2}$"; // 99 private static final String FLOAT_13 = "^[-+]?[0-9]{1,1}(\\.[0-9]{1,3})?$"; // +-9.999 private static final String FLOAT_23 = "^[-+]?[0-9]{1,2}(\\.[0-9]{1,3})?$"; // +-99.999 private static final String FLOAT_33 = "^[-+]?[0-9]{1,3}(\\.[0-9]{1,3})?$"; // +-999.999 private static final String FLOAT_43 = "^[-+]?[0-9]{1,4}(\\.[0-9]{1,3})?$"; // +-9999.999 private static final String FLOAT_54 = "^[-+]?[0-9]{1,5}(\\.[0-9]{1,4})?$"; // +-99999.9999 public static boolean validInteger(String canidate) { return Pattern.matches(INT_RE, canidate); } public static boolean validFloat(String canidate) { return Pattern.matches(FLOAT_RE, canidate); } public static boolean validIP(String canidate) { return Pattern.matches(IP_RE, canidate); } public static boolean validIntegerFlag(String canidate) { return Pattern.matches(INT_FLAG, canidate); } public static boolean validInteger20(String canidate) { return Pattern.matches(INT_20, canidate); } public static boolean validFloat13(String canidate) { return Pattern.matches(FLOAT_13, canidate); } public static boolean validFloat23(String canidate) { return Pattern.matches(FLOAT_23, canidate); } public static boolean validFloat33(String canidate) { return Pattern.matches(FLOAT_33, canidate); } public static boolean validFloat43(String canidate) { return Pattern.matches(FLOAT_43, canidate); } public static boolean validFloat54(String canidate) { return Pattern.matches(FLOAT_54, canidate); } public static String getCurrencyunitByCountrycode(String countrycode) { String currencyunit = "USD"; if (countrycode==null) return currencyunit; switch(countrycode) { case "KR": currencyunit = "KRW"; break; // Korea, Republic of case "DE": // Germany case "FR": // France case "BE": // Belgium case "FI": // Finland case "ES": // Spain case "IT": // Italy case "IE": // Ireland case "NL": // Netherlands case "PT": // Portugal case "AT": // Austria case "GR": // Greece currencyunit = "EUR"; break; case "US": currencyunit = "USD"; break; // United States of America case "JP": currencyunit = "JPY"; break; // Japan case "CN": currencyunit = "CNY"; break; // China case "HK": currencyunit = "HKD"; break; // Hong Kong, Special Administrative Region of China case "TW": currencyunit = "TWD"; break; // Taiwan, Republic of China case "GB": currencyunit = "GBP"; break; // United Kingdom case "CA": currencyunit = "CAD"; break; // Canada case "CH": currencyunit = "CHF"; break; // Switzerland case "SE": currencyunit = "SEK"; break; // Sweden case "AU": currencyunit = "AUD"; break; // Australia case "NZ": currencyunit = "NZD"; break; // New Zealand case "CZ": currencyunit = "CZK"; break; // Czech Republic case "TR": currencyunit = "TRY"; break; // Turkey case "MN": currencyunit = "MNT"; break; // Mongolia case "IL": currencyunit = "ILS"; break; // Israel case "DK": currencyunit = "DKK"; break; // Denmark case "NO": currencyunit = "NOK"; break; // Norway case "SA": currencyunit = "SAR"; break; // Saudi Arabia case "KW": currencyunit = "KWD"; break; // Kuwait case "BH": currencyunit = "BHD"; break; // Bahrain case "AE": currencyunit = "AED"; break; // United Arab Emirates case "JO": currencyunit = "JOD"; break; // Jordan case "EG": currencyunit = "EGP"; break; // Egypt case "TH": currencyunit = "THB"; break; // Thailand case "SG": currencyunit = "SGD"; break; // Singapore case "MY": currencyunit = "MYR"; break; // Malaysia case "ID": currencyunit = "IDR"; break; // Indonesia case "QA": currencyunit = "QAR"; break; // Qatar case "KZ": currencyunit = "KZT"; break; // Kazakhstan case "BN": currencyunit = "BND"; break; // Brunei Darussalam case "IN": currencyunit = "INR"; break; // India case "PK": currencyunit = "PKR"; break; // Pakistan case "BD": currencyunit = "BDT"; break; // Bangladesh case "PH": currencyunit = "PHP"; break; // Philippines case "MX": currencyunit = "MXN"; break; // Mexico case "BR": currencyunit = "BRL"; break; // Brazil case "VN": currencyunit = "VND"; break; // Viet Nam case "ZA": currencyunit = "ZAR"; break; // South Africa case "RU": currencyunit = "RUB"; break; // Russian Federation case "HU": currencyunit = "HUF"; break; // Hungary case "PL": currencyunit = "PLN"; break; // Poland default: currencyunit = "USD"; } return currencyunit; } public static void main(String[] args) { System.out.println("validIntegerFlag(0) - " + validIntegerFlag("0")); System.out.println("validIntegerFlag(1) - " + validIntegerFlag("1")); System.out.println("validIntegerFlag(2) - " + validIntegerFlag("2")); System.out.println("validInteger20(-1) - " + validInteger20("-1")); System.out.println("validInteger20(0) - " + validInteger20("0")); System.out.println("validInteger20(30) - " + validInteger20("30")); System.out.println("validInteger20(2.5) - " + validInteger20("2.5")); System.out.println("validInteger20(100) - " + validInteger20("100")); System.out.println("validFloat13(0) - " + validFloat13("0")); System.out.println("validFloat13(1) - " + validFloat13("1")); System.out.println("validFloat13(-1) - " + validFloat13("-1")); System.out.println("validFloat13(0.123) - " + validFloat13("0.123")); System.out.println("validFloat13(-0.123) - " + validFloat13("-0.123")); System.out.println("validFloat13(9.999) - " + validFloat13("9.999")); System.out.println("validFloat13(-9.999) - " + validFloat13("-9.999")); System.out.println("validFloat13(10.999) - " + validFloat13("10.999")); System.out.println("validFloat13(-9.9999) - " + validFloat13("-9.9999")); System.out.println("validFloat23(0) - " + validFloat23("0")); System.out.println("validFloat23(1) - " + validFloat23("1")); System.out.println("validFloat23(-1) - " + validFloat23("-1")); System.out.println("validFloat23(0.123) - " + validFloat23("0.123")); System.out.println("validFloat23(-0.123) - " + validFloat23("-0.123")); System.out.println("validFloat23(10) - " + validFloat23("10")); System.out.println("validFloat23(10.020) - " + validFloat23("10.020")); System.out.println("validFloat23(99.999) - " + validFloat23("99.999")); System.out.println("validFloat23(-99.999) - " + validFloat23("-99.999")); System.out.println("validFloat23(100) - " + validFloat23("100")); System.out.println("validFloat23(0.1234) - " + validFloat23("0.1234")); System.out.println("validFloat23(100.0) - " + validFloat23("100.0")); System.out.println("validFloat23(90.0100) - " + validFloat23("90.0100")); System.out.println("validFloat33(0) - " + validFloat33("0")); System.out.println("validFloat33(1) - " + validFloat33("1")); System.out.println("validFloat33(-1) - " + validFloat33("-1")); System.out.println("validFloat33(0.123) - " + validFloat33("0.123")); System.out.println("validFloat33(-0.123) - " + validFloat33("-0.123")); System.out.println("validFloat33(10) - " + validFloat33("10")); System.out.println("validFloat33(10.020) - " + validFloat33("10.020")); System.out.println("validFloat33(99.999) - " + validFloat33("99.999")); System.out.println("validFloat33(-99.999) - " + validFloat33("-99.999")); System.out.println("validFloat33(100) - " + validFloat33("100")); System.out.println("validFloat33(100.0) - " + validFloat33("100.0")); System.out.println("validFloat33(999.999) - " + validFloat33("999.999")); System.out.println("validFloat33(-999.999) - " + validFloat33("-999.999")); System.out.println("validFloat33(1234.12) - " + validFloat33("1234.12")); System.out.println("validFloat33(0.1234) - " + validFloat33("0.1234")); System.out.println("validFloat33(90.0100) - " + validFloat33("90.0100")); System.out.println("validFloat54(99999.9999) - " + validFloat54("9999.999")); System.out.println("validFloat54(999999.999) - " + validFloat54("999999.999")); System.out.println(formatIntoCurr(1234.567, 0)); System.out.println(formatIntoCurr(1234.567, 1)); System.out.println(formatIntoCurr(1234.567, 2)); } }