/*
* 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.reventity.trackmodifiedentities;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.hibernate.envers.configuration.EnversSettings;
import org.hibernate.envers.test.BaseEnversFunctionalTestCase;
import org.hibernate.envers.test.Priority;
import org.hibernate.envers.test.integration.entityNames.manyToManyAudited.Car;
import org.hibernate.envers.test.integration.entityNames.manyToManyAudited.Person;
import org.hibernate.envers.test.tools.TestTools;
import org.hibernate.envers.tools.Pair;
import org.junit.Test;
/**
* @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
*/
public class EntityNamesTest extends BaseEnversFunctionalTestCase {
@Override
protected String[] getMappings() {
return new String[] {"mappings/entityNames/manyToManyAudited/mappings.hbm.xml"};
}
@Override
protected void addSettings(Map settings) {
super.addSettings( settings );
settings.put( EnversSettings.TRACK_ENTITIES_CHANGED_IN_REVISION, "true" );
}
@Test
@Priority(10)
public void initData() {
Person pers1 = new Person( "Hernan", 28 );
Person pers2 = new Person( "Leandro", 29 );
Person pers3 = new Person( "Barba", 32 );
Person pers4 = new Person( "Camomo", 15 );
// Revision 1
getSession().getTransaction().begin();
List<Person> owners = new ArrayList<Person>();
owners.add( pers1 );
owners.add( pers2 );
owners.add( pers3 );
Car car1 = new Car( 5, owners );
getSession().persist( car1 );
getSession().getTransaction().commit();
long person1Id = pers1.getId();
// Revision 2
owners = new ArrayList<Person>();
owners.add( pers2 );
owners.add( pers3 );
owners.add( pers4 );
Car car2 = new Car( 27, owners );
getSession().getTransaction().begin();
Person person1 = (Person) getSession().get( "Personaje", person1Id );
person1.setName( "Hernan David" );
person1.setAge( 40 );
getSession().persist( car1 );
getSession().persist( car2 );
getSession().getTransaction().commit();
}
@Test
@SuppressWarnings("unchecked")
public void testModifiedEntityTypes() {
assert TestTools.makeSet(
Pair.make( Car.class.getName(), Car.class ),
Pair.make( "Personaje", Person.class )
)
.equals( getAuditReader().getCrossTypeRevisionChangesReader().findEntityTypes( 1 ) );
assert TestTools.makeSet(
Pair.make( Car.class.getName(), Car.class ),
Pair.make( "Personaje", Person.class )
)
.equals( getAuditReader().getCrossTypeRevisionChangesReader().findEntityTypes( 2 ) );
}
}