Search in sources :

Example 86 with Entity

use of com.haulmont.cuba.core.entity.Entity in project cuba by cuba-platform.

the class DesktopOptionsGroup method setOptionsMap.

@Override
public void setOptionsMap(Map<String, ?> map) {
    if (optionsInitialized)
        return;
    super.setOptionsMap(map);
    if (optionsMap != null) {
        for (String key : optionsMap.keySet()) {
            addItem(new MapKeyWrapper(key));
        }
        if ((datasource != null) && (datasource.getState() == Datasource.State.VALID)) {
            Entity newValue = datasource.getItem();
            updateComponent(newValue);
            fireChangeListeners(newValue);
        }
        optionsInitialized = true;
    }
}
Also used : Entity(com.haulmont.cuba.core.entity.Entity)

Example 87 with Entity

use of com.haulmont.cuba.core.entity.Entity in project cuba by cuba-platform.

the class DesktopOptionsGroup method setOptionsEnum.

@Override
public void setOptionsEnum(Class<? extends EnumClass> optionsEnum) {
    if (optionsInitialized)
        return;
    super.setOptionsEnum(optionsEnum);
    if (optionsEnum != null) {
        List options = Arrays.asList(optionsEnum.getEnumConstants());
        for (Object obj : options) {
            addItem(new ObjectWrapper(obj));
        }
        if ((datasource != null) && (datasource.getState() == Datasource.State.VALID)) {
            Entity newValue = datasource.getItem();
            updateComponent(newValue);
            fireChangeListeners(newValue);
        }
        optionsInitialized = true;
    }
}
Also used : Entity(com.haulmont.cuba.core.entity.Entity)

Example 88 with Entity

use of com.haulmont.cuba.core.entity.Entity in project cuba by cuba-platform.

the class PersistenceSecurityImpl method calculateFilteredData.

@SuppressWarnings("unchecked")
protected boolean calculateFilteredData(Entity entity, Set<EntityId> handled, boolean checkPermitted) {
    MetaClass metaClass = entity.getMetaClass();
    if (!isPermittedInMemory(entity) && checkPermitted) {
        return true;
    }
    EntityId entityId = new EntityId(referenceToEntitySupport.getReferenceId(entity), metaClass.getName());
    if (handled.contains(entityId)) {
        return false;
    }
    handled.add(entityId);
    if (entity instanceof BaseGenericIdEntity) {
        BaseGenericIdEntity baseGenericIdEntity = (BaseGenericIdEntity) entity;
        for (MetaProperty property : metaClass.getProperties()) {
            if (metadataTools.isPersistent(property) && PersistenceHelper.isLoaded(entity, property.getName())) {
                Object value = entity.getValue(property.getName());
                if (value instanceof Collection) {
                    Set filtered = new LinkedHashSet();
                    for (Entity item : (Collection<Entity>) value) {
                        if (calculateFilteredData(item, handled, true)) {
                            filtered.add(referenceToEntitySupport.getReferenceId(item));
                        }
                    }
                    if (!filtered.isEmpty()) {
                        securityTokenManager.addFiltered(baseGenericIdEntity, property.getName(), filtered);
                    }
                } else if (value instanceof Entity) {
                    Entity valueEntity = (Entity) value;
                    if (calculateFilteredData(valueEntity, handled, true)) {
                        securityTokenManager.addFiltered(baseGenericIdEntity, property.getName(), referenceToEntitySupport.getReferenceId(valueEntity));
                    }
                }
            }
        }
        securityTokenManager.writeSecurityToken(baseGenericIdEntity);
    }
    return false;
}
Also used : BaseGenericIdEntity(com.haulmont.cuba.core.entity.BaseGenericIdEntity) Entity(com.haulmont.cuba.core.entity.Entity) MetaClass(com.haulmont.chile.core.model.MetaClass) BaseGenericIdEntity(com.haulmont.cuba.core.entity.BaseGenericIdEntity) MetaProperty(com.haulmont.chile.core.model.MetaProperty)

Example 89 with Entity

use of com.haulmont.cuba.core.entity.Entity in project cuba by cuba-platform.

the class PersistenceSecurityImpl method restoreFilteredData.

@Override
@SuppressWarnings("unchecked")
public void restoreFilteredData(Entity entity) {
    MetaClass metaClass = metadata.getClassNN(entity.getClass());
    String storeName = metadataTools.getStoreName(metaClass);
    EntityManager entityManager = persistence.getEntityManager(storeName);
    Multimap<String, Object> filtered = BaseEntityInternalAccess.getFilteredData(entity);
    if (filtered == null) {
        return;
    }
    for (Map.Entry<String, Collection<Object>> entry : filtered.asMap().entrySet()) {
        MetaProperty property = metaClass.getPropertyNN(entry.getKey());
        Collection filteredIds = entry.getValue();
        if (property.getRange().isClass() && CollectionUtils.isNotEmpty(filteredIds)) {
            Class entityClass = property.getRange().asClass().getJavaClass();
            Class propertyClass = property.getJavaType();
            if (Collection.class.isAssignableFrom(propertyClass)) {
                Collection currentCollection = entity.getValue(property.getName());
                if (currentCollection == null) {
                    throw new RowLevelSecurityException(format("Could not restore an object to currentValue because it is null [%s]. Entity [%s].", property.getName(), metaClass.getName()), metaClass.getName());
                }
                for (Object entityId : filteredIds) {
                    Entity reference = entityManager.getReference((Class<Entity>) entityClass, entityId);
                    // we ignore situations when the currentValue is immutable
                    currentCollection.add(reference);
                }
            } else if (Entity.class.isAssignableFrom(propertyClass)) {
                Object entityId = filteredIds.iterator().next();
                Entity reference = entityManager.getReference((Class<Entity>) entityClass, entityId);
                // we ignore the situation when the field is read-only
                entity.setValue(property.getName(), reference);
            }
        }
    }
}
Also used : BaseGenericIdEntity(com.haulmont.cuba.core.entity.BaseGenericIdEntity) Entity(com.haulmont.cuba.core.entity.Entity) EntityManager(com.haulmont.cuba.core.EntityManager) MetaClass(com.haulmont.chile.core.model.MetaClass) MetaClass(com.haulmont.chile.core.model.MetaClass) MetaProperty(com.haulmont.chile.core.model.MetaProperty)

Example 90 with Entity

use of com.haulmont.cuba.core.entity.Entity in project cuba by cuba-platform.

the class QueryImpl method getQuery.

protected JpaQuery<T> getQuery() {
    if (query == null) {
        View view = views.isEmpty() ? null : views.get(0);
        if (isNative) {
            log.trace("Creating SQL query: {}", queryString);
            if (resultClass == null)
                query = (JpaQuery) emDelegate.createNativeQuery(queryString);
            else {
                if (!Entity.class.isAssignableFrom(resultClass)) {
                    throw new IllegalArgumentException("Non-entity result class for native query is not supported" + " by EclipseLink: " + resultClass);
                }
                Class effectiveClass = metadata.getExtendedEntities().getEffectiveClass(resultClass);
                query = (JpaQuery) emDelegate.createNativeQuery(queryString, effectiveClass);
            }
        } else {
            log.trace("Creating JPQL query: {}", queryString);
            transformedQueryString = transformQueryString();
            log.trace("Transformed JPQL query: {}", transformedQueryString);
            Class effectiveClass = getEffectiveResultClass();
            if (effectiveClass != null) {
                query = (JpaQuery) emDelegate.createQuery(transformedQueryString, effectiveClass);
            } else {
                query = (JpaQuery) emDelegate.createQuery(transformedQueryString);
            }
            if (view != null) {
                MetaClass metaClass = metadata.getClassNN(view.getEntityClass());
                if (!metadata.getTools().isCacheable(metaClass) || !singleResultExpected) {
                    query.setHint(QueryHints.REFRESH, HintValues.TRUE);
                    query.setHint(QueryHints.REFRESH_CASCADE, CascadePolicy.CascadeByMapping);
                }
            }
        }
        if (flushMode == null) {
            if (view != null && !view.loadPartialEntities()) {
                query.setFlushMode(FlushModeType.AUTO);
            } else {
                query.setFlushMode(FlushModeType.COMMIT);
            }
        } else {
            query.setFlushMode(flushMode);
        }
        boolean nullParam = false;
        for (Param param : params) {
            param.apply(query);
            if (param.value == null)
                nullParam = true;
        }
        addMacroParams(query);
        // disable SQL caching to support "is null" generation
        if (nullParam)
            query.setHint(QueryHints.PREPARE, HintValues.FALSE);
        // nested collections in some cases
        if (maxResults != null && !singleResultExpected)
            query.setMaxResults(maxResults);
        if (firstResult != null && !singleResultExpected)
            query.setFirstResult(firstResult);
        if (lockMode != null)
            query.setLockMode(lockMode);
        for (int i = 0; i < views.size(); i++) {
            if (i == 0)
                fetchGroupMgr.setView(query, queryString, views.get(i), singleResultExpected);
            else
                fetchGroupMgr.addView(query, queryString, views.get(i), singleResultExpected);
        }
    }
    // noinspection unchecked
    return query;
}
Also used : Entity(com.haulmont.cuba.core.entity.Entity) MetaClass(com.haulmont.chile.core.model.MetaClass) MetaClass(com.haulmont.chile.core.model.MetaClass) EnumClass(com.haulmont.chile.core.datatypes.impl.EnumClass) JpaQuery(org.eclipse.persistence.jpa.JpaQuery)

Aggregations

Entity (com.haulmont.cuba.core.entity.Entity)203 MetaClass (com.haulmont.chile.core.model.MetaClass)51 MetaProperty (com.haulmont.chile.core.model.MetaProperty)44 BaseGenericIdEntity (com.haulmont.cuba.core.entity.BaseGenericIdEntity)40 CollectionDatasource (com.haulmont.cuba.gui.data.CollectionDatasource)18 Test (org.junit.Test)15 Inject (javax.inject.Inject)14 java.util (java.util)12 EntityManager (com.haulmont.cuba.core.EntityManager)11 ParseException (java.text.ParseException)11 Element (org.dom4j.Element)11 Logger (org.slf4j.Logger)11 com.haulmont.cuba.core.global (com.haulmont.cuba.core.global)10 MetaPropertyPath (com.haulmont.chile.core.model.MetaPropertyPath)9 LoggerFactory (org.slf4j.LoggerFactory)9 Query (com.haulmont.cuba.core.Query)8 Server (com.haulmont.cuba.core.entity.Server)8 Transaction (com.haulmont.cuba.core.Transaction)7 Datasource (com.haulmont.cuba.gui.data.Datasource)7 Collectors (java.util.stream.Collectors)7