public Folder saveFolder(Folder folder) { CommitContext commitContext = new CommitContext(Collections.singleton(folder)); Set<Entity> res = dataService.commit(commitContext); for (Entity entity : res) { if (entity.equals(folder)) return (Folder) entity; } return null; }
protected CommitContext createCommitContext(DataSupplier dataservice, Map<DataSupplier, Collection<Datasource<Entity>>> commitData) { CommitContext context = new CommitContext(); context.setDiscardCommitted(discardCommitted); for (Datasource<Entity> datasource : commitData.get(dataservice)) { if (datasource instanceof DatasourceImplementation) { DatasourceImplementation<Entity> implementation = (DatasourceImplementation) datasource; boolean listenersEnabled = implementation.enableListeners(false); try { for (Entity entity : implementation.getItemsToCreate()) { addToContext(entity, datasource, context.getCommitInstances(), context.getViews()); } for (Entity entity : implementation.getItemsToUpdate()) { addToContext(entity, datasource, context.getCommitInstances(), context.getViews()); } for (Entity entity : implementation.getItemsToDelete()) { addToContext(entity, datasource, context.getRemoveInstances(), context.getViews()); } } finally { implementation.enableListeners(listenersEnabled); } } } repairReferences(context); return context; }
@Override public <E extends Entity> E commit(E entity, @Nullable View view) { Set<Entity> res = commit(new CommitContext().addInstanceToCommit(entity, view)); for (Entity e : res) { if (e.equals(entity)) { //noinspection unchecked return (E) e; } } return null; }
protected CommitContext createCommitContext(CommitContext context) { CommitContext newCtx = new CommitContext(); newCtx.setSoftDeletion(context.isSoftDeletion()); newCtx.setDiscardCommitted(context.isDiscardCommitted()); newCtx.setAuthorizationRequired(context.isAuthorizationRequired()); newCtx.setJoinTransaction(context.isJoinTransaction()); return newCtx; }
@Override public void remove(Entity entity) { CommitContext cc = new CommitContext(); cc.addInstanceToRemove(entity); cc.setJoinTransaction(true); dataManager.commit(cc); }
@Override public Set<Entity> commit(CommitContext context) { Set<Entity> set = new HashSet<>(); set.addAll(context.getCommitInstances()); set.addAll(context.getRemoveInstances()); return set; }
Map<String, CommitContext> storeToContextMap = new TreeMap<>(); Set<Entity> toRepeat = new HashSet<>(); for (Entity entity : context.getCommitInstances()) { MetaClass metaClass = metadata.getClassNN(entity.getClass()); String storeName = getStoreName(metaClass); boolean repeatRequired = writeCrossDataStoreReferences(entity, context.getCommitInstances()); if (repeatRequired) { toRepeat.add(entity); cc.getCommitInstances().add(entity); View view = context.getViews().get(entity); if (view != null) cc.getViews().put(entity, view); for (Entity entity : context.getRemoveInstances()) { MetaClass metaClass = metadata.getClassNN(entity.getClass()); String storeName = getStoreName(metaClass); cc.getRemoveInstances().add(entity); View view = context.getViews().get(entity); if (view != null) cc.getViews().put(entity, view); entityLog.processLoggingForCurrentThread(false); try { CommitContext cc = new CommitContext(); cc.setJoinTransaction(context.isJoinTransaction()); for (Entity entity : result) {
@Override public Collection<Entity> importEntities(Collection<? extends Entity> entities, EntityImportView importView, boolean validate, boolean optimisticLocking) { List<ReferenceInfo> referenceInfoList = new ArrayList<>(); CommitContext commitContext = new CommitContext(); commitContext.setSoftDeletion(false); for (Entity commitInstance : commitContext.getCommitInstances()) { if (!PersistenceHelper.isNew(commitInstance)) { if (commitInstance instanceof SoftDelete && ((SoftDelete) commitInstance).isDeleted()) { for (Entity entity : commitContext.getCommitInstances()) { Set<ConstraintViolation<Entity>> violations = validator.validate(entity, Default.class, RestApiChecks.class); if (!violations.isEmpty()) { if (!commitContext.getRemoveInstances().isEmpty()) { commitContext.setSoftDeletion(true); commitContext.setAuthorizationRequired(true);
CommitContext commitContext = new CommitContext(); commitContext.setCommitInstances(commitInstances); commitContext.setRemoveInstances(removeInstances); commitContext.setSoftDeletion(commitRequest.isSoftDeletion()); for (Entity entity : commitContext.getCommitInstances()) { MetaClass metaClass = metadata.getSession().getClassNN(entity.getClass()); for (MetaProperty property : metaClass.getProperties()) { Entity e = getEntityById(commitContext.getCommitInstances(), refEntity.getId()); ((AbstractInstance) entity).setValue(property.getName(), e, false); } else if (BaseGenericIdEntity.class.isAssignableFrom(refEntity.getMetaClass().getJavaClass())) {
@Override public <E extends Entity> E save(E entity, @Nullable View view) { CommitContext cc = new CommitContext(); cc.addInstanceToCommit(entity, view); cc.setJoinTransaction(true); return dataManager.commit(cc).get(entity); }
public Set<Entity> commit(CommitContext context) { if (log.isDebugEnabled()) log.debug("commit: commitInstances=" + context.getCommitInstances() + ", removeInstances=" + context.getRemoveInstances()); try (Transaction tx = getSaveTransaction(storeName, context.isJoinTransaction())) { EntityManager em = persistence.getEntityManager(storeName); checkPermissions(context); if (!context.isSoftDeletion()) em.setSoftDeletion(false); persistence.getEntityManagerContext(storeName).setDbHints(context.getDbHints()); for (Entity entity : context.getCommitInstances()) { if (entityStates.isNew(entity)) { if (isAuthorizationRequired(context)) { if (!context.isDiscardCommitted()) { View view = getViewFromContextOrNull(context, entity); entityFetcher.fetch(entity, view, true); for (Entity entity : context.getCommitInstances()) { if (!entityStates.isNew(entity)) { if (isAuthorizationRequired(context)) { for (Entity entity : context.getRemoveInstances()) { if (isAuthorizationRequired(context)) { security.assertToken(entity);
@Override public void commit() { backgroundWorker.checkUIAccess(); if (!allowCommit) { return; } if (getCommitMode() == CommitMode.DATASTORE) { DataSupplier supplier = getDataSupplier(); CommitContext context = new CommitContext(); for (Entity entity : itemsToCreate) { context.addInstanceToCommit(entity, view); } for (Entity entity : itemsToUpdate) { context.addInstanceToCommit(entity, view); } for (Entity entity : itemsToDelete) { context.addInstanceToRemove(entity); } Set<Entity> committed = supplier.commit(context); committed(committed); } else { throw new UnsupportedOperationException(); } }
protected void repairReferences(CommitContext context) { for (Entity entity : context.getCommitInstances()) { for (Entity otherEntity : context.getCommitInstances()) { if (!entity.equals(otherEntity)) { repairReferences(otherEntity, entity); } } } }
@Override public EntitySet save(Entity... entities) { CommitContext cc = new CommitContext(entities); cc.setJoinTransaction(true); return dataManager.commit(cc); }
protected void initParentDsContextCommitListener() { getDsContext().addBeforeCommitListener(context -> { List<FileDescriptor> fileDescriptorsToCommit = new ArrayList<>(); Collection<Entity> commitInstances = context.getCommitInstances(); for (Entity commitInstance : commitInstances) { if (commitInstance instanceof ProcAttachment && PersistenceHelper.isNew(commitInstance)) { ProcAttachment procAttachment = (ProcAttachment) commitInstance; fileDescriptorsToCommit.add(procAttachment.getFile()); } } if (!fileDescriptorsToCommit.isEmpty()) { commitInstances.addAll(fileDescriptorsToCommit); context.setCommitInstances(commitInstances); } }); }
protected void commitIfNeeded(Collection<? extends Entity> entitiesToRemove, CollectionContainer container, ScreenData screenData) { boolean needCommit = true; if (container instanceof Nested) { InstanceContainer masterContainer = ((Nested) container).getMaster(); String property = ((Nested) container).getProperty(); MetaClass masterMetaClass = masterContainer.getEntityMetaClass(); MetaProperty metaProperty = masterMetaClass.getPropertyNN(property); needCommit = metaProperty.getType() != MetaProperty.Type.COMPOSITION; } if (needCommit) { CommitContext commitContext = new CommitContext(); for (Entity entity : entitiesToRemove) { commitContext.addInstanceToRemove(entity); } dataManager.commit(commitContext); for (Entity entity : entitiesToRemove) { screenData.getDataContext().evict(entity); } } else { for (Entity entity : entitiesToRemove) { screenData.getDataContext().remove(entity); } } }
commitContext.addInstanceToCommit(dstEntity, regularView);
@Nullable protected View getViewFromContextOrNull(CommitContext context, Entity entity) { View view = context.getViews().get(entity); if (view == null) { return null; } return isAuthorizationRequired(context) ? attributeSecurity.createRestrictedView(view) : view; }
if (viewProperty.getCollectionImportPolicy() == CollectionImportPolicy.REMOVE_ABSENT_ITEMS) { if (!dstFilteredIds.contains(refId) && !srcFilteredIds.contains(refId)) { commitContext.addInstanceToRemove(e);
@Override public <E extends Entity> E save(E entity, @Nullable String viewName) { CommitContext cc = new CommitContext(); cc.addInstanceToCommit(entity, viewName); cc.setJoinTransaction(true); return dataManager.commit(cc).get(entity); }