classe générique pour mes facades
bonjour,
j'aimerais utiliser des générique pour éviter de toujours ecrire le meme code mais j'ai quelque souci :
voici ce que j'ai penser a crée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
public abstract class AbstractCore<E,F> {
private Class<E> entityClass;
private Class<F> facade;
protected abstract F getEntityManager();
public void Cree(E entity) {
facade.create(entity);
}
public List<E> allObject(){
return facade.findAll();
}
public Civilite ObjectbyID(Object id){
return facade.find(id);
}
public void Modifier(E entity){
facade.update(entity);
}
} |
car pour le moment j'ai les méthodes suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
public class CiviliteCore implements CiviliteInterface {
private CiviliteFacade civiliteFacade = new CiviliteFacade();
public CiviliteCore() {
}
public void Cree(Civilite civilite) {
civiliteFacade.create(civilite);
}
public List<Civilite> allObject(){
return civiliteFacade.findAll();
}
public Civilite ObjectbyID(Civilite civilite){
return civiliteFacade.find(civilite.getKeyCivilite());
}
public void Modifier(Civilite civilite){
civiliteFacade.update(civilite);
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
public class TypeContactCore implements TypeContactInterface {
private TypeContactFacade typeContactFacade = new TypeContactFacade();
@Override
public void Cree(TypeContact typeContact) {
typeContactFacade.create(typeContact);
}
@Override
public List<TypeContact> allObject() {
return typeContactFacade.findAll();
}
@Override
public TypeContact ObjectbyID(TypeContact typeContact) {
return typeContactFacade.find(typeContact.getKeyTypeContact());
}
@Override
public void Modifier(TypeContact typeContact) {
typeContactFacade.update(typeContact);
}
} |
facade extends tous
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
package fr.ietevents.serviceweb.Facades;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
/**
*
* @author Coshom
*/
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
final String urlDB = "fr.ietevents_ServiceWeb_war_1.0-SNAPSHOTPU";
public AbstractFacade(Class<T> entityClass) {
this.entityClass = entityClass;
}
protected abstract EntityManager getEntityManager();
public void create(T entity) {
EntityManager em = getEntityManager();
EntityTransaction tx = em.getTransaction();
//System.out.println( "Début de la transaction");
tx.begin();
try {
// System.out.println( "Ajout du client dans la base en cours..." );
em.persist(entity);
em.flush();
em.refresh(entity);
tx.commit();
// System.out.println( "Transaction validée");
} catch (Exception e) {
System.out.println("Erreur :" + e.getMessage());
tx.rollback();
} finally {
em.close();
}
}
public void update(T entity) {
EntityManager em = getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
try {
em.merge(entity);
em.flush();
tx.commit();
} catch (Exception e) {
System.out.println("Erreur :" + e.getMessage());
tx.rollback();
} finally {
em.close();
}
}
public void remove(T entity) {
getEntityManager().remove(getEntityManager().merge(entity));
}
public T find(Object id) {
return getEntityManager().find(entityClass, id);
}
public List<T> findAll() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList();
}
public List<T> findRange(int[] range) {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
javax.persistence.Query q = getEntityManager().createQuery(cq);
q.setMaxResults(range[1] - range[0]);
q.setFirstResult(range[0]);
return q.getResultList();
}
public int count() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
cq.select(getEntityManager().getCriteriaBuilder().count(rt));
javax.persistence.Query q = getEntityManager().createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
}
} |