private Map<String, List<String>> delete(String bucketId, List<String> bucketObjectNames) { if (bucketObjectNames == null || bucketObjectNames.isEmpty()) { return Collections.emptyMap(); } Bucket bucket = em.find(Bucket.class, bucketId, LockModeType.PESSIMISTIC_WRITE); // TODO: check access rights? if (bucket == null) { throw new BucketNotFoundException("Bucket '" + bucketId + "' does not exist!"); } List<BucketObjectVersion> bucketObjectVersions = cbf.create(em, BucketObjectVersion.class) .fetch("storage") .fetch("bucketObject") .where("id.bucketId").eq(bucketId) .where("state").eq(BucketObjectState.CREATED) .where("id.bucketObjectName").in(bucketObjectNames) .getQuery() .setLockMode(LockModeType.PESSIMISTIC_WRITE) .getResultList(); if (bucketObjectVersions.size() == 0) { return Collections.emptyMap(); } return deleteBucketObjectVersions(bucket, bucketObjectVersions, true); }
@Override public StorageQuotaModel findById(String id) { if (id == null) { return null; } try { return cbf.create(em, StorageQuotaModel.class) .fetch("plans") .where("id").eq(id) .getSingleResult(); } catch (NoResultException ex) { return null; } }
private void createObject(BucketObject bucketObject) { List<Bucket> results = cbf.create(em, Bucket.class) .fetch("storage") .where("id").eq(bucketObject.getId().getBucketId()) .getQuery() .setLockMode(LockModeType.PESSIMISTIC_WRITE) .getResultList(); if (results.isEmpty()) { throw new BucketNotFoundException("Bucket not found!"); } Bucket bucket = results.get(0); // 1. Persist empty bucket object bucketObject.setBucket(bucket); bucketObject.setState(BucketObjectState.CREATING); bucketObject.setContentVersion(null); bucketObject.setContentVersionUuid(null); em.persist(bucketObject); em.flush(); }
private String createQueryString(EntityViewManagerImpl evm, ManagedViewType<?> subviewType) { EntityMetamodel entityMetamodel = evm.getMetamodel().getEntityMetamodel(); EntityType<?> entityType = entityMetamodel.getEntity(entityClass); // We can't query embeddables if (entityType == null) { return null; } Set<String> fetchJoinableRelations = new HashSet<>(subviewType.getAttributes().size()); addFetchJoinableRelations(fetchJoinableRelations, "", subviewType); CriteriaBuilderFactory cbf = evm.getCriteriaBuilderFactory(); EntityManagerFactory emf = cbf.getService(EntityManagerFactory.class); EntityManager em = emf.createEntityManager(); try { if (fetchJoinableRelations.isEmpty()) { return null; } else { return cbf.create(em, entityClass) .fetch(fetchJoinableRelations.toArray(new String[fetchJoinableRelations.size()])) .where(JpaMetamodelUtils.getSingleIdAttribute(entityType).getName()).eqExpression(":id") .getQueryString(); } } finally { em.close(); } }
@Override public void put(BucketObject bucketObject) { List<BucketObject> results = cbf.create(em, BucketObject.class) .fetch("contentVersion.storage") .fetch("bucket.storage") .where("id.bucketId").eq(bucketObject.getId().getBucketId()) .where("id.name").eq(bucketObject.getId().getName()) .getQuery() .setLockMode(LockModeType.PESSIMISTIC_WRITE) .getResultList(); // Need to retrieve the version here because create might make the reference null BucketObjectVersion version = bucketObject.getContentVersion(); BucketObject currentObject; // Fallback to create if (results.isEmpty()) { createObject(bucketObject); currentObject = bucketObject; } else { currentObject = results.get(0); } persistContentVersion(currentObject, version); }
@Override public V findBy(PK pk) { CriteriaBuilder<E> cb = createCriteriaBuilder().where(idAttribute()).eq(pk); String[] fetches = getFetches(); if (fetches.length != 0) { cb.fetch(fetches); } TypedQuery<V> query; if (viewClass() == null) { query = (TypedQuery<V>) cb.getQuery(); } else { query = applySetting( createSetting(), cb ).getQuery(); } applyQueryHints(query, fetches.length == 0); List<V> result = query.getResultList(); return result.isEmpty() ? null : result.get(0); }
private String createQueryString(EntityViewManagerImpl evm, EntityType<?> entityType, Map<String, Map<?, ?>> fetchGraph) { CriteriaBuilderFactory cbf = evm.getCriteriaBuilderFactory(); EntityManagerFactory emf = cbf.getService(EntityManagerFactory.class); EntityManager em = emf.createEntityManager(); try { String[] paths = flatten(fetchGraph); if (paths.length == 0) { return null; } else { return cbf.create(em, entityClass) .fetch(paths) .where(JpaMetamodelUtils.getSingleIdAttribute(entityType).getName()).eqExpression(":id") .getQueryString(); } } finally { em.close(); } }
public List<V> findAll(Iterable<ID> idIterable) { Assert.notNull(idIterable, ID_MUST_NOT_BE_NULL); List<ID> idList = new ArrayList<>(); for (ID id : idIterable) { idList.add(id); } CriteriaBuilder<?> cb = cbf.create(entityManager, getDomainClass()) .where(idAttributeName).in(idList); String[] fetches = EMPTY; if (metadata != null && metadata.getEntityGraph() != null && (fetches = metadata.getEntityGraph().attributePaths()).length != 0) { cb.fetch(fetches); } TypedQuery<V> findAllByIdsQuery; Class<V> entityViewClass = metadata == null || metadata.getEntityViewClass() == null ? this.entityViewClass : (Class<V>) metadata.getEntityViewClass(); if (entityViewClass == null) { findAllByIdsQuery = (TypedQuery<V>) cb.getQuery(); } else { findAllByIdsQuery = evm.applySetting(EntityViewSetting.create(entityViewClass), cb).getQuery(); } applyRepositoryMethodMetadata(findAllByIdsQuery, fetches.length == 0); return findAllByIdsQuery.getResultList(); }
@Override public List<V> findAll() { CriteriaBuilder<E> cb = createCriteriaBuilder(); String[] fetches = getFetches(); if (fetches.length != 0) { cb.fetch(fetches); } TypedQuery<V> query; if (viewClass() == null) { query = (TypedQuery<V>) cb.getQuery(); } else { query = applySetting( createSetting(), cb ).getQuery(); } applyQueryHints(query, fetches.length == 0); return query.getResultList(); }
public List<V> findAll(Iterable<ID> idIterable) { Assert.notNull(idIterable, ID_MUST_NOT_BE_NULL); List<ID> idList = new ArrayList<>(); for (ID id : idIterable) { idList.add(id); } CriteriaBuilder<?> cb = cbf.create(entityManager, getDomainClass()) .where(idAttributeName).in(idList); String[] fetches = EMPTY; if (metadata != null && metadata.getEntityGraph() != null && (fetches = metadata.getEntityGraph().attributePaths()).length != 0) { cb.fetch(fetches); } TypedQuery<V> findAllByIdsQuery; Class<V> entityViewClass = metadata == null || metadata.getEntityViewClass() == null ? this.entityViewClass : (Class<V>) metadata.getEntityViewClass(); if (entityViewClass == null) { findAllByIdsQuery = (TypedQuery<V>) cb.getQuery(); } else { findAllByIdsQuery = evm.applySetting(EntityViewSetting.create(entityViewClass), cb).getQuery(); } applyRepositoryMethodMetadata(findAllByIdsQuery, fetches.length == 0); return findAllByIdsQuery.getResultList(); }
@Override public List<V> findAll(int start, int max) { CriteriaBuilder<E> cb = createCriteriaBuilder().orderByAsc(idAttribute()); String[] fetches = getFetches(); if (fetches.length != 0) { cb.fetch(fetches); } TypedQuery<V> query; if (viewClass() == null) { query = (TypedQuery<V>) cb.getQuery(); } else { EntityViewSetting<V, PaginatedCriteriaBuilder<V>> setting = EntityViewSetting.create(viewClass(), start, max); query = applySetting(setting, cb) .getQuery(); } applyQueryHints(query, fetches.length == 0); return query.getResultList(); }
public V findOne(ID id) { Assert.notNull(id, ID_MUST_NOT_BE_NULL); CriteriaBuilder<?> cb = cbf.create(entityManager, getDomainClass()) .where(idAttributeName).eq(id); String[] fetches = EMPTY; if (metadata != null && metadata.getEntityGraph() != null && (fetches = metadata.getEntityGraph().attributePaths()).length != 0) { cb.fetch(fetches); } TypedQuery<V> findOneQuery; Class<V> entityViewClass = metadata == null || metadata.getEntityViewClass() == null ? this.entityViewClass : (Class<V>) metadata.getEntityViewClass(); if (entityViewClass == null) { findOneQuery = (TypedQuery<V>) cb.getQuery(); } else { findOneQuery = evm.applySetting(EntityViewSetting.create(entityViewClass), cb).getQuery(); } applyQueryHints(findOneQuery, fetches.length == 0); try { return findOneQuery.getSingleResult(); } catch (NoResultException e) { return null; } }
@Override public Iterable<V> findAll(Sort sort) { CriteriaBuilder<E> cb = createCriteriaBuilder(); String[] fetches = getFetches(); if (fetches.length != 0) { cb.fetch(fetches); } TypedQuery<V> query; if (viewClass() == null) { QueryBuilderUtils.applySort(sort, cb); query = (TypedQuery<V>) cb.getQuery(); } else { EntityViewSetting<V, CriteriaBuilder<V>> setting = EntityViewSetting.create(viewClass()); QueryBuilderUtils.applySort(sort, setting); query = applySetting(setting, cb) .getQuery(); } applyQueryHints(query, fetches.length == 0); return query.getResultList(); }
public V findOne(ID id) { Assert.notNull(id, ID_MUST_NOT_BE_NULL); CriteriaBuilder<?> cb = cbf.create(entityManager, getDomainClass()) .where(idAttributeName).eq(id); String[] fetches = EMPTY; if (metadata != null && metadata.getEntityGraph() != null && (fetches = metadata.getEntityGraph().attributePaths()).length != 0) { cb.fetch(fetches); } TypedQuery<V> findOneQuery; Class<V> entityViewClass = metadata == null || metadata.getEntityViewClass() == null ? this.entityViewClass : (Class<V>) metadata.getEntityViewClass(); if (entityViewClass == null) { findOneQuery = (TypedQuery<V>) cb.getQuery(); } else { findOneQuery = evm.applySetting(EntityViewSetting.create(entityViewClass), cb).getQuery(); } applyQueryHints(findOneQuery, fetches.length == 0); try { return findOneQuery.getSingleResult(); } catch (NoResultException e) { return null; } }
.fetch("weblinkGroup") .where("id.weblinkGroupId").eq(weblink.getId().getWeblinkGroupId()) .where("id.name").eq(weblink.getId().getName())
cb.fetch(fetches);
cb.fetch(fetches);
cb.fetch(fetches);