@Override public Long countTranslationEntries(TranslatedEntity entityType, ResultType stage) { CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery<Long> criteria = builder.createQuery(Long.class); Root<TranslationImpl> root = criteria.from(TranslationImpl.class); criteria.select(builder.count(root)); List<Predicate> restrictions = new ArrayList<Predicate>(); restrictions.add(builder.equal(root.get("entityType"), entityType.getFriendlyType())); try { if (extensionManager != null) { extensionManager.getProxy().setup(TranslationImpl.class, stage); extensionManager.getProxy().refineParameterRetrieve(TranslationImpl.class, stage, builder, criteria, root, restrictions); } criteria.where(restrictions.toArray(new Predicate[restrictions.size()])); TypedQuery<Long> query = em.createQuery(criteria); if (extensionManager != null) { extensionManager.getProxy().refineQuery(TranslationImpl.class, stage, query); } query.setHint(QueryHints.HINT_CACHEABLE, true); return query.getSingleResult(); } finally { if (extensionManager != null) { extensionManager.getProxy().breakdown(TranslationImpl.class, stage); } } }
public List<Translation> readAllTranslationEntries(TranslatedEntity entityType, ResultType stage, List<String> entityIds) { CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery<Translation> criteria = builder.createQuery(Translation.class); Root<TranslationImpl> root = criteria.from(TranslationImpl.class); criteria.select(root); List<Predicate> restrictions = new ArrayList<Predicate>(); restrictions.add(builder.equal(root.get("entityType"), entityType.getFriendlyType())); if (CollectionUtils.isNotEmpty(entityIds)) { restrictions.add(root.get("entityId").in(entityIds)); } try { if (extensionManager != null) { extensionManager.getProxy().setup(TranslationImpl.class, stage); extensionManager.getProxy().refineParameterRetrieve(TranslationImpl.class, stage, builder, criteria, root, restrictions); } criteria.where(restrictions.toArray(new Predicate[restrictions.size()])); TypedQuery<Translation> query = em.createQuery(criteria); if (extensionManager != null) { extensionManager.getProxy().refineQuery(TranslationImpl.class, stage, query); } query.setHint(QueryHints.HINT_CACHEABLE, true); return query.getResultList(); } finally { if (extensionManager != null) { extensionManager.getProxy().breakdown(TranslationImpl.class, stage); } } }
try { if (extensionManager != null) { extensionManager.getProxy().setup(TranslationImpl.class, stage); extensionManager.getProxy().refineParameterRetrieve(TranslationImpl.class, stage, builder, criteria, root, restrictions); extensionManager.getProxy().refineQuery(TranslationImpl.class, stage, query); extensionManager.getProxy().breakdown(TranslationImpl.class, stage);
@Override public List<String> getCacheKeyListForTemplateSite(String propertyName) { List<String> cacheKeyList = new ArrayList<>(); String cacheKey = StringUtils.join(new String[] {propertyName}, "|"); if (extensionManager != null) { ExtensionResultHolder<List<String>> result = new ExtensionResultHolder<List<String>>(); extensionManager.getProxy().getCacheKeyListForTemplateSite(cacheKey, result); if (result.getResult() != null) { cacheKeyList = result.getResult(); } } return cacheKeyList; }
@Override public List<StandardCacheItem> readConvertedTranslationEntries(TranslatedEntity entityType, ResultType stage) { List<Translation> results = readAllTranslationEntries(entityType, stage); if (extensionManager == null) { throw new IllegalStateException("extensionManager cannot be null"); } ExtensionResultHolder<List<StandardCacheItem>> response = new ExtensionResultHolder<List<StandardCacheItem>>(); extensionManager.getProxy().buildStatus(TranslationImpl.class, results, response); return response.getResult(); }
@Override public String getCacheKey(ResultType resultType, TranslatedEntity entityType) { String cacheKey = StringUtils.join(new String[] { entityType.getFriendlyType()}, "|"); if (extensionManager != null) { ExtensionResultHolder<String> result = new ExtensionResultHolder<String>(); extensionManager.getProxy().getCacheKey(cacheKey, resultType, result); if (result.getResult() != null) { cacheKey = result.getResult(); } } return cacheKey; }
ExtensionResultHolder<Boolean> response = new ExtensionResultHolder<Boolean>(); response.setResult(false); extensionManager.getProxy().isValidState(response); isValidForCache = response.getResult();
@Override public void removeTranslationFromCache(Translation translation) { if (BroadleafRequestContext.getBroadleafRequestContext().isProductionSandBox()) { ResultType resultType = ResultType.STANDARD; if (extensionManager != null) { ExtensionResultHolder<ResultType> response = new ExtensionResultHolder<ResultType>(); extensionManager.getProxy().getResultType(translation, response); resultType = response.getResult(); if (ResultType.STANDARD == resultType) { String key = getCacheKey(resultType, translation.getEntityType()); LOG.debug("Removing key [" + key + "] for STANDARD site"); getCache().remove(key); } else { List<String> cacheKeysList = getCacheKeyListForTemplateSite(translation.getEntityType().getFriendlyType()); for (String key: cacheKeysList) { LOG.debug("Removing key [" + key + "] for TEMPLATE site"); getCache().remove(key); } } } } }