use of org.jpwh.model.filtering.dynamic.Item in project microservices by pwillhan.
the class DynamicFilter method storeTestData.
public DynamicFilterTestData storeTestData() throws Exception {
UserTransaction tx = TM.getUserTransaction();
tx.begin();
EntityManager em = JPA.createEntityManager();
DynamicFilterTestData testData = new DynamicFilterTestData();
testData.users = new TestData(new Long[2]);
User johndoe = new User("johndoe");
em.persist(johndoe);
testData.users.identifiers[0] = johndoe.getId();
User janeroe = new User("janeroe", 100);
em.persist(janeroe);
testData.users.identifiers[1] = janeroe.getId();
testData.categories = new TestData(new Long[2]);
Category categoryOne = new Category("One");
em.persist(categoryOne);
testData.categories.identifiers[0] = categoryOne.getId();
Category categoryTwo = new Category("Two");
em.persist(categoryTwo);
testData.categories.identifiers[1] = categoryTwo.getId();
testData.items = new TestData(new Long[3]);
Item itemFoo = new Item("Foo", categoryOne, johndoe);
em.persist(itemFoo);
testData.items.identifiers[0] = itemFoo.getId();
Item itemBar = new Item("Bar", categoryOne, janeroe);
em.persist(itemBar);
testData.items.identifiers[1] = itemBar.getId();
Item itemBaz = new Item("Baz", categoryTwo, janeroe);
em.persist(itemBaz);
testData.items.identifiers[2] = itemBaz.getId();
tx.commit();
em.close();
return testData;
}
use of org.jpwh.model.filtering.dynamic.Item in project microservices by pwillhan.
the class DynamicFilter method filterItems.
@Test
public void filterItems() throws Throwable {
DynamicFilterTestData testData = storeTestData();
UserTransaction tx = TM.getUserTransaction();
try {
tx.begin();
EntityManager em = JPA.createEntityManager();
{
org.hibernate.Filter filter = em.unwrap(Session.class).enableFilter("limitByUserRank");
filter.setParameter("currentUserRank", 0);
{
List<Item> items = em.createQuery("select i from Item i").getResultList();
// select * from ITEM where 0 >=
// (select u.RANK from USERS u where u.ID = SELLER_ID)
assertEquals(items.size(), 1);
}
em.clear();
{
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery criteria = cb.createQuery();
criteria.select(criteria.from(Item.class));
List<Item> items = em.createQuery(criteria).getResultList();
// select * from ITEM where 0 >=
// (select u.RANK from USERS u where u.ID = SELLER_ID)
assertEquals(items.size(), 1);
}
em.clear();
filter.setParameter("currentUserRank", 100);
List<Item> items = em.createQuery("select i from Item i").getResultList();
assertEquals(items.size(), 3);
}
em.clear();
tx.commit();
em.close();
} finally {
TM.rollback();
}
}
Aggregations