isjexecact.br.com.inso.utils.Funcoes.java Source code

Java tutorial

Introduction

Here is the source code for isjexecact.br.com.inso.utils.Funcoes.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package isjexecact.br.com.inso.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import org.joda.time.DateTime;
import org.joda.time.Days;

/**
 *
 * @author glauber.duma
 */

public class Funcoes {

    /**
     * Retorna a data atual.
     * @return Data atual.(java.util.date)
     */
    public static Date getDataAtual() {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return cal.getTime();
    }

    /**
     * Compara duas datas desconsiderando as horas, minutos e segundos.
     * @param data1 Data do tipo Date.
     * @param data2 Data do tipo Date.
     * @return Retorno o resultado da comparaao de Date.compareTo().
     */
    public static int ComparaData(Date data1, Date data2) {

        Calendar cal1 = Calendar.getInstance();
        cal1.set(Calendar.YEAR, data1.getYear());
        cal1.set(Calendar.MONTH, data1.getMonth());
        cal1.set(Calendar.DAY_OF_MONTH, data1.getYear());
        cal1.set(Calendar.HOUR, 0);
        cal1.set(Calendar.MINUTE, 0);
        cal1.set(Calendar.SECOND, 0);
        cal1.set(Calendar.MILLISECOND, 0);

        Calendar cal2 = Calendar.getInstance();
        cal2.set(Calendar.YEAR, data2.getYear());
        cal2.set(Calendar.MONTH, data2.getMonth());
        cal2.set(Calendar.DAY_OF_MONTH, data2.getYear());
        cal2.set(Calendar.HOUR, 0);
        cal2.set(Calendar.MINUTE, 0);
        cal2.set(Calendar.SECOND, 0);
        cal2.set(Calendar.MILLISECOND, 0);

        return cal1.compareTo(cal2);

    }

    /**
     * Adiciona dias em uma data, retornando a data final.
     * @param date Data a ser adicionada os dias.
     * @param days
     * @days Quantidade de dias para adicionar.
     * @return Data com a quantidade de dias adicionada.
     */

    public static Date addDays(Date date, int days) {
        if (date == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DATE, days); //minus number would decrement the days
        return cal.getTime();
    }

    /**
     * Retorna a Hora Atual.
     * @return Hora no formato hh:mm:ss
     */
    public static String getHoraAtual() {
        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.
        DateTime dateTime = new DateTime();
        return dateTime.toString("HH:mm:ss");

        //        Calendar greg = Calendar.getInstance(); //GregorianCalendar();  
        //        SimpleDateFormat formato = new SimpleDateFormat("HH:mm:hh");  
        //        return(formato.format(greg.getTime()));           
    }

    /**
     * Retorna a Hora Atual no formato timestamp.
     * @return Hora no formato hhmmss
     */
    public static String getHoraAtualTstp() {
        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.
        DateTime dateTime = new DateTime();
        return dateTime.toString("HHmmss");

        //        Calendar greg = Calendar.getInstance(); //GregorianCalendar();  
        //        SimpleDateFormat formato = new SimpleDateFormat("HHmmhh");  
        //        return(formato.format(greg.getTime()));           
    }

    /**
     * Retorna o timestamp no formato YYYYMMDDhhmmss.
     * @return String no formato YYYYMMDDhhmmss
     */
    public static String getTimeStamp() {
        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.
        DateTime dateTime = new DateTime();
        return dateTime.toString("YYYYMMddHHmmss");

        //GregorianCalendar greg = new GregorianCalendar();  
        //        Calendar greg = Calendar.getInstance();  
        //        SimpleDateFormat formato = new SimpleDateFormat("yyyyMMddHHmmhh");  
        //        return(formato.format(greg.getTime()));           
    }

    /**
     * Retorna a data corrente no formato yyyymmdd.
     * @return String no formato yyyymmdd.
     */
    public static String getDtosCurrentDate() {
        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.
        DateTime dateTime = new DateTime();
        return dateTime.toString("YYYYMMdd");

        //        GregorianCalendar greg = new GregorianCalendar();  
        //        SimpleDateFormat formato = new SimpleDateFormat("yyyyMMdd");  
        //        return(formato.format(greg.getTime()));           
    }

    /**
     * Retorna a data e hora corrente no formato brasileiro.
     * @return
     */
    public static String getDataHoraBrasil() {
        DateTime dateTime = new DateTime();
        return dateTime.toString("dd/MM/YYYY HH:mm:ss");

        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.

        // Imprimindo a data no formato YYYY-MM-dd HH:mm:ss 
        //System.out.println("dateTime.toString() = " + dateTime.toString("YYYY-MM-dd HH:mm:ss")); 

        /*
            
                    
                TimeZone timeZone = TimeZone.getTimeZone("GMT");
                GregorianCalendar greg = new GregorianCalendar();  
                greg.setTimeZone(timeZone);
                SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy - HH:mm:hh");  
                return(formato.format(greg.getTime()));                   
        */
    }

    /**
     * Retorna uma poro do timeStamp corrente.
     * @param extrair EnumTimeStampPart com os seguintes valores vlidos: Ano, Mes, Dia, Hora, Minuto, Segundo
     * @return String com a informao.
     */
    public static String getTimeStampPart(EnumTimeStampPart extrair) {

        if (extrair == null) {
            return null;
        }

        // Por default sempre trazer o ano a ser extraido, como padro do comportamento do mtodo.
        GregorianCalendar greg = new GregorianCalendar();
        SimpleDateFormat formato = new SimpleDateFormat("yyyy");

        if (extrair.equals(EnumTimeStampPart.Mes)) {
            formato = new SimpleDateFormat("MM");
        } else if (extrair.equals(EnumTimeStampPart.Dia)) {
            formato = new SimpleDateFormat("dd");
        } else if (extrair.equals(EnumTimeStampPart.Hora)) {
            formato = new SimpleDateFormat("HH");
        } else if (extrair.equals(EnumTimeStampPart.Minuto)) {
            formato = new SimpleDateFormat("mm");
        } else if (extrair.equals(EnumTimeStampPart.Segundo)) {
            formato = new SimpleDateFormat("hh");
        }

        return (formato.format(greg.getTime()));
    }

    /**
     * Formatar horas no formato hhmmss para hh:mm:ss.
     * @param time Hora no formato hhmmss.
     * @return Hora no formato hh:mm:ss.
     */
    public static String fmtTime(String time) {
        if (time == null || time.isEmpty()) {
            return null;
        }

        String hora = time.replace(":", "");

        // HHmmSS
        // 0123456789

        if (hora.length() == 6) {
            return hora.substring(0, 2) + ":" + hora.substring(2, 4) + ":" + hora.substring(4, 6);
        } else if (hora.length() == 4) {
            return hora.substring(0, 2) + ":" + hora.substring(2, 4) + ":00";
        }

        return "00:00:00";
    }

    /** 
     * Converte uma String para um objeto Date. Caso a String seja vazia ou nula,  
     * retorna null - para facilitar em casos onde formulrios podem ter campos 
     * de datas vazios. 
     * @param data String no formato dd/MM/yyyy a ser formatada 
     * @return Date Objeto Date ou null caso receba uma String vazia ou nula 
     * @throws Exception Caso a String esteja no formato errado .
     */
    public static Date Stod(String data) throws Exception {
        if (data == null || data.equals("")) {
            return null;
        }
        if (data.length() > 10) {
            data = data.substring(0, 10);
        }

        try {
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            return formatter.parse(data);
        } catch (ParseException e) {
            return null;
        }

    }

    /** 
     * Converte uma String no formato YYYYMMDD para um objeto Date. Caso a String seja vazia ou nula,  
     * retorna null - para facilitar em casos onde formulrios podem ter campos 
     * de datas vazios. 
     * @param data String no formato yyyyMMdd a ser formatada 
     * @return Date Objeto Date ou null caso receba uma String vazia ou nula 
     * @throws Exception Caso a String esteja no formato errado .
     */
    public static Date StodAmd(String data) throws Exception {
        if (data == null || data.equals("")) {
            return null;
        }

        try {
            DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
            return formatter.parse(data);
        } catch (ParseException e) {
            return null;
        }

    }

    /**
     * Retorna uma String com a data convertida no formato dd/MM/yyyy.            
     * @param data Data a ser convertida.
     * @return String com a data convertida no formato dd/mm/yyyy.
     * @throws java.text.ParseException
     */
    public static String getDataAmd(Date data) throws ParseException {
        if (data == null) {
            return null;
        }
        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.
        DateTime dateTime = new DateTime(data);
        return dateTime.toString("dd/MM/YYYY");

        //        Calendar calendario = Calendar.getInstance();         
        //        calendario.setTime(data);        
        // Glauber 25/07/2014 - Estou somando +1 no ms, porque conforme documentao da Oracle o calendario Gregoriano(padro) o ms de janeiro  0.
        //        return  StrZero(calendario.get(Calendar.DAY_OF_MONTH),2) + "/" + StrZero(calendario.get(Calendar.MONTH)+1,2) + "/" + StrZero(calendario.get(Calendar.YEAR),4);

    }

    /**
     * Retorna uma String com a data convertida no formato yyyymmdd.            
     * @param data Data a ser convertida.
     * @return String com a data convertida no formato yyyymmdd.
     */
    public static String Dtos(Date data) {
        if (data == null) {
            return null;
        }
        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.
        DateTime dateTime = new DateTime(data);
        return dateTime.toString("YYYYMMdd");

        //        Calendar calendario = new GregorianCalendar(); 
        //        calendario.setTime(data);        
        // Glauber 25/07/2014 - Estou somando +1 no ms, porque conforme documentao da Oracle o calendario Gregoriano(padro) o ms de janeiro  0.
        //        return  StrZero(calendario.get(Calendar.YEAR),4) +  StrZero(calendario.get(Calendar.MONTH)+1,2) + StrZero(calendario.get(Calendar.DAY_OF_MONTH),2);

    }

    /**
     * Retorna o dia de uma data.
     * @param data Data a ser processada.
     * @return Dia da data.
     */
    public static int getDay(Date data) {
        if (data == null) {
            return 0;
        }

        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.
        DateTime dateTime = new DateTime(data);
        return dateTime.getDayOfMonth();

        //        Calendar calendario = new GregorianCalendar();    
        //        calendario.setTime(data);
        //        return calendario.get(Calendar.DAY_OF_MONTH) ;
    }

    /**
     * Retorna o ms de uma data.
     * @param data Data a ser processada.
     * @return Ms da data.
     */
    public static int getMonth(Date data) {
        if (data == null) {
            return 0;
        }

        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.
        DateTime dateTime = new DateTime(data);
        return dateTime.getMonthOfYear();

        //        Calendar calendario = new GregorianCalendar();    
        //        calendario.setTime(data);
        // Glauber 25/07/2014 - Estou somando +1 no ms, porque conforme documentao da Oracle o calendario Gregoriano(padro) o ms de janeiro  0.
        //        return calendario.get(Calendar.MONTH)+1 ;
    }

    /**
     * Retorna o ano de uma data.
     * @param data Data a ser processada.
     * @return Ano da data.
     */
    public static int getYear(Date data) {
        if (data == null) {
            return 0;
        }
        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.
        DateTime dateTime = new DateTime(data);
        return dateTime.getYear();

        //        Calendar calendario = new GregorianCalendar();    
        //        calendario.setTime(data);
        //        return calendario.get(Calendar.YEAR) ;
    }

    /**
     * Retorna um nmero correspondente ao dia da semana que vai variar de 0  7,
     * sendo que zero em caso de erro ou data invlida.
     * Retorna 1 para domingo, 2 para segunda... e 7 para sbado.
     * @param data Data a ser analisada.
     * @return Nmero correspondendo o dia da semana.
     */
    public static int getDow(Date data) {
        if (data == null) {
            return 0;
        }
        // Glauber 11/09/2014 - Estou trocando pelo componente joda-time para me livrar da dor de cabea de utiilzar as classes nativa do Java.
        DateTime dateTime = new DateTime(data);
        return dateTime.getDayOfWeek();

        //        Calendar calendario = new GregorianCalendar();    
        //        calendario.setTime(data);
        //        return calendario.get(Calendar.DAY_OF_WEEK) ;
    }

    /**
     * Calcula a diferena entre duas datas, retornando o resultado em dias.
     * Caso algum parmetro seja passado como null, retorna -999.
     * @param data1 Primeira data a ser analisada.
     * @param data2 Segunda data a ser analisada.
     * @return Quantidade de dias resultado da diferena entre data1 e data2
     */
    public static int calcularDiferencaDataemDias(Date data1, Date data2) {

        if (data1 == null || data2 == null) {
            return -999;
        }

        // Glauber 10/09/2014
        // Estou trabalhando com JodaTime devido a complexidade de se utilizar as classes primitivas do Java, como Date e Calendar

        DateTime datacalc1 = new DateTime(data1);
        DateTime datacalc2 = new DateTime(data2);

        return Days.daysBetween(datacalc1, datacalc2).getDays();

        // Glauber 09/09/2014 - Peguei da net e adaptei pra nossa necessidade
        /*        
                 // Criar duas instancias de calendar
                Calendar cal1 = Calendar.getInstance();
                Calendar cal2 = Calendar.getInstance();
                    
                // Set the date for both of the calendar instance
                cal1.set(data1.getYear(), data1.getMonth(), data1.getDay());
                cal2.set(data2.getYear(), data2.getMonth(), data2.getDay());
            
                // Get the represented date in milliseconds
                long milis1 = cal1.getTimeInMillis();
                long milis2 = cal2.getTimeInMillis();
                    
                    
                // Calculate difference in milliseconds
                long diff = milis2 - milis1;
                    
                 // Calculate difference in days
                long diffDays = diff / (24 * 60 * 60 * 1000);
                retorno = (int) diffDays;
        */

    }

    /**
      * Extrai a hora de uma string timestamp no formato yyyymmddhhmmss, 
      * retornando o valor da hora como inteiro
      * @param timestamp Timestamp
      * @return valor inteiro, zero caso ocorra algum erro
      */
    public static int extrairHoraTimeStamp(String timestamp) {
        //            1
        //  01234567890123
        //  yyyymmddHHMMSS
        if (null == timestamp) {
            return 0;
        }
        int retorno = Integer.parseInt(timestamp.substring(8, 10));

        return retorno;
    }

    /**
     * Extrai o minuto de uma string timestamp no formato yyyymmddhhmmss, 
     * retornando o valor do minuto como inteiro
     * @param timestamp Timestamp
     * @return valor inteiro, zero caso ocorra algum erro
     */

    public static int extrairMinutoTimeStamp(String timestamp) {
        //            1
        //  01234567890123
        //  yyyymmddHHMMSS
        if (null == timestamp) {
            return 0;
        }
        int retorno = Integer.parseInt(timestamp.substring(9, 11));

        return retorno;
    }

    /** 
     * Converte uma String para um array de string, separando os elementos a cada item encontrado em Separator.  
     * retorna null - Caso str ou Separator sejam nulos ou vazio. 
     * @param str String  a ser processada.
     * @param Separator String a ser utilizada como separador.
     * @return ArrayList<String> com o resultado do processamento.
     * 
     */

    public static ArrayList<String> str2Array(String str, String Separator) {
        if ((str == null || str.isEmpty()) || (Separator == null || Separator.isEmpty())) {
            return null;
        }
        ArrayList<String> strretorno = new ArrayList<>();

        String[] strsplit = str.split(Separator);
        strretorno.addAll(Arrays.asList(strsplit));

        return strretorno;
    }

    /**
     * Faz uma pesquisa no array retornando o nmero do elemento caso encontrado.
     * Caso no seja encontrado, retorna -1.
     * @param array Array a ser pesquisado.
     * @param pesquisar String com o item a ser pesquisado.
     * @param casesensitive Se falso faz a pesquisa ignorando maiscula ou minscula.
     * @return Posio do elemento, caso seja encontrado.
     */
    public static int Ascan(ArrayList<String> array, String pesquisar, boolean casesensitive) {
        if (array == null || pesquisar == null) {
            return -1;
        }
        if (casesensitive) {
            return array.indexOf(pesquisar);
        } else {
            int ret = -1;

            for (int ii = 0; ii < array.size(); ii++) {
                if (array.get(ii).toLowerCase().equals(pesquisar.toLowerCase())) {
                    ret = ii;
                    break;
                }
            }
            return ret;
        }

    }

    /**
     * Trata uma string retirando caracteres como ',",&.
     * @param str String a ser tratada.
     * @return String tratada.
     */

    public static String TrataString(String str) {
        if (str == null || str.isEmpty()) {
            return null;
        }
        String retorno = str.replace("'", "");
        retorno = retorno.replace("\"", "");
        retorno = retorno.replace("&", "");
        return retorno.trim();
    }

    /// <summary>
    /// Retorna uma string com a data no formato aceito pelo Oracle
    /// </summary>
    /// <param name="data">Data a ser convertida.</param>
    /// <returns>Data convertida.</returns>
    public static String DataSqlOracle(Date data) {
        if (data == null) {
            return null;
        }
        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
        return "to_date('" + formato.format(data) + "','dd/mm/yyyy')";
    }

    /// <summary>
    /// Retorna o nome da sequencia seguido da instruo nextval.
    /// </summary>
    /// <param name="tabela">nome da tabela no banco de dados.</param>
    /// <returns>nome da sequencia seguido da instruo nextval.</returns>
    public static String GetSequenceOracle(String tabela) {
        if (tabela == null) {
            return null;
        }
        return "I" + tabela.toUpperCase().trim() + ".nextval";
    }

    /// <summary>
    /// Remover caracteres de uma String. Esta funo  utilizada para remover caracteres do campo NR_PROCESSO para ser utilizado na pesquisa.
    /// </summary>
    /// <param name="str">String a ser tratada.</param>
    /// <returns>String convertida.</returns>
    public static String LimpaChars(String str) {
        if (str == null) {
            return null;
        }
        String retorno = str;
        String[] lachars = { "-", ".", " ", ":", ",", "/" };
        for (String lachar : lachars) {
            retorno = retorno.replace(lachar, "");
        }
        return retorno;
    }

    /// <summary>
    /// Retorna somente os nmeros contido em uma string.
    /// </summary>
    /// <param name="str">String a ser tratada.</param>
    /// <returns>String contendo somente os nmeros.</returns>
    public static String SoNumeros(String str) {
        if (str == null) {
            return null;
        }
        StringBuilder retorno = new StringBuilder("");
        String numeros = "0123456789";
        for (int i = 0; i < str.length(); i++) {
            if (numeros.contains(str.substring(i, i + 1))) {
                retorno.append(str.substring(i, i + 1));
            }
        }
        return retorno.toString();
    }

    /// <summary>
    /// Truncar uma string para no dar problemas na insero.
    /// </summary>
    /// <param name="str">String a ser truncada.</param>
    /// <param name="tamanho">Tamanho desejado.</param>
    /// <returns>String truncada.</returns>
    public static String TruncarString(String str, int tamanho) {
        if (str == null) {
            return null;
        }
        String ret = str;
        if (ret.length() > tamanho) {
            ret = ret.substring(0, tamanho);
        }
        return ret;
    }

    /// <summary>
    /// Retorna um nmero formatado, preenchido com zeros a esquerda.
    /// </summary>
    /// <param name="numero">Nmero a ser formatado.</param>
    /// <param name="tamanho">Tamanho do nmero formatado.</param>
    /// <returns>Numero Formatado.</returns>
    public static String StrZero(int numero, int tamanho) {
        String retorno = "";
        String strnumero = Integer.toString(numero);
        int tam = strnumero.length();
        int qtdzeros = (tamanho - tam);

        if (tam >= tamanho) {
            return Integer.toString(numero);
        }

        if (tamanho > 0) {
            String masc = "";
            for (int ii = 1; ii <= qtdzeros; ii++) {
                masc += "0";
            }
            retorno = masc + Integer.toString(numero);
        }
        return (retorno);
    }

    /// <summary>
    /// Retorna uma string com os caracteres replicados.
    /// </summary>
    /// <param name="str">String ou caracter a ser replicado.</param>
    /// <param name="qtd">Quantidade de caracteres para replicar.</param>
    /// <returns>String replicada.</returns>

    public static String Replicate(String str, int qtd) {
        if (str == null || str.isEmpty() || qtd == 0) {
            return "";
        }

        StringBuilder sb = new StringBuilder();
        for (int ii = 1; ii <= qtd; ii++) {
            sb.append(str);
        }
        return sb.toString();
    }

    /// <summary>
    /// Simula o comando substring do FlagShip.
    /// </summary>
    /// <param name="str">String a ter seu contedo extraido.</param>
    /// <param name="qtd">Quantidade de caracteres para extrair.</param>
    /// <returns>String extraida.</returns>

    public static String SubstrFs(String str, int posini, int qtd) {
        if (str == null || str.isEmpty() || posini < 0 || qtd < 0) {
            return null;
        }

        String retorno = new String();
        if (posini == 0 && qtd == 0) {
            return str;
        } else if (posini > 0 && qtd == 0) {
            return str.substring(posini);
        }

        return str.substring(posini, posini + qtd);
    }
}