Skip to content

Instantly share code, notes, and snippets.

@andreluizf
Last active August 29, 2015 14:02
Show Gist options
  • Save andreluizf/7da1fe1c845a1a9bcd9c to your computer and use it in GitHub Desktop.
Save andreluizf/7da1fe1c845a1a9bcd9c to your computer and use it in GitHub Desktop.
repository
<?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>
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();
}
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