Index: topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java diff -u topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.18 topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.19 --- topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.18 Fri Mar 31 13:22:12 2006 +++ topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java Wed May 10 13:38:32 2006 @@ -23,9 +23,9 @@ * * @author poussin * - * @version $Revision: 1.18 $ + * @version $Revision: 1.19 $ * - * Last update: $Date: 2006/03/31 13:22:12 $ by : $Author: thimel $ + * Last update: $Date: 2006/05/10 13:38:32 $ by : $Author: thimel $ */ package org.codelutin.topia.framework; @@ -34,6 +34,9 @@ import java.io.IOException; import java.io.Reader; import java.io.Writer; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; @@ -41,8 +44,11 @@ import java.util.Map; import java.util.Properties; import java.util.Set; +import java.util.StringTokenizer; import java.util.WeakHashMap; +import javax.swing.text.DateFormatter; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.topia.TopiaContext; @@ -75,12 +81,18 @@ import org.codelutin.util.ArrayUtil; import org.codelutin.util.CategorisedListenerSet; import org.codelutin.util.ListenerSet; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentFactory; import org.dom4j.Element; +import org.dom4j.io.OutputFormat; +import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.hibernate.EntityMode; import org.hibernate.FlushMode; import org.hibernate.HibernateException; import org.hibernate.Query; +import org.hibernate.ReplicationMode; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; @@ -99,6 +111,9 @@ import org.hibernate.event.PreUpdateEventListener; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.hbm2ddl.SchemaUpdate; +import org.xml.sax.XMLReader; + +import com.sun.corba.se.spi.legacy.connection.GetEndPointInfoAgainException; /** * Le TopiaContextImpl est le point d'entre pour acceder aux donnees. Il est @@ -725,22 +740,48 @@ dao.update(e); } - /* (non-Javadoc) + /** (non-Javadoc) * @see org.codelutin.topia.TopiaContext#importXML(java.io.Reader) */ public void importXML(Reader xml) throws TopiaException { - // FIXME a faire + Document doc = null; + + SAXReader xmlReader = new SAXReader(); + try { + doc = xmlReader.read(xml); + if (log.isDebugEnabled()) { + log.debug("Lecture du document terminee"); + } + } catch (DocumentException de) { + throw new TopiaException("Lecture du document impossible", de); + } + + if (doc != null) { + Session sessionDom4j = getHibernate().getSession(EntityMode.DOM4J); + Element rootElement = doc.getRootElement(); + Iterator it = rootElement.elementIterator(); + while (it.hasNext()) { + Element entity = (Element)it.next(); + try { + sessionDom4j.replicate(entity, ReplicationMode.EXCEPTION); + } catch (HibernateException he) { + log.warn("Echec de replication sur " + entity, he); + } + } + } else { + throw new TopiaException("Document vide"); + } } - /* (non-Javadoc) - * @see org.codelutin.topia.TopiaContext#exportXML(java.io.Writer, java.lang.Class, java.lang.String, java.lang.Object...) + /** (non-Javadoc) + * @see org.codelutin.topia.TopiaContext#exportXML(java.io.Writer, 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 + + // 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() * 2]; @@ -750,10 +791,15 @@ entityAndcondition[i++] = null; } } - + Session sessionDom4j = getHibernate().getSession(EntityMode.DOM4J); - XMLWriter result = new XMLWriter(xml); - + + Document doc = DocumentFactory.getInstance().createDocument(); + Element rootElement = doc.addElement("topiaExport"); + DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + String date = format.format(new Date(System.currentTimeMillis())); + rootElement.addAttribute("date", date); + for(int i=0; i