Search in sources :

Example 16 with View

use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.

the class EntityManagerTest method testFindSeparateViews.

@Test
public void testFindSeparateViews() throws Exception {
    View view1 = new View(User.class, false).addProperty("name").addProperty("login");
    View view2 = new View(User.class, false).addProperty("name").addProperty("login").addProperty("group", new View(Group.class).addProperty("name"));
    User user1, user2;
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.persistence().getEntityManager();
        user1 = em.find(User.class, userId, view1);
        user2 = em.find(User.class, user2Id, view2);
        tx.commit();
    }
    user1 = reserialize(user1);
    user2 = reserialize(user2);
    assertNotNull(user1);
    assertNotNull(user1.getCreatedBy());
    try {
        user1.getGroup();
        fail();
    } catch (Exception ignored) {
    }
    assertNotNull(user2);
    assertNotNull(user2.getCreatedBy());
    assertNotNull(user2.getGroup());
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) User(com.haulmont.cuba.security.entity.User) Transaction(com.haulmont.cuba.core.Transaction) View(com.haulmont.cuba.core.global.View) EntityNotFoundException(javax.persistence.EntityNotFoundException) Test(org.junit.Test)

Example 17 with View

use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.

the class SerializationTest method testDetachedSerialization.

@Test
public void testDetachedSerialization() throws Exception {
    View view = getView();
    User user;
    Transaction tx = cont.persistence().createTransaction();
    try {
        EntityManager em = cont.persistence().getEntityManager();
        user = em.find(User.class, userId, view);
        assertNotNull(user);
        tx.commit();
    } finally {
        tx.end();
    }
    KryoSerialization kryoSerialization = new KryoSerialization();
    User kryoUser = (User) kryoSerialization.deserialize(kryoSerialization.serialize(user));
    StandardSerialization standardSerialization = new StandardSerialization();
    User standardUser = (User) standardSerialization.deserialize(standardSerialization.serialize(user));
    assertEquals(standardUser, kryoUser);
    assertEquals(standardUser.getLogin(), kryoUser.getLogin());
    assertEquals(standardUser.getName(), kryoUser.getName());
    assertEquals(standardUser.getPosition(), kryoUser.getPosition());
    assertEquals(standardUser.getGroup(), kryoUser.getGroup());
    assertEquals(standardUser.getGroup().getName(), kryoUser.getGroup().getName());
    assertEquals(standardUser.getUserRoles().get(0), kryoUser.getUserRoles().get(0));
    assertEquals(standardUser.getUserRoles().get(0).getRole(), kryoUser.getUserRoles().get(0).getRole());
    assertEquals(standardUser.getUserRoles().get(0).getRole().getName(), kryoUser.getUserRoles().get(0).getRole().getName());
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) User(com.haulmont.cuba.security.entity.User) Transaction(com.haulmont.cuba.core.Transaction) View(com.haulmont.cuba.core.global.View)

Example 18 with View

use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.

the class SerializationTest method getView.

protected View getView() {
    Metadata metadata = AppBeans.get(Metadata.NAME);
    ViewRepository viewRepository = metadata.getViewRepository();
    View userLocalView = viewRepository.getView(User.class, View.LOCAL);
    View roleLocalView = viewRepository.getView(Role.class, View.LOCAL);
    return new View(userLocalView, "test", true).addProperty("group", viewRepository.getView(Group.class, View.LOCAL)).addProperty("userRoles", new View(UserRole.class).addProperty("user", userLocalView).addProperty("role", roleLocalView));
}
Also used : ViewRepository(com.haulmont.cuba.core.global.ViewRepository) UserRole(com.haulmont.cuba.security.entity.UserRole) Metadata(com.haulmont.cuba.core.global.Metadata) View(com.haulmont.cuba.core.global.View)

Example 19 with View

use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.

the class QueryCacheTestClass method testLoadingWithPartialView.

@Test
public void testLoadingWithPartialView() throws Exception {
    appender.clearMessages();
    User user;
    List<User> resultList;
    // load with view: one parameter login
    View userLoginView = new View(User.class).addProperty("login").setLoadPartialEntities(true);
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.entityManager();
        TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
        query.setCacheable(true);
        query.setView(userLoginView);
        resultList = query.getResultList();
        assertEquals(resultList.size(), 2);
        tx.commit();
    }
    user = reserialize(resultList.get(0));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    user = reserialize(resultList.get(1));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    // user
    assertEquals(1, appender.filterMessages(m -> m.contains("> SELECT")).count());
    appender.clearMessages();
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.entityManager();
        TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
        query.setCacheable(true);
        query.setView(userLoginView);
        resultList = query.getResultList();
        assertEquals(resultList.size(), 2);
        tx.commit();
    }
    user = reserialize(resultList.get(0));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    user = reserialize(resultList.get(1));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    // user
    assertEquals(0, appender.filterMessages(m -> m.contains("> SELECT")).count());
    appender.clearMessages();
    // load with view: group
    View groupView = new View(Group.class, false).addProperty("name").setLoadPartialEntities(true);
    View userGroupView = new View(User.class).addProperty("group", groupView).setLoadPartialEntities(true);
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.entityManager();
        TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
        query.setCacheable(true);
        query.setView(userGroupView);
        resultList = query.getResultList();
        assertEquals(resultList.size(), 2);
        tx.commit();
    }
    user = reserialize(resultList.get(0));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    assertEquals(user.getGroup(), group);
    assertEquals(user.getGroup().getName(), group.getName());
    user = reserialize(resultList.get(1));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    assertEquals(user.getGroup(), group);
    assertEquals(user.getGroup().getName(), group.getName());
    assertEquals(1, appender.filterMessages(m -> m.contains("> SELECT") && m.contains("SEC_GROUP")).count());
    appender.clearMessages();
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.entityManager();
        TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
        query.setCacheable(true);
        query.setView(userGroupView);
        resultList = query.getResultList();
        assertEquals(resultList.size(), 2);
        tx.commit();
    }
    user = reserialize(resultList.get(0));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    assertEquals(user.getGroup(), group);
    assertEquals(user.getGroup().getName(), group.getName());
    user = reserialize(resultList.get(1));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    assertEquals(user.getGroup(), group);
    assertEquals(user.getGroup().getName(), group.getName());
    assertEquals(0, appender.filterMessages(m -> m.contains("> SELECT")).count());
    appender.clearMessages();
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.entityManager();
        TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
        query.setCacheable(true);
        query.setView(userLoginView);
        resultList = query.getResultList();
        assertEquals(resultList.size(), 2);
        tx.commit();
    }
    user = reserialize(resultList.get(0));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    assertFail(user::getGroup);
    user = reserialize(resultList.get(1));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    assertFail(user::getGroup);
    assertEquals(0, appender.filterMessages(m -> m.contains("> SELECT")).count());
    appender.clearMessages();
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.entityManager();
        TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
        query.setCacheable(true);
        query.setView(userGroupView);
        resultList = query.getResultList();
        assertEquals(resultList.size(), 2);
        tx.commit();
    }
    user = reserialize(resultList.get(0));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    assertEquals(user.getGroup(), group);
    assertEquals(user.getGroup().getName(), group.getName());
    user = reserialize(resultList.get(1));
    assertNotNull(user.getLogin());
    assertNotNull(user.getName());
    assertEquals(user.getGroup(), group);
    assertEquals(user.getGroup().getName(), group.getName());
    assertEquals(0, appender.filterMessages(m -> m.contains("> SELECT")).count());
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) View(com.haulmont.cuba.core.global.View)

Example 20 with View

use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.

the class FetchJoinTest method testNotLoadingCustomer.

@Test
public void testNotLoadingCustomer() throws Exception {
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.persistence().getEntityManager();
        View partyView = new View(Party.class).addProperty("name");
        View productView = new View(Product.class).addProperty("name");
        View customerView = new View(Customer.class).addProperty("customerNumber").addProperty("party", partyView);
        View salesPersonView = new View(SalesPerson.class).addProperty("salespersonNumber").addProperty("party", partyView);
        View orderView = new View(Order.class).addProperty("orderNumber").addProperty("customer", customerView).addProperty("salesPerson", salesPersonView);
        View orderLineView = new View(OrderLine.class).addProperty("order", orderView).addProperty("product", productView);
        OrderLine reloadedOrderLine = em.find(OrderLine.class, orderLine.getId(), orderLineView);
        assertNotNull(reloadedOrderLine);
        assertNotNull(reloadedOrderLine.getOrder().getCustomer());
        assertEquals(partyCustomer, reloadedOrderLine.getOrder().getCustomer().getParty());
        assertNotNull(reloadedOrderLine.getOrder().getSalesPerson());
        assertEquals(partyPerson, reloadedOrderLine.getOrder().getSalesPerson().getParty());
        tx.commit();
    }
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) View(com.haulmont.cuba.core.global.View) Test(org.junit.Test)

Aggregations

View (com.haulmont.cuba.core.global.View)55 Test (org.junit.Test)24 EntityManager (com.haulmont.cuba.core.EntityManager)22 Transaction (com.haulmont.cuba.core.Transaction)21 User (com.haulmont.cuba.security.entity.User)19 Group (com.haulmont.cuba.security.entity.Group)10 MetaClass (com.haulmont.chile.core.model.MetaClass)5 ViewProperty (com.haulmont.cuba.core.global.ViewProperty)5 UserRole (com.haulmont.cuba.security.entity.UserRole)5 SoftDeleteOneToOneA (com.haulmont.cuba.testmodel.softdelete_one_to_one.SoftDeleteOneToOneA)3 MetaProperty (com.haulmont.chile.core.model.MetaProperty)2 Entity (com.haulmont.cuba.core.entity.Entity)2 ViewRepository (com.haulmont.cuba.core.global.ViewRepository)2 Role (com.haulmont.cuba.security.entity.Role)2 SoftDeleteOneToOneB (com.haulmont.cuba.testmodel.softdelete_one_to_one.SoftDeleteOneToOneB)2 QueryRunner (com.haulmont.bali.db.QueryRunner)1 MetadataObject (com.haulmont.chile.core.model.MetadataObject)1 DynamicAttributesMetaProperty (com.haulmont.cuba.core.app.dynamicattributes.DynamicAttributesMetaProperty)1 QueryResult (com.haulmont.cuba.core.entity.QueryResult)1 Server (com.haulmont.cuba.core.entity.Server)1