package br.com.citframework.util; import java.math.BigDecimal; import java.math.BigInteger; import java.text.NumberFormat; import java.util.Locale; import java.util.StringTokenizer; import br.com.citframework.excecao.LogicException; public class UtilNumbersAndDecimals { /** * Converte uma String em Integer. * @param strParaConvert * @return */ public static Integer convertStringToInteger(String strParaConvert) { if (strParaConvert == null) return new Integer(0); if (strParaConvert.trim().equalsIgnoreCase("")) return new Integer(0); try { int aux = Integer.parseInt(strParaConvert); return new Integer(aux); } catch (Exception e) { return new Integer(0); } } /** * Converte um Big Decimal em Double * @param big * @return */ public static Double changeBigDecimalToDouble(BigDecimal big) { if (big != null) return new Double(big.doubleValue()); else return null; } /** * Pega o valor maior entre 2 * @param val1 * @param val2 * @return */ public static int getMaxValue(int val1, int val2) { if (val1 > val2) return val1; else return val2; } /** * Pega o valor menor entre 2 * @param val1 * @param val2 * @return */ public static int getMinValue(int val1, int val2) { if (val1 < val2) return val1; else return val2; } /** * Trunca um double * @param numero * @return */ public static final int trunca(double numero) { String str = new Double(numero).toString(); StringTokenizer tk = new StringTokenizer(str, "."); str = tk.nextToken(); return new Integer(str).intValue(); } /** * Obtem a fracao * @param numero * @return */ public static final double frac(double numero) { String str = new Double(numero).toString(); StringTokenizer tk = new StringTokenizer(str, "."); str = tk.nextToken(); if (tk.hasMoreElements()) { if (numero <= 0) { str = "-0." + tk.nextToken(); } else { str = "0." + tk.nextToken(); } } return new Double(str).doubleValue(); } /** * Arredonda. * @param valor * @param decimal * @return */ public static final double setRound(double valor, int decimal) { NumberFormat format = NumberFormat.getInstance(new Locale("pt", "BR")); format.setMaximumFractionDigits(decimal); format.setMaximumFractionDigits(decimal); StringBuilder resultTmp = new StringBuilder(format.format(valor)); int ponto = resultTmp.indexOf("."); while (ponto > -1) { resultTmp = resultTmp.deleteCharAt(ponto); ponto = resultTmp.indexOf("."); } return new Double(resultTmp.toString().replaceAll(",", ".")).doubleValue(); } /** * Compara numeros inteiros. Lancando execessao. * @param inic * @param fim * @param descValores * @throws LogicException */ public static void comparaInteiros(Integer inic, Integer fim, String descValores) throws LogicException { if (inic != null && fim != null) if (inic.intValue() > fim.intValue()) { throw new LogicException(descValores + " inicial nao pode ser maior que " + descValores + " final"); } } /** * Gera um Double a partir de uma String * @param valor * @return */ public static final Double strFormatToDouble(String valor) { if (valor == null || valor.length() == 0) { return null; } StringBuilder str = new StringBuilder(valor); for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == '.') { str = str.deleteCharAt(i); } } String tmp = str.toString().replace(',', '.'); Double result = new Double(tmp); return result; } /** * Verifica se um numero eh inteiro. * @param s * @return */ public static final boolean isInteger(final String s) { if (s == null){ return false; } boolean flag = false; for (int x = 0; x < s.length(); x++) { final char c = s.charAt(x); if (x == 0 && (c == '-')) continue; // negative if ((c >= '0') && (c <= '9')) {flag=true; continue;} // 0 - 9 return false; // invalid } return flag; // valid } /** * Funcao que Verifica se tem numero na palavra. * @param s * @return */ public static final boolean hasNumberInWord(final String s) { if (s == null){ return false; } for (int x = 0; x < s.length(); x++) { final char c = s.charAt(x); if ((c >= '0') && (c <= '9')) {return true;} // 0 - 9 } return false; // valid } /** * Converte um Tipo de dado para Integer (Pode ser String, BigDecimal, ...). * @param objNum * @return */ public static final Integer convertToInteger(Object objNum){ Integer num = null; if (BigDecimal.class.isInstance(objNum)){ BigDecimal auxBig = (BigDecimal) objNum; num = new Integer(auxBig.intValue()); }else if (BigInteger.class.isInstance(objNum)){ BigInteger auxBig = (BigInteger) objNum; num = new Integer(auxBig.intValue()); }else if (Double.class.isInstance(objNum)){ Double auxBig = (Double) objNum; num = new Integer(auxBig.intValue()); }else if (Long.class.isInstance(objNum)){ Long auxBig = (Long) objNum; num = new Integer(auxBig.intValue()); }else if (Short.class.isInstance(objNum)){ Short sh = (Short) objNum; num = new Integer(sh.intValue()); }else if (String.class.isInstance(objNum)){ String str = (String) objNum; return convertStringToInteger(str); }else{ num = (Integer) objNum; } return num; } }