/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.envers.test.integration.entityNames.singleAssociatedAudited;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import org.hibernate.MappingException;
import org.hibernate.envers.test.AbstractOneSessionTest;
import org.hibernate.envers.test.Priority;
import org.junit.Test;
/**
* @author Hernán Chanfreau
*/
public class ReadEntityAssociatedAuditedTest extends AbstractOneSessionTest {
private long id_car1;
private long id_car2;
private Car currentCar1;
private Car car1;
private long id_pers1;
private long id_pers2;
private Person currentPerson1;
private Person person1;
protected void initMappings() throws MappingException, URISyntaxException {
URL url = Thread.currentThread().getContextClassLoader().getResource(
"mappings/entityNames/singleAssociatedAudited/mappings.hbm.xml"
);
config.addFile( new File( url.toURI() ) );
}
@Test
@Priority(10)
public void initData() {
initializeSession();
Person pers1 = new Person( "Hernan", 15 );
Person pers2 = new Person( "Leandro", 19 );
Car car1 = new Car( 1, pers1, null );
Car car2 = new Car( 2, pers2, null );
//REV 1
getSession().getTransaction().begin();
getSession().persist( "Personaje", pers1 );
getSession().persist( car1 );
getSession().getTransaction().commit();
id_car1 = car1.getId();
id_pers1 = pers1.getId();
//REV 2
getSession().getTransaction().begin();
pers1.setAge( 50 );
getSession().persist( "Personaje", pers1 );
getSession().persist( "Personaje", pers2 );
getSession().persist( car2 );
getSession().getTransaction().commit();
id_car2 = car2.getId();
id_pers2 = pers2.getId();
}
private void loadDataOnSessionAndAuditReader() {
currentCar1 = (Car) getSession().get( Car.class, id_car1 );
currentPerson1 = (Person) getSession().get( "Personaje", id_pers1 );
car1 = getAuditReader().find( Car.class, id_car1, 1 );
person1 = car1.getOwner();
}
private void checkEntities() {
assert (currentPerson1.getAge() != person1.getAge());
Person person2 = (Person) getSession().get( "Personaje", id_pers2 );
Car car2 = getAuditReader().find( Car.class, id_car2, 2 );
Person person2_1 = car2.getOwner();
assert (person2.getAge() == person2_1.getAge());
}
private void checkEntityNames() {
String currentCar1EN = getSession().getEntityName( currentCar1 );
String currentPerson1EN = getSession().getEntityName( currentPerson1 );
String car1EN = getAuditReader().getEntityName( id_car1, 1, car1 );
assert (currentCar1EN.equals( car1EN ));
String person1EN = getAuditReader().getEntityName( id_pers1, 1, person1 );
assert (currentPerson1EN.equals( person1EN ));
}
@Test
public void testGetAssociationWithEntityName() {
loadDataOnSessionAndAuditReader();
checkEntities();
checkEntityNames();
}
@Test
public void testGetAssociationWithEntityNameInNewSession() {
//force a new session and AR
forceNewSession();
loadDataOnSessionAndAuditReader();
checkEntities();
checkEntityNames();
}
}