parent
a62040d5f7
commit
d70aca0aca
@ -0,0 +1,61 @@ |
||||
package mivan.model; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
import javax.persistence.Column; |
||||
import javax.persistence.Entity; |
||||
import javax.persistence.FetchType; |
||||
import javax.persistence.GeneratedValue; |
||||
import javax.persistence.GenerationType; |
||||
import javax.persistence.Id; |
||||
import javax.persistence.JoinColumn; |
||||
import javax.persistence.ManyToOne; |
||||
import javax.persistence.Table; |
||||
|
||||
@Entity |
||||
@Table(name="item") |
||||
public class Item implements Serializable{ |
||||
private static final long serialVersionUID = 1993L; |
||||
|
||||
@Id |
||||
@GeneratedValue(strategy = GenerationType.IDENTITY) |
||||
@Column(name = "id", unique = true) |
||||
private long id; |
||||
|
||||
@ManyToOne(fetch=FetchType.LAZY) |
||||
@JoinColumn(name="isbn") |
||||
private Book book; |
||||
|
||||
@ManyToOne(fetch=FetchType.LAZY) |
||||
@JoinColumn(name="location") |
||||
private Location location; |
||||
|
||||
public Item () {} |
||||
public Item(Book book, Location location){ |
||||
super(); |
||||
this.book = book; |
||||
this.location = location; |
||||
} |
||||
|
||||
public long getId() { |
||||
return this.id; |
||||
} |
||||
|
||||
public Book getBook(){ |
||||
return this.book; |
||||
} |
||||
|
||||
public void setBook(Book book){ |
||||
this.book = book; |
||||
} |
||||
|
||||
public Location getLocation() { |
||||
return this.location; |
||||
} |
||||
|
||||
public void setLocation(Location location) { |
||||
this.location = location; |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,13 @@ |
||||
package mivan.repository; |
||||
|
||||
import mivan.model.Item; |
||||
|
||||
public interface ItemRepository extends Repository<Item, Long> { |
||||
|
||||
public void deleteItemById(Long id); |
||||
|
||||
public void addItem(Item item); |
||||
|
||||
public int getSize(); |
||||
|
||||
} |
@ -0,0 +1,81 @@ |
||||
package mivan.repository; |
||||
import java.util.List; |
||||
import java.util.Optional; |
||||
|
||||
import javax.persistence.EntityManager; |
||||
import javax.persistence.EntityManagerFactory; |
||||
import javax.persistence.Persistence; |
||||
|
||||
import mivan.model.Item; |
||||
|
||||
public class ItemRepositoryImpl implements ItemRepository { |
||||
private EntityManagerFactory entityManagerFactory; |
||||
|
||||
public ItemRepositoryImpl() { |
||||
this.entityManagerFactory = Persistence.createEntityManagerFactory("mivan"); |
||||
} |
||||
@Override |
||||
public Optional<Item> findById(Long id) { |
||||
final EntityManager entityManager = this.entityManagerFactory.createEntityManager(); |
||||
Item item = entityManager.find(Item.class, id); |
||||
entityManager.close(); |
||||
return Optional.ofNullable(item); |
||||
} |
||||
|
||||
@Override |
||||
public Iterable<Item> findAll() { |
||||
final EntityManager entityManager = this.entityManagerFactory.createEntityManager(); |
||||
List<Item> items = entityManager.createQuery("FROM Item", Item.class).getResultList(); |
||||
entityManager.close(); |
||||
return items; |
||||
} |
||||
|
||||
@Override |
||||
public void deleteItemById(Long id) { |
||||
final EntityManager entityManager = this.entityManagerFactory.createEntityManager(); |
||||
try { |
||||
if (!entityManager.getTransaction().isActive()) { |
||||
entityManager.getTransaction().begin(); |
||||
} |
||||
Item item = entityManager.find(Item.class, id); |
||||
entityManager.remove(item); |
||||
entityManager.getTransaction().commit(); |
||||
entityManager.close(); |
||||
} catch (Exception ex) { |
||||
entityManager.getTransaction().rollback(); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void addItem(Item item) { |
||||
final EntityManager entityManager = this.entityManagerFactory.createEntityManager(); |
||||
try { |
||||
if (!entityManager.getTransaction().isActive()) { |
||||
entityManager.getTransaction().begin(); |
||||
} |
||||
entityManager.persist(item); |
||||
entityManager.getTransaction().commit(); |
||||
entityManager.close(); |
||||
|
||||
} catch (Exception ex) { |
||||
entityManager.getTransaction().rollback(); |
||||
} |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public int getSize() { |
||||
final EntityManager entityManager = this.entityManagerFactory.createEntityManager(); |
||||
int size = 0; |
||||
try { |
||||
size = entityManager.createQuery("FROM Item").getResultList().size(); |
||||
|
||||
entityManager.close(); |
||||
} catch (Exception ex) { |
||||
size = 0; |
||||
} |
||||
return size; |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,58 @@ |
||||
package mivan; |
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals; |
||||
|
||||
import java.util.Optional; |
||||
|
||||
import org.junit.jupiter.api.Order; |
||||
import org.junit.jupiter.api.Test; |
||||
import org.junit.jupiter.api.TestMethodOrder; |
||||
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; |
||||
|
||||
import mivan.model.Book; |
||||
import mivan.model.Item; |
||||
import mivan.model.Location; |
||||
import mivan.repository.BookRepository; |
||||
import mivan.repository.ItemRepository; |
||||
import mivan.repository.ItemRepositoryImpl; |
||||
|
||||
@TestMethodOrder(OrderAnnotation.class) |
||||
public class ItemTest { |
||||
private ItemRepository itemRepository = new ItemRepositoryImpl(); |
||||
|
||||
|
||||
@Test |
||||
@Order(1) |
||||
void testAddItem() { |
||||
Book book = null; |
||||
Location location = null; |
||||
Item item = new Item(book, location); |
||||
itemRepository.addItem(item); |
||||
int size = itemRepository.getSize(); |
||||
assertEquals(1, size); |
||||
} |
||||
|
||||
|
||||
@Test |
||||
@Order(2) |
||||
void testRemoveItem() { |
||||
int startSize = itemRepository.getSize(); |
||||
Book book = null; |
||||
Location location = null; |
||||
Item item = new Item(book, location); |
||||
itemRepository.addItem(item); |
||||
int size = itemRepository.getSize(); |
||||
assertEquals(startSize + 1, size); |
||||
|
||||
Optional<Item> optItem2 = itemRepository.findById(item.getId()); |
||||
|
||||
Item item2 = optItem2.get(); |
||||
long ID = item2.getId(); |
||||
itemRepository.deleteItemById(ID); |
||||
|
||||
int finalSize = itemRepository.getSize(); |
||||
assertEquals(startSize, finalSize); |
||||
|
||||
|
||||
} |
||||
} |
Loading…
Reference in new issue