package com.weecode.plugin.comics.model;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import org.eclipse.persistence.internal.jpa.EntityManagerImpl;
import org.eclipse.persistence.sessions.UnitOfWork;
import com.weecode.plugin.comics.model.emf.ComicsEntityManagerFactory;
import com.weecode.plugin.comics.model.eo.Publisher;
import com.weecode.plugin.comics.model.eo.Title;
/**
*
* @author Jason Kusnier and Tim Hollosy
*
*/
public class TitlesModel {
private EntityManager em;
private List
titles = new ArrayList();
private List publishers = new ArrayList();
private EntityTransaction transaction;
public TitlesModel() {
em = ComicsEntityManagerFactory.createEntityManager();
transaction = em.getTransaction();
transaction.begin();
readTitles();
readPublishers();
}
public void close() {
em.close();
}
@SuppressWarnings("unchecked")
private void readTitles() {
Query query = em.createQuery("select t from Title t");
this.titles = query.getResultList();
}
@SuppressWarnings("unchecked")
private void readPublishers() {
Query query = em.createQuery("select p from Publisher p");
this.publishers = query.getResultList();
}
public List getPublishers() {
return publishers;
}
public void save() {
transaction.commit();
transaction.begin();
}
public boolean isDirty() {
UnitOfWork uow = ((EntityManagerImpl)em).getUnitOfWork();
return uow.hasChanges();
}
public void refresh() {
// em.flush();
em.clear();
readTitles();
}
public List getTitles() {
return titles;
}
}