package com.fp.frontend.utility; import java.sql.Timestamp; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import org.apache.commons.lang.StringUtils; import org.apache.poi.ss.usermodel.Cell; import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; import com.fp.frontend.controller.pcustomer.PersonAddressController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.helper.MessageHelper; import com.fp.persistence.parmas.param.TarmCentroControl; import com.fp.persistence.parmas.param.TarmCentroControlJur; import com.fp.persistence.pcustomer.gene.TcustPersonAddress; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; @ManagedBean @ViewScoped public class Utilidades { /** * Metodo para formatear los decimales que se encuentran dentro de un texto * @param texto * @return */ public static String formatearDecimalesEnTexto(String texto, String formato){//.177 //NOTA:Se decide cambiar y no formatear los calibres como definicion de ultimo momento /* DecimalFormat fmt = new DecimalFormat(formato); String patron ="(\\w+)?([0-9]+)?[\\.\\,]([0-9]+)(\\w+)?"; Pattern p = Pattern.compile(patron); Matcher m = p.matcher(texto); String textoReemplazo=texto; while(m.find()) { textoReemplazo = m.replaceFirst( (m.group(1)==null?"": m.group(1)) + fmt.format(Double.valueOf(m.group(2)!=null?m.group(2):"0" + "." +m.group(3))) + (m.group(4)!=null?m.group(4):"")); } return textoReemplazo.replace(",", "."); */ return texto; } public static Timestamp getFechaExpiracion() { Timestamp fechaExpiracion = null; Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, 2999); calendar.set(Calendar.MONTH, 11); calendar.set(Calendar.DATE, 31); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); fechaExpiracion = new Timestamp(calendar.getTimeInMillis()); return fechaExpiracion; } /** * Metodo para armar el formato de una fecha sin hora * @param fechaCldr fecha en formato calendar * @return */ public static String armarFormatoFechaSinHora(Calendar fechaCldr){ return (new SimpleDateFormat("dd-MM-yyyy")).format(fechaCldr.getTime()); } /** * Metodo para armar el formato de una fecha sin hora * @param fechaCldr fecha en formato Date * @return */ public static String armarFormatoFechaSinHora(Date fechaCldr){ return (new SimpleDateFormat("dd-MM-yyyy")).format(fechaCldr); } /** * Metodo para transformar el formato de una fecha con hora * @param fechaCldr * @return */ public static String armarFormatoFechaConHora(Calendar fechaCldr){ return (new SimpleDateFormat("dd-MM-yyyy HH:mm:ss")).format(fechaCldr.getTime()); } /* Reemplazo un string los caracteres en blanco y reemplazo caracteres especiales * @param toConvert * @return la cadena convertida */ public static String obtieneNombreLimpio(String toConvert){ return StringUtils.replaceEach(StringUtils.deleteWhitespace(toConvert), new String[]{"\u00e1","\u00e9","\u00ed","\u00f3","\u00fa","\u00c1","\u00c9","\u00cd","\u00d3","\u00da","\u00F1","\u00d1"}, new String[]{"a","e","i","o","u","A","E","I","O","U","n","N"}); } /** * recorta el nombre * @param nombre * @return */ public static String recorteNombre(String nombre){ String fielname=nombre; if(fielname.length()>30){ fielname=fielname.substring(0,30)+extencionArchivo(nombre); } return fielname; } /** * obtiene la extencion del archivo * @param nombre * @return */ private static String extencionArchivo(String nombre){ int pos=nombre.lastIndexOf('.'); nombre=nombre.substring(pos); return nombre; } /** * Método que revisa si una cadena tiene caracteres especiales * @param nombre * @return * @throws Exception */ public static String caractersEspeciales(String nombre) throws Exception{ List caracteresEsp=CatalogDetailController.find("CARACTERESPECIAL"); for(TgeneCatalogDetail caract:caracteresEsp){ if(nombre.contains(caract.getPk().getCatalog())){ throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonocaracteresespeciales")+": "+caract.getPk().getCatalog()); } } String numero="1234567890"; if(numero.contains(nombre.substring(0, 1))){ throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonodebeiniciarconnum")); } if(nombre!=null && nombre.trim().contains(" ")){ throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonodebecontenerespaciosenblanco")); } if(nombre.length()<9){ nombre="DOCUMENTO-"+nombre; // throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonodebesermenoracincoletras")); } return nombre; } /** * Funcion que reemplaza acentos y caracteres especiales de una cadena de texto * @param input * @return cadena de texto limpia de acentos y caracteres especiales. */ public static String reemplazaAcentosCaractEspeciales(String input) { // Cadena de caracteres original a sustituir. String original = "áàäéèëíìïóòöúùuñÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑçÇ"; // Cadena de caracteres ASCII que reemplazarán los originales. String ascii = "aaaeeeiiiooouuunAAAEEEIIIOOOUUUNcC"; String output = input; for (int i=0; i