package org.jboss.as.test.integration.jpa.hibernate.envers;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.hibernate.envers.AuditReader;
import org.hibernate.envers.AuditReaderFactory;
/**
* @author Madhumita Sadhukhan
*/
@Stateless
public class SLSBAuditMO {
@PersistenceContext(unitName = "myCustPhone")
EntityManager em;
public CustomerMO createCustomer(String firstName, String surName, String type, String areacode, String phnumber) {
PhoneMO phone1 = new PhoneMO();
phone1.setNumber(phnumber);
phone1.setAreacode(areacode);
phone1.setType(type);
PhoneMO phone2 = new PhoneMO();
phone2.setNumber("777222123");
phone2.setAreacode("+420");
phone2.setType("HOME");
CustomerMO cust = new CustomerMO();
cust.setFirstname(firstName);
cust.setSurname(surName);
cust.getPhones().add(phone1);
cust.getPhones().add(phone2);
em.persist(cust);
em.persist(phone1);
em.persist(phone2);
return cust;
}
public CustomerMO updateCustomer(CustomerMO c) {
return em.merge(c);
}
public PhoneMO createPhone(String type, String areacode, String phnumber) {
PhoneMO phone1 = new PhoneMO();
phone1.setNumber(phnumber);
phone1.setAreacode(areacode);
phone1.setType(type);
em.persist(phone1);
return phone1;
}
public PhoneMO updatePhone(PhoneMO p) {
return em.merge(p);
}
public void deletePhone(PhoneMO p) {
em.remove(em.merge(p));
}
public int retrieveOldPhoneListSizeFromCustomer(int id) {
AuditReader reader = AuditReaderFactory.get(em);
List<Number> revList = reader.getRevisions(CustomerMO.class, id);
CustomerMO cust_rev = reader.find(CustomerMO.class, id, revList.get(revList.size() - 1));
return cust_rev.getPhones().size();
}
public String retrieveOldPhoneListVersionFromCustomer(int id) {
AuditReader reader = AuditReaderFactory.get(em);
CustomerMO cust_rev = reader.find(CustomerMO.class, id, 1);
return cust_rev.getPhones().get(0).getType();
}
}