Java/Kotlin -Utilizando um unico array para os argumentos do String.format() (String.format() takes an array as a single argument)

java_kotlin

Como passar os argumentos de um String format em uma unica lista de parametros.

Em Java:

        
        String a = "V1: %s - V2: %s - V3: %s";
        List strings = new ArrayList();
        strings.add("var1");
        strings.add("var2");
        strings.add("var3");

        System.out.println(String.format(a, (Object[]) strings.toArray()));

Em Android utilizando Kotlin:

       
        val a = "V1: %s - V2: %s - V3: %s"
        val strings = ArrayList()
        strings.add("var1")
        strings.add("var2")
        strings.add("var3")

        println(String.format(a, *strings.toTypedArray() as Array<*>))

Java – Criando um serviço WEB para executar fora de um container java (web server standalone with grizzly-http-server / jersey-server / javax.ws.rs)

javaeeNesta publicação vamos mostrar como criar um servidor web standalone, ou seja, vamos compilar o projeto como um jar e executa-lo pelo terminal sem a necessidade de precisar dar deploy em um container java (exemplo: glassfish, toncat, etc). Para isso vamos criar um projeto java com o maven para incluir as seguintes dependências:

javax: javaee-web-api
org.glassfish.grizzly: grizzly-http-server, grizzly-framework
org.glassfish.jersey.core: jersey-server, jersey-common, jersey-client
org.glassfish.jersey.media: jersey-media-sse, jersey-media-json-processing
org.glassfish.jersey.containers: jersey-container-grizzly2-http, jersey-container-servlet

Essas dependências permitem criar um web server e subir sua aplicação em um container próprio. As dependências do javax nos permite criar o serviço web REST, a grizzly fica responsável pelo servidor web e a jersy pelo container. Nesse projeto não vamos chegar a usar todas essas dependências porem vamos deixar no projeto.

Iniciaremos o projeto configurando o pom.xml: Continue reading

Java / GSON – Serializing and Deserializing Generic Types

gson - json

Quando você chama .toJson(obj) o Gson internamente usa obj.getClass() para obter informações sobre os campos para serializar. Da mesma forma na deserialização se passa MyClass.class no método fromJson(json, MyClass.class). Isso funciona bem se o objeto é um tipo não-genérico. No entanto, se o objeto é de um tipo genérico as informações são perdida porcausa da sua generalização. Segue um exemplo:

class Foo<T> {
  T value;
}

Gson gson = new Gson();

Foo<Bar> foo = new Foo<Bar>();
// Não pode serializar foo.value corretamente:
gson.toJson(foo);
// Falha ao deserializar foo.value as Bar:
gson.fromJson(json, foo.getClass()); 

O código acima não consegue interpretar  o valor como um tipo Bar porque o Gson invoca list.getClass() para pegar a informação da classe, mas esse método retorna uma classe cru, Foo.class. Isto significa que Gson não têm nenhuma maneira de saber que este é um objeto do tipo Foo <Bar>, e não simplesmente Foo.

Você pode resolver esse problema especificando o tipo correto para o seu tipo genérico. Você pode fazer isso usando a classe TypeToken veja o exemplo: Continue reading

Java – Como utilizar a FutureTask, controlando o timeout e status de uma thread

multithreadingFutureTask é uma implementação da interface Future a ser executada numa chamada em paralelo. Sendo possível cancelar a execução de uma tarefa, descobrir se a execução já terminou com sucesso ou erro, entre outras operações.

A FutureTask precisa de uma interface para a implementação de uma execução em paralelo. a Callable é parecida com a interface Runnable, mas esta não retorna nenhum valor, enquanto a Callable deve retornar um valor ao final da execução;

MÉTODOS DO FUTURE:

future.cancel(boolean mayInterruptIfRunning) : Cancela o processamento, passar true para interromper se ela ja está iniciada, ou false para cancelar se ainda nao foi iniciada.
future.get(long timeout, TimeUnit unit)  : Espera a resposta da execução de acordo com timeout.
future.get() : Espera a resposta da execução.
future.isDone() : Verifica se a execução já acabou.
future.isCancelled() : Verifica se o processamento foi cancelado.

Exemplo: Continue reading

JAVA/Linux – Configurando JDK no linux – Adicionando JAVA no PATH

java_linux

Faça o Download do JAVA JDK:

http://www.oracle.com/technetwork/pt/java/javase/downloads/index.html

Extraia o arquivo baixado para sua pasta de preferência (exemplo: /opt/java_xxxx)

Opcional: Por costume e em caso de atualização do java, para não precisar mudar minhas configurações eu crio um link simbólico para referenciar a ultima versão do java:

$ ln -s /opt/java_xxxx /opt/java_jdk/

Para configurar o PATH, JAVA_HOME, CLASSPATH e MANPATH edite o arquivo:

$ sudo gedit /etc/profile

Adicione as seguintes linhas no topo do arquivo:

#JAVA
export JAVA_HOME=/opt/java_jdk
export CLASSPATH="$JAVA_HOME/lib"
export PATH="$PATH":"$JAVA_HOME/bin"
export MANPATH=/usr/local/man:/usr/man:"$JAVA_HOME/man"

Java – Como Retornar o ID do registro inserido de uma tabela (Get Autoincrement value after INSERT query in MySQL)

O método abaixo fica responsável em retornar o id autoincrement do registro inserido de uma tabela:

.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
  if (stm.executeUpdate() > 0) {
     ResultSet rs = stm.getGeneratedKeys();
     if (rs.next()) {
        return rs.getInt(1);
     }
}

Integrando o SDK Android ao NetBeans

android-and-netbeans

 

Nesta publicação vamos mostrar como integrar o Android SDK ao NetBeans. O NetBeans é uma excelente IDE e como muitas pessoas não se familiarizaram com a interface do Eclipse ela é a mais recomendada para programadores Java.

Vamos utilizar as seguintes ferramentas: NetBeans 7.3.1, Android SDK R22 (aprenda como instalar aqui)

A integração do Android ao Netbeans não passa de um Plugin. Para iniciar a instalação vamos fazer os seguintes passos: Continue reading

Java – Remover acentos de uma String

acentos

Remover acentos de uma String
Java Removendo acentuação
Como remover acentos de uma String
Normalize String
Java remover acentuação
String remover acentuação

public class TESTE_CHARESPEC {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String texto = "á ç guilherme bíff ã â á à ü helpdev";

        CharSequence cs = new StringBuilder(texto);

        texto = Normalizer.normalize(cs, Normalizer.Form.NFKD)
                .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");

        System.out.println(texto);
    }
}

Saída do terminal:

run:
a c guilherme biff a a a a u helpdev
BUILD SUCCESSFUL (total time: 0 seconds)

Olá, mundo! Olá HELP DEV

migrarwordpress1

 

A migração está quase completa….

Saimos do domínio free do http://zarelli.wordpress.com para um próprio.

Sejam bem vindos ao “Help DEV”

Conforme o tempo vamos ajustando todos os conteúdos e definindo um layout mais agradável para nossos leitores.