Search in sources :

Example 1 with Item

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;
}
Also used : UserTransaction(javax.transaction.UserTransaction) Item(org.jpwh.model.filtering.dynamic.Item) EntityManager(javax.persistence.EntityManager) User(org.jpwh.model.filtering.dynamic.User) Category(org.jpwh.model.filtering.dynamic.Category) TestData(org.jpwh.shared.util.TestData)

Example 2 with Item

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();
    }
}
Also used : UserTransaction(javax.transaction.UserTransaction) CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) Item(org.jpwh.model.filtering.dynamic.Item) EntityManager(javax.persistence.EntityManager) CriteriaQuery(javax.persistence.criteria.CriteriaQuery) List(java.util.List) JPATest(org.jpwh.env.JPATest) Test(org.testng.annotations.Test)

Aggregations

EntityManager (javax.persistence.EntityManager)2 UserTransaction (javax.transaction.UserTransaction)2 Item (org.jpwh.model.filtering.dynamic.Item)2 List (java.util.List)1 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)1 CriteriaQuery (javax.persistence.criteria.CriteriaQuery)1 JPATest (org.jpwh.env.JPATest)1 Category (org.jpwh.model.filtering.dynamic.Category)1 User (org.jpwh.model.filtering.dynamic.User)1 TestData (org.jpwh.shared.util.TestData)1 Test (org.testng.annotations.Test)1