Java tutorial
/* * 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); } }