@Override public void addListener(CommitListener listener) { DsContextCommitListenerWrapper wrapper = new DsContextCommitListenerWrapper(listener); addBeforeCommitListener(wrapper); addAfterCommitListener(wrapper); }
protected void addDsContextToResume(DsContext dsContext, List<CollectionDatasource.Suspendable> list) { for (Datasource datasource : dsContext.getAll()) { if (datasource instanceof CollectionDatasource.Suspendable) { addDatasourceToResume(list, datasource); } } for (DsContext childContext : dsContext.getChildren()) { addDsContextToResume(childContext, list); } }
@Override public boolean commit() { Map<DataSupplier, Collection<Datasource<Entity>>> commitData = collectCommitData(); boolean committed = false; if (!commitData.isEmpty()) { DataSupplier dataservice = getDataSupplier(); Set<DataSupplier> suppliers = commitData.keySet(); if (suppliers.size() == 1 && Objects.equals(suppliers.iterator().next(), dataservice)) { CommitContext context = createCommitContext(dataservice, commitData); fireBeforeCommit(context); Set<Entity> committedEntities = dataservice.commit(context); fireAfterCommit(context, committedEntities); notifyAllDsCommited(dataservice, committedEntities); committed = true; } else { throw new UnsupportedOperationException(); } } for (DsContext childDsContext : children) { boolean c = commitToParent(childDsContext.getAll()); committed = committed || c; } boolean c = commitToParent(datasourceMap.values()); committed = committed || c; return committed; }
dsContext = new DsContextImpl(dataSupplier); dsContext.setFrameContext(getDsContext().getFrameContext()); setDsContext(dsContext); ((DatasourceImpl) datasource).valid(); dsContext.register(datasource); createNestedEmbeddedDatasources(datasource, metaClass, "");
protected void initRuntimePropertiesDatasources(View view) { rDS = new RuntimePropsDatasourceImpl(dsContext, dataSupplier, "rDS", datasource.getId(), null); MetaClass categoriesMeta = metadata.getSession().getClass(Category.class); categoriesDs = new CollectionDatasourceImpl(); ViewProperty categoryProperty = view.getProperty("category"); if (categoryProperty == null) { throw new IllegalArgumentException("Category property not found. Not a categorized entity?"); } categoriesDs.setup(dsContext, dataSupplier, "categoriesDs", categoriesMeta, categoryProperty.getView()); categoriesDs.setQuery(String.format("select c from sys$Category c where c.entityType='%s'", meta.getName())); categoriesDs.refresh(); dsContext.register(rDS); dsContext.register(categoriesDs); }
public Filter createFakeFilter() { if (filter != null) { return filter; } Filter fakeFilter = AppBeans.get(ComponentsFactory.NAME, ComponentsFactory.class).createComponent(Filter.class); ((HasXmlDescriptor) fakeFilter).setXmlDescriptor(Dom4j.readDocument("<filter/>").getRootElement()); CollectionDatasourceImpl fakeDatasource = new CollectionDatasourceImpl(); LegacyFrame legacyFrame = (LegacyFrame) this.frameOwner; DsContextImpl fakeDsContext = new DsContextImpl(legacyFrame.getDsContext().getDataSupplier()); FrameContextImpl fakeFrameContext = new FrameContextImpl((Frame) legacyFrame); fakeDsContext.setFrameContext(fakeFrameContext); fakeDatasource.setDsContext(fakeDsContext); //Attention: this query should match the logic in com.haulmont.reports.wizard.ReportingWizardBean.createJpqlDataSet() fakeDatasource.setQuery("select queryEntity from " + metaClass.getName() + " queryEntity"); fakeDatasource.setMetaClass(metaClass); fakeFilter.setDatasource(fakeDatasource); fakeFilter.setFrame(UiControllerUtils.getFrame(frameOwner)); return fakeFilter; }
public DsContext loadDatasources(@Nullable Element element, @Nullable DsContext parent, Map<String, String> aliasesMap) { if (element == null) { context = new DsContextImpl(dataservice); if (parent != null) context.setParent(parent); context = new DsContextImpl(dataservice);
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 void resumeSuspended() { List<CollectionDatasource.Suspendable> list = new ArrayList<>(); addDsContextToResume(this, list); for (CollectionDatasource.Suspendable suspendable : list) { suspendable.setSuspended(false); } }
protected void addDatasourceToResume(List<CollectionDatasource.Suspendable> list, Datasource datasource) { if (list.contains(datasource)) { return; } if (dependencies.containsKey(datasource)) { Datasource master = dependencies.get(datasource); addDatasourceToResume(list, master); } if (datasource instanceof CollectionDatasource.Suspendable && ((CollectionDatasource.Suspendable) datasource).isSuspended()) { list.add((CollectionDatasource.Suspendable) datasource); } }
public void commitAndClose() { try { validate(); dsContext.commit(); close(Window.COMMIT_ACTION_ID, true); } catch (ValidationException e) { showNotification("Validation error", e.getMessage(), NotificationType.TRAY); } }
dsContext = new DsContextImpl(dataSupplier); dsContext.setFrameContext(getDsContext().getFrameContext()); setDsContext(dsContext); dsContext.register(datasource); createPropertyDatasources(datasource); if (categorizedEntity) {
protected GroupDatasource createDataSource(String dataSetName, List<KeyValueEntity> keyValueEntities, Map<String, Set<Pair<String, Class>>> headerMap) { DsBuilder dsBuilder = DsBuilder.create(getDsContext()) .setId(dataSetName + "Ds") .setDataSupplier(getDsContext().getDataSupplier()); ValueGroupDatasourceImpl ds = dsBuilder.buildValuesGroupDatasource(); ds.setRefreshMode(CollectionDatasource.RefreshMode.NEVER); Set<Pair<String, Class>> headers = headerMap.get(dataSetName); for (Pair<String, Class> pair : headers) { Class javaClass = pair.getSecond(); if (Entity.class.isAssignableFrom(javaClass) || EnumClass.class.isAssignableFrom(javaClass) || Datatypes.get(javaClass) != null) { ds.addProperty(pair.getFirst(), pair.getSecond()); } } dsContext.register(ds); keyValueEntities.forEach(ds::includeItem); return ds; }
@Override public void init(final Map<String, Object> params) { super.init(params); dsContext = new DsContextImpl(getDsContext().getDataSupplier()); getDialogOptions() .setWidth(themeConstants.get("cuba.gui.report.ShowReportTable.width")) .setHeight(themeConstants.get("cuba.gui.report.ShowReportTable.height")) .setResizable(true); if (report != null) { reportSelectorBox.setVisible(false); CubaTableData dto = (CubaTableData) SerializationSupport.deserialize((byte[]) params.get(TABLE_DATA_PARAMETER)); drawTables(dto); openReportParameters(reportParameters); } reportLookup.addValueChangeListener(e -> { report = (Report) e.getValue(); openReportParameters(null); }); }
protected void createNestedEmbeddedDatasources(Datasource masterDs, MetaClass metaClass, String fqnPrefix) { for (MetaProperty metaProperty : metaClass.getProperties()) { if (MetaProperty.Type.ASSOCIATION == metaProperty.getType() || MetaProperty.Type.COMPOSITION == metaProperty.getType()) { String fqn = metaProperty.getName(); if (StringUtils.isNotEmpty(fqnPrefix)) { fqn = fqnPrefix + "." + fqn; } if (managedEmbeddedProperties.contains(fqn) && metadataTools.isEmbedded(metaProperty)) { MetaClass propertyMetaClass = metaProperty.getRange().asClass(); @SuppressWarnings("unchecked") NestedDatasource<Entity> propertyDs = new EmbeddedDatasourceImpl(); propertyDs.setup(fqn + "Ds", masterDs, metaProperty.getName()); propertyDs.setAllowCommit(false); createNestedEmbeddedDatasources(propertyDs, propertyMetaClass, fqn); datasources.put(fqn, propertyDs); dsContext.register(propertyDs); } } } }
protected void createNestedEmbeddedDatasources(MetaClass metaClass, String fqnPrefix, Datasource masterDs) { for (MetaProperty metaProperty : metaClass.getProperties()) { if (MetaProperty.Type.ASSOCIATION == metaProperty.getType() || MetaProperty.Type.COMPOSITION == metaProperty.getType()) { if (isEmbedded(metaProperty)) { String fqn = fqnPrefix + "." + metaProperty.getName(); MetaClass propertyMetaClass = metaProperty.getRange().asClass(); NestedDatasource propertyDs = new EmbeddedDatasourceImpl(); propertyDs.setup(fqn + "Ds", masterDs, metaProperty.getName()); createNestedEmbeddedDatasources(propertyMetaClass, fqn, propertyDs); datasources.put(fqn, propertyDs); dsContext.register(propertyDs); } } } }
dsContext.register(propertyDs); break; default: