tx.begin();
for (int i = 1; i <= 100; i++) {
if (i % 500 == 0) {
System.out.println(i);
}
Personne personnetest = new Personne();
personnetest.setNom("NomTest" + i);
personnetest.setPrenom("PrenomTest" + i);
personnetest.setCourriel("CourrielTest" + i);
session.persist(personnetest);
if (i % 49 != 0) {
for (int j = 1; j <= 49; j += 2) {
Personne personnetest2 = (Personne) session.get(
Personne.class, personnetest.getId() - j);
if (personnetest2 != null) {
personnetest.addRelationDirecte(personnetest2);
session.update(personnetest);
}
}
} else if (i % 49 == 0) {
Personne personnetest3 = (Personne) session.get(
Personne.class, personnetest.getId() - 50);
if (personnetest3 != null)
personnetest.addRelationDirecte(personnetest3);
}
session.update(personnetest);
}
tx.commit();
} else if (testCase.equals("EXEC2")) {
// Ex�cution des diff�rents chargements et strat�gies
System.out
.println("################## EXEC 2 ###################");
session = sessionFactory.getCurrentSession();
tx = session.getTransaction();
tx.begin();
//<set name="relationsDirectes" table="PERSONNE_RELATION_DIRECTE" cascade="save-update" lazy="true" fetch="join" >
//lazy="true" fetch="join"
//lazy="true" fetch="select"
//lazy="true" fetch="subselect"
//lazy="false" fetch="join"
//lazy="false" fetch="select"
//lazy="false" fetch="subselect"
Personne personne = (Personne) session.get(Personne.class, new Long(1));
tx.commit();
} else if (testCase.equals("TEST1")) {
// Retrouver toutes les relations de premier niveau d'une personne
System.out
.println("################## TEST 1 ###################");
session = sessionFactory.getCurrentSession();
tx = session.getTransaction();
tx.begin();
String courriel = "john.doe@nobody.com";
Personne personne = findPersonneByCourriel(session, courriel);
Set<Personne> relationsDirectes = personne.getRelationsDirectesR();
System.out.println("=> relations directes de "
+ personne.getCourriel() + " : ");
displayPersonneCollection(relationsDirectes);
tx.commit();
} else if (testCase.equals("TEST2")) {
// Retrouver toutes les relations de niveau sup�rieur � 1 d'une
// personne : Java Pur
System.out.println("################## TEST 2 ###################");
session = sessionFactory.getCurrentSession();
tx = session.getTransaction();
tx.begin();
// Personne dont on cherche les relations de niveau > 1 (soit les
// relations indirectes)
Personne personne = (Personne) session.get(Personne.class, new Long(1));
int niveau = 5;
Set<Personne> relationsFound = getRelationsIndirectes(personne,niveau);
System.out.println("=> toutes les relations de niveau "+niveau+" de "+ personne.getCourriel() + " : ");
displayPersonneCollection(relationsFound);
tx.commit();
}
else if (testCase.equals("TEST3")) {
// Retrouver toutes les relations de niveau sup�rieur � 1 d'une
// personne : SQL
System.out.println("################## TEST 3 ###################");
session = sessionFactory.getCurrentSession();
tx = session.getTransaction();
tx.begin();
// Personne dont on cherche les relations de niveau > 1
Personne personne = (Personne) session.get(Personne.class, new Long(1));
int niveau = 5;
@SuppressWarnings("unchecked")
List<Personne> relations = getRelationsIndirectesSqlNiveau(session, personne, niveau);
System.out.println("=> toutes les relations de niveau "+niveau+" de "+ personne.getCourriel() + " : ");
displayPersonneCollection(relations);
tx.commit();
} else if (testCase.equals("TEST4")) {
// Retrouver toutes les personnes liant directement ou indirectement
// deux personnes
// = intersection des relations directes et indirectes des deux
// personnes
System.out
.println("################## TEST 4 ###################");
session = sessionFactory.getCurrentSession();
tx = session.getTransaction();
tx.begin();
// Personnes dont on cherche les relations directes et indirectes
String courriel1 = "john.doe@nobody.com";
Personne personne1 = findPersonneByCourriel(session, courriel1);
String courriel2 = "jane.doe@nobody.com";
Personne personne2 = findPersonneByCourriel(session, courriel2);
int minDepth = 1;
@SuppressWarnings("unchecked")
List<Personne> relations1 = getRelationsIndirectesSQL(session,
personne1, minDepth);
@SuppressWarnings("unchecked")
List<Personne> relations2 = getRelationsIndirectesSQL(session,
personne2, minDepth);
@SuppressWarnings("unchecked")
List<Personne> liens = (List<Personne>) CollectionUtils
.intersection(relations1, relations2);
System.out
.println("=> toutes les personnes liant directement ou indirectement "
+ personne1.getCourriel()
+ " � "
+ personne2.getCourriel() + " : ");
displayPersonneCollection(liens);
tx.commit();
} else if (testCase.equals("TEST5")) {
// Retrouver toutes les relations potentielles d'une personne : Java Pur
System.out.println("################## TEST 5 ###################");
session = sessionFactory.getCurrentSession();
tx = session.getTransaction();
tx.begin();
int i = 0;
System.out.println(i++);
// Personne dont on cherche les relations directes et indirectes
Personne personne = (Personne) session.get(Personne.class, new Long(9));
System.out.println(i++);
// toutes les relations de niveau 2 et plus
Set<Personne> relations = getRelationsIndirectes(personne);
System.out.println(i++);
// toutes les personnes ayant suivi les m�mes formations
for (Formation form : personne.getFormationsSuiviesR()) {
for (Personne personneFormee : form.getPersonnesFormeesR()) {
if (!relations.contains(personneFormee)
&& personneFormee != personne) {
relations.add(personneFormee);
}
}
}
System.out.println(i++);
// toutes les personnes ayant travaill� dans les m�mes entreprises
for (PosteOccupe posteOccupe : personne.getPostesOccupesR()) {
for (PosteOccupe posteOccupeEntreprise : posteOccupe.getEntreprise().getPostesOccupesR()) {
if (!relations.contains(posteOccupeEntreprise.getPersonne())
&& posteOccupeEntreprise.getPersonne() != personne) {
relations.add(posteOccupeEntreprise.getPersonne());
}
}
}
System.out.println("=> tous les contacts potentiels de "
+ personne.getCourriel() + "(nb : "+relations.size() +") : ");
displayPersonneCollection(relations);
tx.commit();
} else if (testCase.equals("TEST6")) {
//Retrouver toutes les relations potentielles d'une personne : HQL et SQL
System.out.println("################## TEST 6 ###################");
session = sessionFactory.getCurrentSession();
tx = session.getTransaction();
tx.begin();
String courriel = "molly.doe@nobody.com";
Personne personne = findPersonneByCourriel(session, courriel);
//les contacts de niveau 2 et plus sont des contacts directs potentiels
List<Personne> personnes = (List<Personne>) getRelationsIndirectesSQL(session, personne, 2);
//les personnes travaillant ou ayant travaill� pour la m�me entreprise sont des contacts directs potentiels
@SuppressWarnings("unchecked")
List<Personne> personnesEntreprise = (List<Personne>) session.getNamedQuery("personne-lien-entreprise")
.setParameter("personne_id", personne.getId())
.list();
//les personnes ayant suivi les memes formations sont des contacts directs potentiels
@SuppressWarnings("unchecked")
List<Personne> personnesFormation = (List<Personne>) session.getNamedQuery("personne-lien-formation")
.setParameter("personne_id", personne.getId())
.list();
@SuppressWarnings("unchecked")
List<Personne> allRelations = (List<Personne>) CollectionUtils.union( CollectionUtils.union(personnes, personnesEntreprise),personnesFormation);
System.out.println ("=> tous les contacts potentiels de "+personne.getCourriel()+" : ");
displayPersonneCollection(allRelations);
tx.commit();
} else if (testCase.equals("TEST7")) {
//Retrouver toutes les personnes ayant consult� un profil de personne donn�e
System.out.println("################## TEST 7 ###################");
session = sessionFactory.getCurrentSession();
tx = session.getTransaction();
tx.begin();
String courriel = "bob.doe@nobody.com";
Personne personne = findPersonneByCourriel(session, courriel);
@SuppressWarnings("unchecked")
List<Personne> consultants = (List<Personne>) session.getNamedQuery("personne-consultant")
.setParameter("personne_id", personne.getId())
.list();
System.out.println("=> toutes les personnes ayant consult� le profil de "+personne.getCourriel()+" : ");
displayPersonneCollection(consultants);
tx.commit();
}
long t1 = new Date().getTime();
System.out.println("temps en millisecondes : "+(t1-t0));