Last active
August 29, 2015 14:02
-
-
Save andreluizf/7da1fe1c845a1a9bcd9c to your computer and use it in GitHub Desktop.
repository
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> | |
<persistence-unit name="CAX" transaction-type="JTA"> | |
<jta-data-source>CAX</jta-data-source> | |
<exclude-unlisted-classes>false</exclude-unlisted-classes> | |
<properties> | |
<property name="eclipselink.jdbc.cache-statements" value="true"/> | |
<!-- Optimization #10 - batch writing --> | |
<property name="eclipselink.jdbc.batch-writing" value="JDBC"/> | |
<property name="eclipselink.jdbc.batch-writing.size" value="1000"/> | |
<!-- Optimization #11 - disable caching for batch insert (caching only improves reads, so only adds overhead for inserts) --> | |
<property name="eclipselink.cache.shared.default" value="false"/> | |
<!-- Except for Customer which is shared by orders --> | |
<property name="eclipselink.cache.shared.Customer" value="true"/> | |
<!-- Optimization #12 - turn logging off --> | |
<property name="eclipselink.logging.level" value="off" /> | |
<property name="eclipselink.logging.parameters" value="off"/> | |
<property name = "hibernate.show_sql" value = "true" /> | |
<!--<property name="eclipselink.logging.level" value="FINE"/>--> | |
<!-- Optimization #13 - close EntityManager on commit, to avoid cost of resume --> | |
<property name="eclipselink.persistence-context.close-on-commit" value="false"/> | |
<!--Optimization #14 - avoid auto flush cost on query execution --> | |
<property name="eclipselink.persistence-context.flush-mode" value="commit"/> | |
<!-- Optimization #15 - avoid cost of persist on commit --> | |
<property name="eclipselink.persistence-context.persist-on-commit" value="false"/> | |
</properties> | |
</persistence-unit> | |
</persistence> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.List; | |
public interface Repository<T> { | |
public void saveOrUpdate(T modelo); | |
public void delete(T modelo); | |
public List<T> findAll(); | |
public T findById(Long id); | |
public List<T> findPagination(int first, int max); | |
public Long rowCount(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import br.com.xkey.cax.model.Cliente; | |
import br.com.xkey.cax.model.ClienteVersionamento; | |
import com.google.common.collect.Lists; | |
import java.util.List; | |
import javax.ejb.Remote; | |
import javax.ejb.Stateless; | |
import javax.ejb.TransactionManagement; | |
import javax.ejb.TransactionManagementType; | |
import javax.persistence.EntityManager; | |
import javax.persistence.PersistenceContext; | |
@Stateless(name = "ClienteRepositoryImpl", mappedName = "ejb/ClienteRepositoryImpl") | |
@Remote(value = ClienteRepository.class) | |
@TransactionManagement(TransactionManagementType.CONTAINER) | |
public class ClienteRepositoryImpl implements ClienteRepository { | |
@PersistenceContext(unitName = "CAX") | |
EntityManager em; | |
@Override | |
public void saveOrUpdate(Cliente modelo) { | |
if (modelo.getId() == null) { | |
em.persist(modelo); | |
} else { | |
em.merge(modelo); | |
} | |
em.flush(); | |
} | |
@Override | |
public void delete(Cliente modelo) { | |
em.remove(em.getReference(Cliente.class, modelo.getId())); | |
} | |
@Override | |
public List<Cliente> findAll() { | |
return em.createQuery("Select c from Cliente c ORDER BY c.razaoSocial ASC").getResultList(); | |
} | |
@Override | |
public Cliente findById(Long id) { | |
return null; | |
} | |
@Override | |
public List<Cliente> findPagination(int first, int max) { | |
return em.createQuery("Select c from Cliente c ORDER BY c.razaoSocial ASC").setFirstResult(first).setMaxResults(max).getResultList(); | |
} | |
@Override | |
public List<Cliente> findBusca(int first, int max, String texto) { | |
em.clear(); | |
return em.createQuery("SELECT c FROM Cliente c where c.razaoSocial like :razao or c.nomeFantasia like :nome or c.cnpj like :cnpj or c.cep like :cep or c.cidade like :cidade or c.logradouro like :rua or c.email01 like :email01 or c.email02 like :email02").setParameter("email02", "%" + texto + "%").setParameter("email01", "%" + texto + "%").setParameter("razao", "%" + texto + "%").setParameter("cnpj", "%" + texto + "%").setParameter("cidade", "%" + texto + "%").setParameter("cep", "%" + texto + "%").setParameter("rua", "%" + texto + "%").setParameter("nome", "%" + texto + "%").setFirstResult(first).setMaxResults(max).getResultList(); | |
} | |
@Override | |
public Long rowCount() { | |
return (Long) em.createQuery("select count(c) from Cliente c").getSingleResult(); | |
} | |
@Override | |
public Cliente findCnpj(String cnpj) { | |
try { | |
return (Cliente) em.createQuery("select c from Cliente c where c.cnpj = :cnpj").setParameter("cnpj", cnpj).getSingleResult(); | |
} catch (Exception e) { | |
return null; | |
} | |
} | |
@Override | |
public void merge(Cliente cliente) { | |
em.merge(cliente); | |
} | |
@Override | |
public Long rowBusca(String texto) { | |
return (Long) em.createQuery("SELECT count(c) FROM Cliente c where c.razaoSocial like :razao or c.nomeFantasia like :nome or c.cnpj like :cnpj or c.cep like :cep or c.cidade like :cidade or c.logradouro like :rua or c.email01 like :email01 or c.email02 like :email02").setParameter("email02", "%" + texto + "%").setParameter("email01", "%" + texto + "%").setParameter("razao", "%" + texto + "%").setParameter("cnpj", "%" + texto + "%").setParameter("cidade", "%" + texto + "%").setParameter("cep", "%" + texto + "%").setParameter("rua", "%" + texto + "%").setParameter("nome", "%" + texto + "%").getSingleResult(); | |
} | |
@Override | |
public List<Cliente> orderByASC(int first, int max, String field) { | |
List<Cliente> lists = Lists.newArrayList(); | |
System.out.println("first "+first); | |
System.out.println("max "+max); | |
switch (field.toLowerCase()) { | |
case "id": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.id ASC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
case "razao": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.nomeFantasia ASC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
case "cnpj": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.cnpj ASC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
case "email": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.email01 ASC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
case "consultor": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.idColaboradorResponsavel.nome ASC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
case "telefone": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.telefone01 ASC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
} | |
return lists; | |
} | |
@Override | |
public List<Cliente> orderByDESC(int first, int max, String field) { | |
List<Cliente> lists = Lists.newArrayList(); | |
switch (field.toLowerCase()) { | |
case "id": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.id DESC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
case "razao": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.nomeFantasia DESC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
case "cnpj": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.cnpj DESC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
case "email": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.email01 DESC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
case "consultor": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.idColaboradorResponsavel.nome DESC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
case "telefone": | |
lists = em.createQuery("Select c from Cliente c ORDER BY c.telefone01 DESC").setFirstResult(first).setMaxResults(max).getResultList(); | |
break; | |
} | |
return lists; | |
} | |
@Override | |
public List<ClienteVersionamento> findVersionamentoByCliente(Integer id) { | |
return em.createQuery("Select c from ClienteVersionamento c JOIN FETCH c.idVersionamento v JOIN FETCH v.idProduto p where c.idCliente.id=:id").setParameter("id", id).getResultList(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment