package org.hibernate.tutorial.web; import org.hibernate.ReplicationMode; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import java.io.File; import java.util.Date; import java.util.Iterator; import java.util.List; import util.HibernateUtil; import util.HibernateUtilDom4J; import org.hibernate.tutorial.domain.Account; import org.hibernate.tutorial.domain.Customer; import org.hibernate.tutorial.domain.Event; import org.hibernate.tutorial.domain.Person; import org.dom4j.Document; import org.dom4j.DocumentFactory; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class EventManager { public static void main(String[] args) { Server hsqlServer = null; try { EventManager mgr = new EventManager(); if (args[0].equals("store")) { mgr.createAndStoreEvent("My Event", new Date()); } else if (args[0].equals("person")) { Long personId = mgr.createAndStorePerson("Foo", "Bar"); } else if (args[0].equals("list")) { List events = mgr.listEvents(); for (int i = 0; i < events.size(); i++) { Event theEvent = (Event) events.get(i); System.out.println("Event: " + theEvent.getTitle() + " Time: " + theEvent.getDate()); } } else if (args[0].equals("addpersontoevent")) { Long eventId = mgr.createAndStoreEvent("My Event", new Date()); Long personId = mgr.createAndStorePerson("Foo", "Bar"); mgr.addPersonToEvent(personId, eventId); System.out.println("Added person " + personId + " to event " + eventId); } else if(args[0].equals("xml")) { mgr.xmlMap(); } else if(args[0].equals("xmlInsert")) { mgr.xmlInsert(); } } catch(Exception e) { System.out.println("Erreur = "+ e.toString()); } finally { } } private void xmlMap() { Session session = HibernateUtilDom4J.currentSession(); Transaction tx = session.beginTransaction(); DocumentFactory docFactory = DocumentFactory.getInstance(); Document doc = docFactory.createDocument(); doc.setXMLEncoding("ISO-8859-1"); /*List result = session.createQuery("from Customer c left join " + " fetch c.accounts " + "where c.name.lastName like :name.lastName").list();*/ List result = session.createQuery("from Customer c").list(); Element root = doc.addElement("Test"); for(int i=0; i < result.size(); i++) { Element customer = (Element)result.get(i); root.add(customer); } System.out.println("Result = " + doc.asXML()); session.flush(); HibernateUtilDom4J.closeSession(); } private void xmlInsert() { Session session = null; Transaction tx = null; try { session = HibernateUtilDom4J.currentSession(); tx = session.beginTransaction(); SAXReader sreader = new SAXReader(false); Document doc = sreader.read(new File("D:/dbo/eclipse3_4/workspace/Test/xml/listeCustomers.xml")); List customers = doc.selectNodes("//customer"); System.out.println("********Class =" + customers.size()); for(Iterator ite = customers.iterator(); ite.hasNext();) { Element elt = (Element)ite.next(); System.out.println("elt = " + elt.asXML()); session.replicate(Customer.class.getName(), elt,ReplicationMode.OVERWRITE); } } catch(Exception e) { System.out.println("Exception e = " + e.toString()); } finally { if(session!=null) session.flush(); if(tx!=null) tx.commit(); HibernateUtilDom4J.closeSession(); } } private Long createAndStoreEvent(String title, Date theDate) { Session session = HibernateUtil.currentSession(); Transaction tx = session.beginTransaction(); Event theEvent = new Event(); theEvent.setTitle(title); theEvent.setDate(theDate); session.save(theEvent); session.flush(); tx.commit(); HibernateUtil.closeSession(); return theEvent.getId(); } private Long createAndStorePerson(String firstname, String lastname) { Session session = HibernateUtil.currentSession(); Transaction tx = session.beginTransaction(); Person thePerson = new Person(); thePerson.setFirstname(firstname); thePerson.setLastname(lastname); session.save(thePerson); session.flush(); tx.commit(); HibernateUtil.closeSession(); return thePerson.getId(); } private List listEvents() { Session session = HibernateUtil.currentSession(); session.beginTransaction(); List result = session.createQuery("from Event").list(); session.getTransaction().commit(); return result; } private void addPersonToEvent(Long personId, Long eventId) { Session session = HibernateUtil.currentSession(); Transaction tx = session.beginTransaction(); Person aPerson = (Person) session.load(Person.class, personId); Event anEvent = (Event) session.load(Event.class, eventId); aPerson.getEvents().add(anEvent); session.flush(); tx.commit(); HibernateUtil.closeSession(); } }