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 ;)