terça-feira, 21 de maio de 2013

Redes Sociais

Salve galera,

Para quem quiser receber as novidades do blog nas redes sociais, é só me adicionar como amigo ou curtir o fanpage da Mobile Mind.

Ricardo Bocchi
Facebook https://www.facebook.com/ricardobocchi
Twitter https://twitter.com/ricardobocchi

Mobile Mind
Facebook https://www.facebook.com/mobilemindtec
Twitter https://twitter.com/mobilemindtec


Add ai galera! abrasss!

sábado, 4 de maio de 2013

EJB com Spring

Salve galera!

Uma dica sobre como injetar um EJB dentro de um Service do Spring.  Devem ter outras maneiras, mas a que usei foi essa:

Primeiro devemos ter configuraro no arquivo do Spring (applicationContext.xml) os seguintes namespaces:




    



Bom, temos que informar um id para o Bean, o JNDI Name, que é fornecido pelo container. No meu caso, estou usando o Apache Tomee. E depois a interface de negócio. Então, para injetar usamos @Resource


@Service
public class ServiceBO {

    @Resource()
    private EjbLocalInterface ejbRefName;


}


É fácil assim mesmo! Abrasss e até a próxima !

sexta-feira, 3 de maio de 2013

Spring MVC + Paginação

Salve galera!

Hoje vou postar um código  que uso para implementar paginação de dados nas requisições do Spring MVC.

Para fazer a paginação, a classe Paginator recebe:

  • pageSize: Tamanho da página
  • offset: Posição do registro
  • modelMap: Estrutura de dados do Spring MVC que faz o bind com a view
  • repository: JpaRepository do Spring para fazer a consulta
  • sort: Atributo para ordenação
  • BeanLoaderListener: Listener para carregamento de entidade, caso seja necessário procesar alguma referência.
Código do BeanLoaderListener

public interface BeanLoaderListener {

    void load(Object bean);
}

Código do Paginator


public class Paginator {

    public void list(Integer pageSize, Integer offset, ModelMap modelMap, JpaRepository repository, String sort, BeanLoaderListener listener) {

        if (offset == null || offset < 0) {
            offset = 0;
        }

        if (pageSize == null || pageSize == 0 || pageSize > 50) {
            pageSize = 10;
        }

        Pageable requestPage = sort == null ? new PageRequest(offset, pageSize) : new PageRequest(offset, pageSize, new Sort(sort));
        Page page = null;

        page = repository.findAll(requestPage);

        if (listener != null) {
            for (Object it : page.getContent()) {
                listener.load(it);
            }
        }

        modelMap.addAttribute("items", page.getContent());

        Integer next = offset + 1;
        Integer last = offset - 1;

        if (!page.hasNextPage() && page.hasPreviousPage()) {
            next = page.getTotalPages() - 1;
        } else if (!page.hasNextPage()) {
            next = 0;
        }

        if (page.isFirstPage()) {
            last = 0;
        }

        if (last == null && next == null) {
            modelMap.addAttribute("paginated", false);
        } else {
            modelMap.addAttribute("paginated", true);
            modelMap.addAttribute("next", next);
            modelMap.addAttribute("last", last);
        }

        List pages = new LinkedList<>();
        for (int i = 0; i < page.getTotalPages(); i++) {
            pages.add(i);
        }
        modelMap.addAttribute("pages", pages);
        modelMap.addAttribute("offset", offset);
        modelMap.addAttribute("hasNext", page.hasNextPage());
        modelMap.addAttribute("hasLast", page.hasPreviousPage());
        modelMap.addAttribute("pageSize", pageSize);

    }
}

E aqui um exemplo de uso:


    @RequestMapping(value = "/person/{pageSize}/{offset}", method = RequestMethod.GET)
    public String list(@PathVariable("pageSize") Integer pageSize, @PathVariable("offset") Integer offset, ModelMap modelMap) {        
        new Paginator().list(pageSize, offset, modelMap, repository, "name", null);
        return "person/list";
    }    

Aqui um resource jsp usado na paginação (yaml css): /extra/paginator.jsp



<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

     




E aqui usando o resource jsp dentro de uma tela de listagem:


    



E era isso gurizada! até a próxima ;)

sexta-feira, 26 de abril de 2013

Veloster Benchmark

Salve galera,


Como prometido, realizamos os testes de desempenho relacionando ao uso ou não uso do Veloster Framework em projetos Android.

Você pode conferir os resultados dos testes acessando http://www.4minds.com.br/engine/show/37


Até a próxima!
 

quarta-feira, 24 de abril de 2013

Transição de tela Android

Salve galera,

Outra dica simples para deixar as aplicações Android mais elegantes. Adicionando o código abaixo logo após iníciar uma nova Actitivy ou após finalizar uma Activity, temos um efeito de slide na mudança de tela:


    overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);


Por exemplo:
     finish();
     overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
Ou
     Intent it = new Intent(context, AboutActivity.class);
     startActivity(it);
     overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);



Até a próxima!

Android transição de imagem

Salve galera,

Agora vou mostrar uma transição simples de imagem em uma aplicação Android. É simples, mas já da um toque especial na aplicação. Você deve implementar esse código no eventro da troca da imagem:


     
        //imageView é o componente do tipo ImageView que está armazenando a imagem
        final Bitmap b = bitmap; //nova imagem
        final boolean toRight = true; // define para que lado a imagem vai deslizar até sumir

        Animation out = AnimationUtils.makeOutAnimation(this, toRight);

        out.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation anmtn) {
            }

            @Override
            public void onAnimationEnd(Animation anmtn) {

                imageView.setImageBitmap(b);


                Animation in = AnimationUtils.makeInAnimation(ImageActivity.this, toRight);
                imageView.startAnimation(in);
                imageView.setVisibility(View.VISIBLE);
            }

            @Override
            public void onAnimationRepeat(Animation anmtn) {
            }
        });

        imageView.setVisibility(View.INVISIBLE);
        this.imageView.startAnimation(out);


Simples e com um efeito bacana. Nesse momento, sua aplicação deixa de ser tão "crua" e passa a ser um pouco mais elegante ;)

Até a próxima!

Android Menu

Salve galera,

Vou mostrar como criar um menu em uma aplicação Android. Primeiro vamos criar uma pasta chamada menu dentro da pasta de res do android. Depois vamos criar um arquivo para nosso menu:

res/menu/menu_share.xml


    
       
    

                     
    


Depois, na Activity responsável por nossa tela, vamos adicionar o menu:


 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_share, menu);

        menu.getItem(0).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem mi) {
                share();
                return true;
            }
        });

        menu.getItem(1).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem mi) {
                finish();
                return true;
            }
        });

        return true;
    }


Essa é uma das maneuras de criarmos um menu. O resultado é:



Até mais! abrass