org.grails.datastore.mapping.model.PersistentProperty - java examples

Here are the examples of the java api org.grails.datastore.mapping.model.PersistentProperty taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

8 Examples 7

19 View Complete Implementation : GrailsHibernateUtil.java
Copyright Apache License 2.0
Author : grails
/**
 * Add order to criteria, creating necessary subCriteria if nested sort property (ie. sort:'nested.property').
 */
private static void addOrderPossiblyNested(AbstractHibernateDatastore datastore, Criteria c, Clreplaced<?> targetClreplaced, String sort, String order, boolean ignoreCase) {
    int firstDotPos = sort.indexOf(".");
    if (firstDotPos == -1) {
        addOrder(c, sort, order, ignoreCase);
    } else {
        // nested property
        String sortHead = sort.substring(0, firstDotPos);
        String sortTail = sort.substring(firstDotPos + 1);
        PersistentProperty property = getGrailsDomainClreplacedProperty(datastore, targetClreplaced, sortHead);
        if (property instanceof Embedded) {
            // embedded objects cannot reference enreplacedies (at time of writing), so no more recursion needed
            addOrder(c, sort, order, ignoreCase);
        } else if (property instanceof replacedociation) {
            Criteria subCriteria = c.createCriteria(sortHead);
            Clreplaced<?> propertyTargetClreplaced = ((replacedociation) property).getreplacedociatedEnreplacedy().getJavaClreplaced();
            GrailsHibernateUtil.cacheCriteriaByMapping(datastore, propertyTargetClreplaced, subCriteria);
            // Recurse on nested sort
            addOrderPossiblyNested(datastore, subCriteria, propertyTargetClreplaced, sortTail, order, ignoreCase);
        }
    }
}

19 View Complete Implementation : AbstractHibernateQuery.java
Copyright Apache License 2.0
Author : grails
@Override
public Query order(Order order) {
    super.order(order);
    String property = order.getProperty();
    int i = property.indexOf('.');
    if (i > -1) {
        String sortHead = property.substring(0, i);
        String sortTail = property.substring(i + 1);
        if (createdreplacedociationPaths.containsKey(sortHead)) {
            CriteriaAndAlias criteriaAndAlias = createdreplacedociationPaths.get(sortHead);
            Criteria criteria = criteriaAndAlias.criteria;
            org.hibernate.criterion.Order hibernateOrder = order.getDirection() == Order.Direction.ASC ? org.hibernate.criterion.Order.asc(property) : org.hibernate.criterion.Order.desc(property);
            criteria.addOrder(order.isIgnoreCase() ? hibernateOrder.ignoreCase() : hibernateOrder);
        } else {
            PersistentProperty persistentProperty = enreplacedy.getPropertyByName(sortHead);
            if (persistentProperty instanceof replacedociation) {
                replacedociation a = (replacedociation) persistentProperty;
                if (persistentProperty instanceof Embedded) {
                    addSimpleOrder(order, property);
                } else {
                    if (criteria != null) {
                        Criteria subCriteria = criteria.createCriteria(sortHead);
                        addOrderToCriteria(subCriteria, sortTail, order);
                    } else if (detachedCriteria != null) {
                        DetachedCriteria subDetachedCriteria = detachedCriteria.createCriteria(sortHead);
                        addOrderToDetachedCriteria(subDetachedCriteria, sortTail, order);
                    }
                }
            }
        }
    } else {
        addSimpleOrder(order, property);
    }
    return this;
}

19 View Complete Implementation : AbstractHibernateQuery.java
Copyright Apache License 2.0
Author : grails
org.hibernate.criterion.Criterion getRestrictionForFunctionCall(FunctionCallingCriterion criterion, PersistentEnreplacedy enreplacedy) {
    org.hibernate.criterion.Criterion sqlRestriction;
    SessionFactory sessionFactory = ((IHibernateTemplate) session.getNativeInterface()).getSessionFactory();
    String property = criterion.getProperty();
    Criterion datastoreCriterion = criterion.getPropertyCriterion();
    PersistentProperty pp = enreplacedy.getPropertyByName(property);
    if (pp == null)
        throw new InvalidDataAccessResourceUsageException("Cannot execute function defined in query [" + criterion.getFunctionName() + "] on non-existent property [" + property + "] of [" + enreplacedy.getJavaClreplaced() + "]");
    String functionName = criterion.getFunctionName();
    Dialect dialect = getDialect(sessionFactory);
    SQLFunction sqlFunction = dialect.getFunctions().get(functionName);
    if (sqlFunction != null) {
        TypeResolver typeResolver = getTypeResolver(sessionFactory);
        BasicType basic = typeResolver.basic(pp.getType().getName());
        if (basic != null && datastoreCriterion instanceof PropertyCriterion) {
            PropertyCriterion pc = (PropertyCriterion) datastoreCriterion;
            final org.hibernate.criterion.Criterion hibernateCriterion = getHibernateCriterionAdapter().toHibernateCriterion(this, datastoreCriterion, alias);
            if (hibernateCriterion instanceof SimpleExpression) {
                SimpleExpression expr = (SimpleExpression) hibernateCriterion;
                Object op = ReflectionUtils.getField(opField, expr);
                PropertyMapping mapping = getEnreplacedyPersister(enreplacedy.getJavaClreplaced().getName(), sessionFactory);
                String[] columns;
                if (alias != null) {
                    columns = mapping.toColumns(alias, property);
                } else {
                    columns = mapping.toColumns(property);
                }
                String root = render(basic, Arrays.asList(columns), sessionFactory, sqlFunction);
                Object value = pc.getValue();
                if (value != null) {
                    sqlRestriction = Restrictions.sqlRestriction(root + op + "?", value, typeResolver.basic(value.getClreplaced().getName()));
                } else {
                    sqlRestriction = Restrictions.sqlRestriction(root + op + "?", value, basic);
                }
            } else {
                throw new InvalidDataAccessResourceUsageException("Unsupported function [" + functionName + "] defined in query for property [" + property + "] with type [" + pp.getType() + "]");
            }
        } else {
            throw new InvalidDataAccessResourceUsageException("Unsupported function [" + functionName + "] defined in query for property [" + property + "] with type [" + pp.getType() + "]");
        }
    } else {
        throw new InvalidDataAccessResourceUsageException("Unsupported function defined in query [" + functionName + "]");
    }
    return sqlRestriction;
}

19 View Complete Implementation : AbstractHibernateQuery.java
Copyright Apache License 2.0
Author : grails
@Override
public replacedociationQuery createQuery(String replacedociationName) {
    final PersistentProperty property = enreplacedy.getPropertyByName(calculatePropertyName(replacedociationName));
    if (property != null && (property instanceof replacedociation)) {
        String alias = generateAlias(replacedociationName);
        CriteriaAndAlias subCriteria = getOrCreateAlias(replacedociationName, alias);
        replacedociation replacedociation = (replacedociation) property;
        if (subCriteria.criteria != null) {
            return new HibernatereplacedociationQuery(subCriteria.criteria, (AbstractHibernateSession) getSession(), replacedociation.getreplacedociatedEnreplacedy(), replacedociation, alias);
        } else if (subCriteria.detachedCriteria != null) {
            return new HibernatereplacedociationQuery(subCriteria.detachedCriteria, (AbstractHibernateSession) getSession(), replacedociation.getreplacedociatedEnreplacedy(), replacedociation, alias);
        }
    }
    throw new InvalidDataAccessApiUsageException("Cannot query replacedociation [" + calculatePropertyName(replacedociationName) + "] of enreplacedy [" + enreplacedy + "]. Property is not an replacedociation!");
}

19 View Complete Implementation : GrailsHibernateQueryUtils.java
Copyright Apache License 2.0
Author : grails
/**
 * Add order to criteria, creating necessary subCriteria if nested sort property (ie. sort:'nested.property').
 */
private static void addOrderPossiblyNested(Criteria c, PersistentEnreplacedy enreplacedy, String sort, String order, boolean ignoreCase) {
    int firstDotPos = sort.indexOf(".");
    if (firstDotPos == -1) {
        addOrder(c, sort, order, ignoreCase);
    } else {
        // nested property
        String sortHead = sort.substring(0, firstDotPos);
        String sortTail = sort.substring(firstDotPos + 1);
        PersistentProperty property = enreplacedy.getPropertyByName(sortHead);
        if (property instanceof Embedded) {
            // embedded objects cannot reference enreplacedies (at time of writing), so no more recursion needed
            addOrder(c, sort, order, ignoreCase);
        } else if (property instanceof replacedociation) {
            replacedociation a = (replacedociation) property;
            Criteria subCriteria = c.createCriteria(sortHead);
            PersistentEnreplacedy replacedociatedEnreplacedy = a.getreplacedociatedEnreplacedy();
            Clreplaced<?> propertyTargetClreplaced = replacedociatedEnreplacedy.getJavaClreplaced();
            cacheCriteriaByMapping(propertyTargetClreplaced, subCriteria);
            // Recurse on nested sort
            addOrderPossiblyNested(subCriteria, replacedociatedEnreplacedy, sortTail, order, ignoreCase);
        }
    }
}

19 View Complete Implementation : GrailsHibernateQueryUtils.java
Copyright Apache License 2.0
Author : grails
/**
 * Add order to criteria, creating necessary subCriteria if nested sort property (ie. sort:'nested.property').
 */
private static void addOrderPossiblyNested(CriteriaQuery query, From queryRoot, CriteriaBuilder criteriaBuilder, PersistentEnreplacedy enreplacedy, String sort, String order, boolean ignoreCase) {
    if (ignoreCase && enreplacedy.getPropertyByName(sort).getType() != String.clreplaced) {
        ignoreCase = false;
    }
    int firstDotPos = sort.indexOf(".");
    if (firstDotPos == -1) {
        addOrder(enreplacedy, query, queryRoot, criteriaBuilder, sort, order, ignoreCase);
    } else {
        // nested property
        String sortHead = sort.substring(0, firstDotPos);
        String sortTail = sort.substring(firstDotPos + 1);
        PersistentProperty property = enreplacedy.getPropertyByName(sortHead);
        if (property instanceof Embedded) {
            // embedded objects cannot reference enreplacedies (at time of writing), so no more recursion needed
            addOrder(enreplacedy, query, queryRoot, criteriaBuilder, sort, order, ignoreCase);
        } else if (property instanceof replacedociation) {
            replacedociation a = (replacedociation) property;
            final Join join = queryRoot.join(sortHead);
            PersistentEnreplacedy replacedociatedEnreplacedy = a.getreplacedociatedEnreplacedy();
            Clreplaced<?> propertyTargetClreplaced = replacedociatedEnreplacedy.getJavaClreplaced();
            // Recurse on nested sort
            addOrderPossiblyNested(query, join, criteriaBuilder, replacedociatedEnreplacedy, sortTail, order, ignoreCase);
        }
    }
}

19 View Complete Implementation : ClosureEventListener.java
Copyright Apache License 2.0
Author : grails
private void synchronizePersisterState(AbstractPreDatabaseOperationEvent event, Object[] state, EnreplacedyPersister persister, String[] propertyNames) {
    Object enreplacedy = event.getEnreplacedy();
    EnreplacedyReflector reflector = persistentEnreplacedy.getReflector();
    HashMap<Integer, Object> changedState = new HashMap<>();
    EnreplacedyMetamodel enreplacedyMetamodel = persister.getEnreplacedyMetamodel();
    for (int i = 0; i < propertyNames.length; i++) {
        String p = propertyNames[i];
        Integer index = enreplacedyMetamodel.getPropertyIndexOrNull(p);
        if (index == null)
            continue;
        PersistentProperty property = persistentEnreplacedy.getPropertyByName(p);
        if (property == null) {
            continue;
        }
        String propertyName = property.getName();
        if (GormProperties.VERSION.equals(propertyName)) {
            continue;
        }
        Object value = reflector.getProperty(enreplacedy, propertyName);
        if (state[index] != value) {
            changedState.put(i, value);
        }
        state[index] = value;
    }
    synchronizeEnreplacedyUpdateActionState(event, enreplacedy, changedState);
}

18 View Complete Implementation : AbstractHibernateQuery.java
Copyright Apache License 2.0
Author : grails
@SuppressWarnings("unchecked")
static void doTypeConversionIfNeccessary(PersistentEnreplacedy enreplacedy, PropertyCriterion pc) {
    if (pc.getClreplaced().getSimpleName().startsWith(SIZE_CONSTRAINT_PREFIX)) {
        return;
    }
    String property = pc.getProperty();
    Object value = pc.getValue();
    PersistentProperty p = enreplacedy.getPropertyByName(property);
    if (p != null && !p.getType().isInstance(value)) {
        pc.setValue(conversionService.convert(value, p.getType()));
    }
}