blob: 2edae2df2d45eb7f5451a10c4eb63f8aea84ff13 [file] [log] [blame]
/**
* Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.eclipse.osbp.dsl.entity.xtext.tests.AbstractJPATest;
public class ModelTestcarstoreTests extends AbstractJPATest {
private static final String PERSISTENCE_UNIT_NAME = "testcarstore";
private static EntityManagerFactory emf;
@Before
public void setUp() throws Exception {
super.setUp();
emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME,
properties);
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
Customer buyer = new Customer();
Customer seller = new Customer();
Employee boss = new Employee();
Employee employee = new Employee();
Address buyeraddr = new Address();
Address manufactureraddr = new Address();
Manufacturer manufacturer = new Manufacturer();
Manufacturer manufacturer2 = new Manufacturer();
Car car = new Car();
Car car2 = new Car();
Car car3 = new Car();
buyer.setFirstname("Bertie");
buyer.setLastname("Bowser");
buyer.setBirthdate(new Date(1980, 1, 1));
seller.setFirstname("Sammy");
seller.setLastname("Stevenson");
seller.setBirthdate(new Date(1960, 1, 1));
employee.setFirstname("Emily");
employee.setLastname("Ericsson");
employee.setBirthdate(new Date(1990, 1, 1));
employee.setBoss(boss);
boss.setFirstname("Charles");
boss.setLastname("Chiefer");
boss.setBirthdate(new Date(1955, 5, 5));
boss.setBoss(boss);
buyeraddr.setCity("Wien");
buyeraddr.setZipcode(1010);
buyeraddr.setStreetname("Walfischgasse");
buyeraddr.setHousenumber(12);
manufacturer.setName("OSBP Racecars");
// manufacturer.setAddress(manufactureraddr);
manufacturer2.setName("Crashcars");
manufactureraddr.setCity("Torino");
manufactureraddr.setZipcode(23456);
manufactureraddr.setStreetname("Tivoli");
manufactureraddr.setHousenumber(34);
// buyer.addToAddress(buyeraddr);
// manufacturer.setAddress(manufactureraddr);
car.setConstructiondate(new Date(2012, 4, 4));
car.setModelname("Beta Romeo");
car.setManufacturer(manufacturer);
car2.setModelname("Wreckcar");
car2.setManufacturer(manufacturer2);
car3.setModelname("Crashcar");
car3.setManufacturer(manufacturer2);
txn.begin();
em.persist(buyer);
em.persist(seller);
em.persist(boss);
em.persist(employee);
em.persist(manufacturer);
em.persist(manufacturer2);
txn.commit();
assertEquals(1, buyer.getId());
assertEquals(2, seller.getId());
assertEquals(3, boss.getId());
assertEquals(4, employee.getId());
assertEquals(5, manufacturer.getId());
assertEquals(7, manufacturer2.getId());
assertEquals("Bertie", buyer.getFirstname());
assertEquals("Bowser", buyer.getLastname());
assertEquals("Bertie", buyer.getFirstname());
List<Employee> elist = em.createQuery(
"select e from Employee e where e.id = 4").getResultList();
assertEquals(1, elist.size());
}
@After
public void tearDown() throws Exception {
emf.close();
}
/**
* Read from database
*/
@Test
public void test02() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em.createQuery("select e from Employee e");
List<Employee> elist = q.getResultList();
assertEquals(2, elist.size());
txn.commit();
}
/**
* Select specific object from db
*/
@Test
public void test03() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em.createQuery("select e from Employee e where e.id = 4");
List<Employee> elist = q.getResultList();
assertEquals(1, elist.size());
txn.commit();
}
/**
* Check some values stored in db
*/
@Test
public void test04() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em.createQuery("select e from Employee e");
List<Employee> elist = q.getResultList();
assertEquals(2, elist.size());
for (Employee e : elist) {
if (e.getId() == 3) {
assertEquals("Charles", e.getFirstname());
assertEquals("Chiefer", e.getLastname());
assertEquals(1955, e.getBirthdate().getYear());
List<Employee> elist2 = e.getSubordinates();
assertEquals(2, elist2.size());
for (Employee e2 : elist2) {
assertEquals(e2.getBoss(), e); // check bidirectional
// reference
}
}
if (e.getId() == 4) {
assertEquals("Emily", e.getFirstname());
assertEquals("Ericsson", e.getLastname());
assertEquals(1990, e.getBirthdate().getYear());
assertEquals("Charles", e.getBoss().getFirstname());
}
}
txn.commit();
}
/**
* Check different object
*/
@Test
public void test05() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em.createQuery("select c from Car c");
List<Car> clist = q.getResultList();
assertEquals(3, clist.size());
for (Car c : clist) {
if (c.getId() == 7) {
assertEquals("Beta Romeo", c.getModelname());
assertEquals(2012, c.getConstructiondate().getYear());
assertEquals("OSBP Racecars", c.getManufacturer().getName());
}
}
txn.commit();
}
/**
* Add value to db and read it back
*/
@Test
public void test06() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em.createQuery("select c from Customer c");
List<Customer> list = q.getResultList();
assertEquals(2, list.size());
for (Customer c : list) {
if (c.getId() == 1) {
assertEquals("Bertie", c.getFirstname());
c.setIban("AT12345678901234567890");
em.persist(c);
txn.commit();
}
}
q = em.createQuery("select c from Customer c where c.id = 1");
list = q.getResultList();
assertEquals(1, list.size());
for (Customer c : list) {
if (c.getId() == 1) {
assertEquals("AT12345678901234567890", c.getIban());
}
}
}
/**
* Change value in db and read it back
*/
@Test
public void test07() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em.createQuery("select c from Customer c");
List<Customer> list = q.getResultList();
assertEquals(2, list.size());
for (Customer c : list) {
if (c.getId() == 1) {
assertEquals("Bertie", c.getFirstname());
c.setIban("DE0987654321");
em.persist(c);
txn.commit();
}
}
q = em.createQuery("select c from Customer c where c.id = 1");
list = q.getResultList();
assertEquals(1, list.size());
for (Customer c : list) {
if (c.getId() == 1) {
assertEquals("DE0987654321", c.getIban());
}
}
}
/**
* Load supertype from db
*/
@Test
public void test08() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em.createQuery("select p from Person p");
List<Person> list = q.getResultList();
assertEquals(4, list.size());
txn.commit();
}
/**
* Access a type via query for supertype (with strategy joined)
*/
@Test
public void test09() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em.createQuery("select p from Person p");
List<Person> list = q.getResultList();
assertEquals(4, list.size());
for (Person p : list) {
if (p instanceof Employee) {
assertNotNull(((Employee) p).getBoss());
}
;
}
txn.commit();
}
/**
* Delete operation
*/
@Test
public void test10() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em
.createQuery("delete from Person p where p.firstname = 'Bertie'");
int deletedCount = q.executeUpdate();
assertEquals(1, deletedCount);
txn.commit();
q = em.createQuery("select p from Person p");
List<Person> list = q.getResultList();
assertEquals(3, list.size());
}
/**
* Check bidirectional one-to-many
*/
@Test
public void test11() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em
.createQuery("select c from Car c where c.manufacturer.id = 7");
List<Car> list = q.getResultList();
for (Car c : list) {
System.out.println("Car " + c.getModelname() + ", Manufacturer: "
+ c.getManufacturer().getId());
}
assertEquals(2, list.size());
txn.commit();
}
/**
* Delete cascade operation
*/
@Test
public void test12() {
EntityManager em = emf.createEntityManager();
EntityTransaction txn = em.getTransaction();
txn.begin();
Query q = em.createQuery("select c from Car c");
List<Car> list = q.getResultList();
assertEquals(3, list.size());
for (Car c : list) {
System.out.println("Car " + c.getModelname() + ", Manufacturer: "
+ c.getManufacturer().getId());
}
Manufacturer m = em.find(Manufacturer.class, 7L);
em.remove(m);
txn.commit();
q = em.createQuery("select c from Car c");
list = q.getResultList();
assertEquals(1, list.size());
for (Car c : list) {
System.out.println("Car " + c.getModelname() + ", Manufacturer: "
+ c.getManufacturer().getId());
}
}
}