import de.juplo.jpa.converters.TimeConversions.FixedZoneIdStrategy;
import de.juplo.jpa.converters.TimeConversions.FixedZoneOffsetStrategy;
+import de.juplo.yourshouter.api.model.Date;
+import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
final static Logger log = LoggerFactory.getLogger(JPAConverterTest.class);
- EntityManager em =
- Persistence.createEntityManagerFactory("test").createEntityManager();
+ EntityManager em;
ZonedDateTime zdt = ZonedDateTime.now();
OffsetDateTime odt = OffsetDateTime.now();
+ LocalDate ld = LocalDate.now();
ZoneId defaultZone = ZoneId.systemDefault();
ZoneId otherZone = defaultZone.getId().equals("America/New_York") ? ZoneId.of("Europe/Berlin") : ZoneId.of("America/New_York");
@Test
+ public void testOffsetDateTimeAnnotated()
+ {
+ em = Persistence.createEntityManagerFactory("annotated").createEntityManager();
+ testOffsetDateTime();
+ }
+
+ @Test
+ public void testOffsetDateTimeXml()
+ {
+ em = Persistence.createEntityManagerFactory("xml").createEntityManager();
+ testOffsetDateTime();
+ }
+
public void testOffsetDateTime()
{
EierlegendeWollmilchSau ews;
- Long id;
TimeConversions.setZoneOffsetStrategy(new FixedZoneOffsetStrategy(defaultOffset));
ews = new EierlegendeWollmilchSau();
ews.odt = odt;
- id = persist(ews);
- ews = retrieve(id);
+ persist(ews);
+ ews = retrieve(EierlegendeWollmilchSau.class, ews.id);
assertEquals(odt, ews.odt);
TimeConversions.setZoneOffsetStrategy(new FixedZoneOffsetStrategy(otherOffset));
ews = new EierlegendeWollmilchSau();
ews.odt = odt;
- id = persist(ews);
- ews = retrieve(id);
+ persist(ews);
+ ews = retrieve(EierlegendeWollmilchSau.class, ews.id);
assertEquals(odt.toInstant(), ews.odt.toInstant());
}
+
+ @Test
+ public void testZonedDateTimeAnnotated()
+ {
+ em = Persistence.createEntityManagerFactory("annotated").createEntityManager();
+ testZonedDateTime();
+ }
+
@Test
+ public void testZonedDateTimeXml()
+ {
+ em = Persistence.createEntityManagerFactory("xml").createEntityManager();
+ testZonedDateTime();
+ }
+
public void testZonedDateTime()
{
EierlegendeWollmilchSau ews;
- Long id;
TimeConversions.setZoneIdStrategy(new FixedZoneIdStrategy(defaultZone));
ews = new EierlegendeWollmilchSau();
ews.zdt = zdt;
- id = persist(ews);
- ews = retrieve(id);
+ persist(ews);
+ ews = retrieve(EierlegendeWollmilchSau.class, ews.id);
assertEquals(zdt, ews.zdt);
TimeConversions.setZoneIdStrategy(new FixedZoneIdStrategy(otherZone));
ews = new EierlegendeWollmilchSau();
ews.zdt = zdt;
- id = persist(ews);
- ews = retrieve(id);
+ persist(ews);
+ ews = retrieve(EierlegendeWollmilchSau.class, ews.id);
assertEquals(zdt.toInstant(), ews.zdt.toInstant());
}
- private Long persist(EierlegendeWollmilchSau ews)
+ @Test
+ public void testDataModel()
+ {
+ em = Persistence.createEntityManagerFactory("data-model").createEntityManager();
+ Date date;
+
+ TimeConversions.setZoneIdStrategy(new FixedZoneIdStrategy(defaultZone));
+ date = new Date();
+ date.setId("TEST");
+ date.setDate(ld);
+ date.setStart(zdt);
+ date.setEnd(zdt);
+ persist(date);
+ date = retrieve(Date.class, date.getId());
+ assertEquals(ld, date.getDate());
+ assertEquals(zdt, date.getStart());
+ assertEquals(zdt, date.getEnd());
+ }
+
+
+ private void persist(Object entity)
{
EntityTransaction tx = em.getTransaction();
tx.begin();
- em.persist(ews);
- log.info("persisting {}", ews);
+ em.persist(entity);
+ log.info("persisting {}", entity);
tx.commit();
em.clear();
- return ews.id;
}
- private EierlegendeWollmilchSau retrieve(Long id)
+ private <T> T retrieve(Class<T> entityClass, Object id)
{
- EierlegendeWollmilchSau ews;
EntityTransaction tx = em.getTransaction();
tx.begin();
- ews = em.find(EierlegendeWollmilchSau.class, id);
- tx.rollback();
- log.info("retrieved {}", ews);
- return ews;
+ try
+ {
+ log.info("retrieving {} of class {}", id, entityClass);
+ return em.find(entityClass, id);
+ }
+ finally
+ {
+ tx.rollback();
+ }
}
}