Index: topia2/src/java/org/codelutin/topia/persistence/hibernate/TopiaDAOHibernate.java diff -u topia2/src/java/org/codelutin/topia/persistence/hibernate/TopiaDAOHibernate.java:1.14 topia2/src/java/org/codelutin/topia/persistence/hibernate/TopiaDAOHibernate.java:1.15 --- topia2/src/java/org/codelutin/topia/persistence/hibernate/TopiaDAOHibernate.java:1.14 Tue Dec 4 16:42:57 2007 +++ topia2/src/java/org/codelutin/topia/persistence/hibernate/TopiaDAOHibernate.java Wed Dec 12 17:15:59 2007 @@ -23,18 +23,20 @@ * * @author poussin * - * @version $Revision: 1.14 $ + * @version $Revision: 1.15 $ * - * Last update: $Date: 2007-12-04 16:42:57 $ by : $Author: ruchaud $ + * Last update: $Date: 2007-12-12 17:15:59 $ by : $Author: thimel $ */ package org.codelutin.topia.persistence.hibernate; import java.security.Permission; +import java.util.ArrayList; import java.util.List; import java.util.Map; import org.codelutin.topia.TopiaException; +import org.codelutin.topia.TopiaVetoException; import org.codelutin.topia.persistence.TopiaDAOAbstract; import org.codelutin.topia.persistence.TopiaEntity; import org.hibernate.Criteria; @@ -111,6 +113,7 @@ try { Criteria criteria = createCriteria(FlushMode.AUTO); List result = (List)criteria.list(); + result = filterElements(result); return result; } catch (HibernateException eee) { throw new TopiaException(eee); @@ -154,6 +157,7 @@ Criteria criteria = createCriteria(FlushMode.AUTO); criteria.add(criterion); List result = (List)criteria.list(); + result = filterElements(result); return result; } catch (HibernateException eee) { throw new TopiaException(eee); @@ -170,7 +174,9 @@ criteria.setMaxResults(1); List result = (List)criteria.list(); if (result != null && result.size() > 0) { - return result.get(0); + Entity elem = result.get(0); + elem = filterElement(elem); + return elem; } return null; } catch (HibernateException eee) { @@ -247,4 +253,32 @@ return null; } + private Entity filterElement(Entity elem) { + if (elem != null) { + try { + getContext().getFiresSupport().fireOnPreLoad(context, elem, null); + return elem; + } catch (TopiaVetoException tve) { + //Exception, on retire l'element + } + } + return null; + } + + private List filterElements(List list) { + if (list != null) { + List result = new ArrayList(list.size()); + for (Entity elem : list) { + try { + getContext().getFiresSupport().fireOnPreLoad(context, elem, null); + result.add(elem); + } catch (TopiaVetoException tve) { + //Exception, on retire l'element + } + } + return result; + } + return null; + } + } //TopiaDAOHibernate