Index: topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java diff -u topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.8 topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.9 --- topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.8 Wed Jan 18 14:37:53 2006 +++ topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java Mon Jan 23 13:51:52 2006 @@ -23,14 +23,17 @@ * * @author poussin * - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ * - * Last update: $Date: 2006/01/18 14:37:53 $ by : $Author: bpoussin $ + * Last update: $Date: 2006/01/23 13:51:52 $ by : $Author: bpoussin $ */ package org.codelutin.topia.framework; import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; @@ -60,6 +63,8 @@ import org.codelutin.util.ArrayUtil; import org.codelutin.util.CategorisedListenerSet; import org.codelutin.util.ListenerSet; +import org.dom4j.Element; +import org.dom4j.io.XMLWriter; import org.hibernate.EntityMode; import org.hibernate.FlushMode; import org.hibernate.HibernateException; @@ -494,9 +499,13 @@ // l'utilisateur n'a pas fait de commit du context result.hibernate.setFlushMode(FlushMode.NEVER); +// result.tx = result.hibernate.beginTransaction(); + return result; } - + +// Transaction tx = null; + /* * (non-Javadoc) * @@ -560,14 +569,88 @@ int i = 0; for (Object arg : args) { query.setParameter(i++, arg); - } - List result = query.list(); + } + List result = query.setFlushMode(FlushMode.AUTO).list(); return result; } catch (HibernateException eee) { throw new TopiaException("Error during query execution: " + hql, eee); } } + /* (non-Javadoc) + * @see org.codelutin.topia.TopiaContext#add(org.codelutin.topia.persistence.TopiaEntity) + */ + public void add(TopiaEntity e) throws TopiaException { + String id = e.getTopiaId(); + Class entityClass = TopiaId.getClassName(id); + TopiaDAO dao = getDAO(entityClass); + dao.update(e); + } + + /* (non-Javadoc) + * @see org.codelutin.topia.TopiaContext#importXML(java.io.Reader) + */ + public void importXML(Reader xml) throws TopiaException { + // FIXME a faire + } + + /* (non-Javadoc) + * @see org.codelutin.topia.TopiaContext#exportXML(java.io.Writer, java.lang.Class, java.lang.String, java.lang.Object...) + */ + public void exportXML(Writer xml, Object... entityAndcondition) throws TopiaException { + try { + Class entityClass = null; + String condition = null; + + // FIXME si entityAndcondition est vide alors il faut le remplir + // avec toutes les entités du mapping (class, null) + if (entityAndcondition.length == 0) { + entityAndcondition = new Object[getHibernateFactory().getAllClassMetadata().size()]; + int i = 0; + for (Object className : getHibernateFactory().getAllClassMetadata().keySet()) { + entityAndcondition[i++] = Class.forName((String)className); + entityAndcondition[i++] = null; + } + } + + Session sessionDom4j = getHibernate().getSession(EntityMode.DOM4J); + XMLWriter result = new XMLWriter(xml); + + for(int i=0; i