Search in sources :

Example 11 with JpaQueryParameters

use of org.hisp.dhis.hibernate.JpaQueryParameters in project dhis2-core by dhis2.

the class HibernateIdentifiableObjectStore method getAllLikeNameAndEqualsAttribute.

public List<T> getAllLikeNameAndEqualsAttribute(Set<String> nameWords, String attribute, String attributeValue, int first, int max) {
    if (StringUtils.isEmpty(attribute) || StringUtils.isEmpty(attributeValue)) {
        return new ArrayList<>();
    }
    CriteriaBuilder builder = getCriteriaBuilder();
    JpaQueryParameters<T> param = new JpaQueryParameters<T>().addPredicates(getSharingPredicates(builder)).addOrder(root -> builder.asc(root.get("name"))).setFirstResult(first).setMaxResults(max);
    if (nameWords.isEmpty()) {
        return getList(builder, param);
    }
    List<Function<Root<T>, Predicate>> conjunction = new ArrayList<>();
    for (String word : nameWords) {
        conjunction.add(root -> builder.like(builder.lower(root.get("name")), "%" + word.toLowerCase() + "%"));
    }
    conjunction.add(root -> builder.equal(builder.lower(root.get(attribute)), attributeValue));
    param.addPredicate(root -> builder.and(conjunction.stream().map(p -> p.apply(root)).collect(Collectors.toList()).toArray(new Predicate[0])));
    return getList(builder, param);
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) Function(java.util.function.Function) ArrayList(java.util.ArrayList) JpaQueryParameters(org.hisp.dhis.hibernate.JpaQueryParameters)

Example 12 with JpaQueryParameters

use of org.hisp.dhis.hibernate.JpaQueryParameters in project dhis2-core by dhis2.

the class HibernateIdentifiableObjectStore method getByUniqueAttributeValue.

@Override
public T getByUniqueAttributeValue(Attribute attribute, String value) {
    if (attribute == null || StringUtils.isEmpty(value) || !attribute.isUnique()) {
        return null;
    }
    CriteriaBuilder builder = getCriteriaBuilder();
    JpaQueryParameters<T> param = new JpaQueryParameters<T>().addPredicates(getSharingPredicates(builder)).addPredicate(root -> builder.equal(builder.function(FUNCTION_JSONB_EXTRACT_PATH_TEXT, String.class, root.get("attributeValues"), builder.literal(attribute.getUid()), builder.literal("value")), value));
    return getSingleResult(builder, param);
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) JpaQueryParameters(org.hisp.dhis.hibernate.JpaQueryParameters)

Example 13 with JpaQueryParameters

use of org.hisp.dhis.hibernate.JpaQueryParameters in project dhis2-core by dhis2.

the class HibernateIdentifiableObjectStore method getByUid.

@Override
public List<T> getByUid(Collection<String> uids, User user) {
    if (uids == null || uids.isEmpty()) {
        return new ArrayList<>();
    }
    CriteriaBuilder builder = getCriteriaBuilder();
    JpaQueryParameters<T> jpaQueryParameters = new JpaQueryParameters<T>().addPredicates(getSharingPredicates(builder, user)).addPredicate(root -> root.get("uid").in(uids));
    return getList(builder, jpaQueryParameters);
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) ArrayList(java.util.ArrayList) JpaQueryParameters(org.hisp.dhis.hibernate.JpaQueryParameters)

Example 14 with JpaQueryParameters

use of org.hisp.dhis.hibernate.JpaQueryParameters in project dhis2-core by dhis2.

the class HibernateIdentifiableObjectStore method getByUid.

@Override
public final T getByUid(String uid) {
    if (isTransientIdentifiableProperties()) {
        return null;
    }
    CriteriaBuilder builder = getCriteriaBuilder();
    JpaQueryParameters<T> param = new JpaQueryParameters<T>().addPredicates(getSharingPredicates(builder)).addPredicate(root -> builder.equal(root.get("uid"), uid));
    return getSingleResult(builder, param);
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) JpaQueryParameters(org.hisp.dhis.hibernate.JpaQueryParameters)

Example 15 with JpaQueryParameters

use of org.hisp.dhis.hibernate.JpaQueryParameters in project dhis2-core by dhis2.

the class HibernateIdentifiableObjectStore method getAllGeLastUpdated.

@Override
public List<T> getAllGeLastUpdated(Date lastUpdated) {
    CriteriaBuilder builder = getCriteriaBuilder();
    JpaQueryParameters<T> param = new JpaQueryParameters<T>().addPredicates(getSharingPredicates(builder)).addPredicate(root -> builder.greaterThanOrEqualTo(root.get("lastUpdated"), lastUpdated)).addOrder(root -> builder.desc(root.get("lastUpdated")));
    return getList(builder, param);
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) HibernateGenericStore(org.hisp.dhis.hibernate.HibernateGenericStore) CurrentUserGroupInfo(org.hisp.dhis.user.CurrentUserGroupInfo) Date(java.util.Date) CreateAccessDeniedException(org.hisp.dhis.hibernate.exception.CreateAccessDeniedException) JsonbFunctions(org.hisp.dhis.hibernate.jsonb.type.JsonbFunctions) Function(java.util.function.Function) TypedQuery(javax.persistence.TypedQuery) StringUtils(org.apache.commons.lang3.StringUtils) Attribute(org.hisp.dhis.attribute.Attribute) ArrayList(java.util.ArrayList) JdbcTemplate(org.springframework.jdbc.core.JdbcTemplate) Lists(com.google.common.collect.Lists) Predicate(javax.persistence.criteria.Predicate) UpdateAccessDeniedException(org.hisp.dhis.hibernate.exception.UpdateAccessDeniedException) CurrentUserServiceTarget(org.hisp.dhis.user.CurrentUserServiceTarget) ObjectUtils(org.apache.commons.lang3.ObjectUtils) CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) ApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher) User(org.hisp.dhis.user.User) InternalHibernateGenericStore(org.hisp.dhis.hibernate.InternalHibernateGenericStore) Root(javax.persistence.criteria.Root) AuditLogUtil(org.hisp.dhis.common.AuditLogUtil) ReadAccessDeniedException(org.hisp.dhis.hibernate.exception.ReadAccessDeniedException) IdentifiableObject(org.hisp.dhis.common.IdentifiableObject) CriteriaQuery(javax.persistence.criteria.CriteriaQuery) HibernateProxyUtils(org.hisp.dhis.hibernate.HibernateProxyUtils) AccessStringHelper(org.hisp.dhis.security.acl.AccessStringHelper) BaseIdentifiableObject(org.hisp.dhis.common.BaseIdentifiableObject) DeleteAccessDeniedException(org.hisp.dhis.hibernate.exception.DeleteAccessDeniedException) Collection(java.util.Collection) JpaQueryUtils(org.hisp.dhis.query.JpaQueryUtils) Preconditions.checkNotNull(com.google.common.base.Preconditions.checkNotNull) SessionFactory(org.hibernate.SessionFactory) Set(java.util.Set) JpaQueryParameters(org.hisp.dhis.hibernate.JpaQueryParameters) Collectors(java.util.stream.Collectors) Dashboard(org.hisp.dhis.dashboard.Dashboard) List(java.util.List) Slf4j(lombok.extern.slf4j.Slf4j) CurrentUserService(org.hisp.dhis.user.CurrentUserService) AclService(org.hisp.dhis.security.acl.AclService) GenericDimensionalObjectStore(org.hisp.dhis.common.GenericDimensionalObjectStore) SharingUtils(org.hisp.dhis.util.SharingUtils)

Aggregations

CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)30 JpaQueryParameters (org.hisp.dhis.hibernate.JpaQueryParameters)30 ArrayList (java.util.ArrayList)18 Function (java.util.function.Function)13 List (java.util.List)10 Date (java.util.Date)9 Set (java.util.Set)9 Collectors (java.util.stream.Collectors)9 Predicate (javax.persistence.criteria.Predicate)9 Root (javax.persistence.criteria.Root)9 SessionFactory (org.hibernate.SessionFactory)9 ReadAccessDeniedException (org.hisp.dhis.hibernate.exception.ReadAccessDeniedException)9 AclService (org.hisp.dhis.security.acl.AclService)9 CurrentUserService (org.hisp.dhis.user.CurrentUserService)9 Preconditions.checkNotNull (com.google.common.base.Preconditions.checkNotNull)8 Lists (com.google.common.collect.Lists)8 Collection (java.util.Collection)8 TypedQuery (javax.persistence.TypedQuery)8 CriteriaQuery (javax.persistence.criteria.CriteriaQuery)8 Slf4j (lombok.extern.slf4j.Slf4j)8