private void initCommonLoadContextParameters(LoadContext<E> loadContext) { loadContext.setJoinTransaction(transactional); if (view != null) loadContext.setView(view); else if (!Strings.isNullOrEmpty(viewName)) loadContext.setView(viewName); loadContext.setSoftDeletion(softDeletion); loadContext.setLoadDynamicAttributes(dynamicAttributes); }
protected Entity findReferenceEntity(Entity entity, EntityImportViewProperty viewProperty, CommitContext commitContext, Set<Entity> loadedEntities) { Entity result = Stream.concat(loadedEntities.stream(), commitContext.getCommitInstances().stream()) .filter(item -> item.equals(entity)) .findFirst().orElse(null); if (result == null) { LoadContext<? extends Entity> ctx = LoadContext.create(entity.getClass()) .setSoftDeletion(false) .setView(View.MINIMAL) .setId(entity.getId()); result = dataManager.load(ctx); if (result == null) { if (viewProperty.getReferenceImportBehaviour() == ReferenceImportBehaviour.ERROR_ON_MISSING) { throw new EntityImportException(String.format("Referenced entity for property '%s' with id = %s is missing", viewProperty.getName(), entity.getId())); } } else { loadedEntities.add(result); } } return result; }
/** * Return number of rows for the current query set in the datasource. * * @return number of rows. In case of error returns 0 and sets {@link #dataLoadError} field to the exception object */ public int getCount() { LoadContext<Entity> context = new LoadContext<>(metaClass); LoadContext.Query q = (LoadContext.Query) createDataQuery(context, savedParameters == null ? Collections.<String, Object>emptyMap() : savedParameters); context.setSoftDeletion(isSoftDeletion()); if (q == null) return 0; prepareLoadContext(context); dataLoadError = null; try { long res = dataSupplier.getCount(context); if (res > Integer.MAX_VALUE) throw new RuntimeException("Number of records is too big: " + res); return (int) res; } catch (Throwable e) { dataLoadError = e; } return 0; }
@Override public LoadContext getCompiledLoadContext() { LoadContext context = new LoadContext(metaClass); Map<String, Object> params; if (savedParameters == null) { params = Collections.emptyMap(); } else params = savedParameters; LoadContext.Query q = (LoadContext.Query) createDataQuery(context, params); if (sortInfos != null && sortOnDb) { setSortDirection(q); } context.setView(view); context.setSoftDeletion(softDeletion); prepareLoadContext(context); return context; }
protected List<Entity> loadItemsWithDirectKey(LoadDescriptor ld) { LoadContext.Query query = new LoadContext.Query( String.format("select e from %s e where e.%s in :ids", ld.getMetaClass(), metadataTools.getPrimaryKeyName(ld.getMetaClass()))); List<Object> ids = ld.getSelectedItems().stream() .map(Entity::getId) .collect(Collectors.toList()); query.setParameter("ids", ids); LoadContext<Entity> lc = new LoadContext<>(ld.getMetaClass()); lc.setSoftDeletion(false); lc.setQuery(query); lc.setView(ld.getView()); lc.setLoadDynamicAttributes(ld.isLoadDynamicAttributes()); return dataManager.secure().loadList(lc); } }
/** * Loads single item by id. * * @param meta item's meta class * @param id item's id * @param view view * @return loaded item if found, null otherwise */ protected Entity loadSingleItem(MetaClass meta, Object id, View view) { String primaryKeyName = metadata.getTools().getPrimaryKeyName(meta); if (primaryKeyName == null) { throw new IllegalStateException(String.format("Entity %s has no primary key", meta.getName())); } LoadContext ctx = new LoadContext(meta); ctx.setLoadDynamicAttributes(true); ctx.setSoftDeletion(false); ctx.setView(view); String query = String.format("select e from %s e where e.%s = :id", meta.getName(), primaryKeyName); LoadContext.Query q = ctx.setQueryString(query); q.setParameter("id", id); return dataSupplier.load(ctx); }
protected Entity reloadInstance(Entity instance) { View reloadView = new View(instance.getMetaClass().getJavaClass(), true); LoadContext loadContext = new LoadContext(instance.getMetaClass()); loadContext.setSoftDeletion(false); loadContext.setId(instance.getId()); loadContext.setView(reloadView); DataSupplier supplier = getDataSupplier(); return supplier.load(loadContext); }
public LoadContext<E> createLoadContext() { LoadContext<E> loadContext = LoadContext.create(container.getEntityMetaClass().getJavaClass()); if (entityId != null) { loadContext.setId(entityId); } else { LoadContext.Query query = loadContext.setQueryString(this.query); query.setCondition(condition); query.setParameters(parameters); } loadContext.setView(resolveView()); loadContext.setSoftDeletion(softDeletion); loadContext.setLoadDynamicAttributes(loadDynamicAttributes); return loadContext; }
.setSoftDeletion(false) .setView(regularView) .setLoadDynamicAttributes(true)
@Override public LoadContext<E> createLoadContext() { LoadContext<E> loadContext = LoadContext.create(container.getEntityMetaClass().getJavaClass()); LoadContext.Query query = loadContext.setQueryString(this.query); query.setCondition(condition); query.setSort(sort); query.setParameters(parameters); query.setCacheable(cacheable); if (firstResult > 0) query.setFirstResult(firstResult); if (maxResults < Integer.MAX_VALUE) query.setMaxResults(maxResults); loadContext.setView(resolveView()); loadContext.setSoftDeletion(softDeletion); loadContext.setLoadDynamicAttributes(loadDynamicAttributes); return loadContext; }
/** * This method is invoked by {@link #loadData(Map)} method immediately before loading entities from {@code DataSupplier}. * <br>If you override this method, be sure to call {@code super()}. * * @param params datasource parameters, as described in {@link CollectionDatasource#refresh(java.util.Map)} * @return LoadContext which will be used to load data */ protected LoadContext beforeLoadData(Map<String, Object> params) { final LoadContext context = new LoadContext(metaClass); LoadContext.Query q = (LoadContext.Query) createDataQuery(context, params); if (q == null) { detachListener(data.values()); data.clear(); return null; } if (sortInfos != null && sortOnDb) { setSortDirection(q); } if (firstResult > 0) q.setFirstResult(firstResult); if (maxResults > 0) { q.setMaxResults(maxResults); } context.setView(view); context.setSoftDeletion(isSoftDeletion()); prepareLoadContext(context); dataLoadError = null; return context; }