package org.tests.insert; import io.ebean.BaseTestCase; import org.junit.Test; import java.sql.SQLException; // CURRENTLY this test is failing with an upgrade of H2 so investigating that ... public class TestSaveWithDaylightSavings extends BaseTestCase { @Test public void test() { // // For it to fail, the time has to match the time at which the daylight saving changes // // are applied in that time zone. Therefore specify it explicitly. // // TimeZone defaultTimeZone = TimeZone.getDefault(); // try { // // TimeZone.setDefault(TimeZone.getTimeZone("EET")); // // // Run the code and see how there is a 3600 second change // Timestamp daylightSavingDate = new Timestamp(1351382400000l); // // On a second run comment in the following date and see // // how there is a 0 second change // // daylightSavingDate = new Date(1361382400000l); // // EBasic e = new EBasic(); // e.setSomeDate(daylightSavingDate); // // Ebean.save(e); // Assert.assertNotNull(e.getId()); // // // Reload the entity from database // EBasic e2 = Ebean.find(EBasic.class, e.getId()); // // long diffMillis = e2.getSomeDate().getTime() - e.getSomeDate().getTime(); // // System.out.println("The date I created " + daylightSavingDate); // System.out.println(" --- the date i put in : " + e.getSomeDate()); // System.out.println(" as millis : " + e.getSomeDate().getTime()); // System.out.println(" --- the date i get back : " + e2.getSomeDate()); // System.out.println(" as millis : " + e2.getSomeDate().getTime()); // System.out.println("The difference is " + diffMillis / 1000 + " seconds"); // // assertEquals(0L, diffMillis); // // } finally { // TimeZone.setDefault(defaultTimeZone); // } } @Test public void testDirect() throws SQLException { // // For it to fail, the time has to match the time at which the daylight saving changes // // are applied in that time zone. Therefore specify it explicitly. // // EbeanServer server = Ebean.getServer(null); // // Transaction transaction = server.createTransaction(); // Connection connection = transaction.getConnection(); // // PreparedStatement pstmt = connection.prepareStatement("create table dls_test (id bigint auto_increment not null, myts timestamp)"); // pstmt.execute(); // pstmt.close(); // // TimeZone defaultTimeZone = TimeZone.getDefault(); // try { // // TimeZone.setDefault(TimeZone.getTimeZone("EET")); // // // Run the code and see how there is a 3600 second change // Timestamp daylightSavingDate = new Timestamp(1351382400000l); // // On a second run comment in the following date and see // // how there is a 0 second change // // daylightSavingDate = new Date(1361382400000l); // // pstmt = connection.prepareStatement("insert into dls_test (myts) values (?)"); // pstmt.setTimestamp(1, daylightSavingDate); // assertEquals(1, pstmt.executeUpdate()); // pstmt.close(); // // pstmt = connection.prepareStatement("select myts from dls_test "); // ResultSet rset = pstmt.executeQuery(); // rset.next(); // Timestamp timestampBack = rset.getTimestamp(1); // pstmt.close(); // rset.close(); // // // long diffMillis = daylightSavingDate.getTime() - timestampBack.getTime(); // // System.out.println(" --- the date i put in : " + daylightSavingDate); // System.out.println(" as millis : " + daylightSavingDate.getTime()); // System.out.println(" --- the date i get back : " + timestampBack); // System.out.println(" as millis : " + timestampBack.getTime()); // System.out.println("The difference is " + diffMillis / 1000 + " seconds"); // // assertEquals(0L, diffMillis); // // } finally { // TimeZone.setDefault(defaultTimeZone); // } } }