protected boolean needToFilterByInMemoryReadConstraints(LoadContext context) { return userSessionSource.getUserSession().hasConstraints() && security.hasInMemoryConstraints(metadata.getClassNN(context.getMetaClass()), ConstraintOperationType.READ, ConstraintOperationType.ALL); }
protected boolean needToApplyByPredicate(LoadContext context, Predicate<MetaClass> hasConstraints) { if (context.getView() == null) { MetaClass metaClass = metadata.getSession().getClassNN(context.getMetaClass()); return hasConstraints.test(metaClass); } Session session = metadata.getSession(); for (Class aClass : collectEntityClasses(context.getView(), new HashSet<>())) { if (hasConstraints.test(session.getClassNN(aClass))) { return true; } } return false; }
@Nullable @Override public <E extends Entity> E load(LoadContext<E> context) { MetaClass metaClass = metadata.getClassNN(context.getMetaClass()); DataStore storage = storeFactory.get(getStoreName(metaClass)); E entity = storage.load(context); if (entity != null) readCrossDataStoreReferences(Collections.singletonList(entity), context.getView(), metaClass, context.isJoinTransaction()); return entity; }
@Override public long getCount(LoadContext<? extends Entity> context) { MetaClass metaClass = metadata.getClassNN(context.getMetaClass()); DataStore storage = storeFactory.get(getStoreName(metaClass)); return storage.getCount(context); }
@Override @SuppressWarnings("unchecked") public <E extends Entity> List<E> loadList(LoadContext<E> context) { MetaClass metaClass = metadata.getClassNN(context.getMetaClass()); DataStore storage = storeFactory.get(getStoreName(metaClass)); List<E> entities = storage.loadList(context); readCrossDataStoreReferences(entities, context.getView(), metaClass, context.isJoinTransaction()); return entities; }
protected View createRestrictedView(LoadContext context) { View view = context.getView() != null ? context.getView() : viewRepository.getView(metadata.getClassNN(context.getMetaClass()), View.LOCAL); View copy = View.copy(isAuthorizationRequired(context) ? attributeSecurity.createRestrictedView(view) : view); if (context.isLoadPartialEntities() && !needToApplyInMemoryReadConstraints(context) && !needToFilterByInMemoryReadConstraints(context) && !needToApplyAttributeAccess(context)) { copy.setLoadPartialEntities(true); } return copy; }
String entityName = loadContext.getMetaClass();
public <E extends Entity> E load(LoadContext<E> context) { if (log.isDebugEnabled()) { log.debug("load: metaClass={}, id={}, view={}", context.getMetaClass(), context.getId(), context.getView()); final MetaClass metaClass = metadata.getSession().getClassNN(context.getMetaClass());
protected Query createQuery(EntityManager em, LoadContext context, boolean singleResult) { LoadContext.Query contextQuery = context.getQuery(); RdbmsQueryBuilder queryBuilder = AppBeans.get(RdbmsQueryBuilder.NAME); queryBuilder.init( contextQuery == null ? null : contextQuery.getQueryString(), contextQuery == null ? null : contextQuery.getCondition(), contextQuery == null ? null : contextQuery.getSort(), contextQuery == null ? null : contextQuery.getParameters(), contextQuery == null ? null : contextQuery.getNoConversionParams(), context.getId(), context.getMetaClass() ); queryBuilder.setSingleResult(singleResult); if (!context.getPrevQueries().isEmpty()) { log.debug("Restrict query by previous results"); queryBuilder.restrictByPreviousResults(userSessionSource.getUserSession().getId(), context.getQueryKey()); } Query query = queryBuilder.getQuery(em); if (contextQuery != null) { if (contextQuery.getFirstResult() != 0) query.setFirstResult(contextQuery.getFirstResult()); if (contextQuery.getMaxResults() != 0) query.setMaxResults(contextQuery.getMaxResults()); if (contextQuery.isCacheable()) { query.setCacheable(contextQuery.isCacheable()); } } return query; }
public <E extends Entity> List<E> loadList(LoadContext<E> context) { if (log.isDebugEnabled()) log.debug("loadList: metaClass=" + context.getMetaClass() + ", view=" + context.getView() + (context.getPrevQueries().isEmpty() ? "" : ", from selected") + ", query=" + (context.getQuery() == null ? null : RdbmsQueryBuilder.printQuery(context.getQuery().getQueryString())) + (context.getQuery() == null || context.getQuery().getMaxResults() == 0 ? "" : ", max=" + context.getQuery().getMaxResults())); MetaClass metaClass = metadata.getClassNN(context.getMetaClass());
@Override public long getCount(LoadContext<? extends Entity> context) { if (log.isDebugEnabled()) log.debug("getCount: metaClass=" + context.getMetaClass() + (context.getPrevQueries().isEmpty() ? "" : ", from selected") + ", query=" + (context.getQuery() == null ? null : RdbmsQueryBuilder.printQuery(context.getQuery().getQueryString()))); MetaClass metaClass = metadata.getClassNN(context.getMetaClass());