001    package org.joda.time.contrib.hibernate;
002    
003    import junit.framework.Assert;
004    import org.hibernate.Session;
005    import org.hibernate.cfg.Configuration;
006    import org.joda.time.DateTime;
007    import org.joda.time.Duration;
008    import org.joda.time.Period;
009    import org.joda.time.contrib.hibernate.testmodel.SomethingThatLasts;
010    
011    import java.io.IOException;
012    import java.io.File;
013    import java.sql.SQLException;
014    
015    /**
016     * @author gjoseph
017     * @author $Author: $ (last edit)
018     * @version $Revision: $
019     */
020    public class TestPersistentDuration extends HibernateTestCase {
021        protected void setupConfiguration(Configuration cfg) {
022            cfg.addFile(new File("src/test/java/org/joda/time/contrib/hibernate/testmodel/SomethingThatLasts.hbm.xml"));
023        }
024    
025        private Duration[] durations = new Duration[]{
026                Duration.ZERO, new Duration(30), Period.seconds(30).toDurationTo(new DateTime()), Period.months(3).toDurationFrom(new DateTime())
027        };
028    
029        public void testSimpleStore() throws SQLException, IOException {
030            Session session = getSessionFactory().openSession();
031    
032            for (int i = 0; i < durations.length; i++) {
033                SomethingThatLasts thing = new SomethingThatLasts();
034                thing.setId(i);
035                thing.setName("test_" + i);
036                thing.setTheDuration(durations[i]);
037                session.save(thing);
038            }
039    
040            session.flush();
041            session.connection().commit();
042            session.close();
043    
044            for (int i = 0; i < durations.length; i++) {
045                session = getSessionFactory().openSession();
046                SomethingThatLasts lastingThing = (SomethingThatLasts) session.get(SomethingThatLasts.class, new Long(i));
047    
048                Assert.assertNotNull(lastingThing);
049                Assert.assertEquals(i, lastingThing.getId());
050                Assert.assertEquals("test_" + i, lastingThing.getName());
051                Assert.assertEquals(durations[i], lastingThing.getTheDuration());
052    
053                session.close();
054            }
055    
056            // printSqlQueryResults("SELECT * FROM lasting");
057        }
058    
059    }