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); } }
protected CollectionDatasource loadCollectionDatasource(Element element) { MetaClass metaClass = loadMetaClass(element); if (metaClass == null) throw new DevelopmentException("'class' attribute is not set for the datasource"); initCollectionDatasourceAttributes(element, metaClass); CollectionDatasource datasource = builder .setDsClass(getDatasourceClass(element)) .buildCollectionDatasource(); String maxResults = element.attributeValue("maxResults"); if (!StringUtils.isEmpty(maxResults)) datasource.setMaxResults(Integer.parseInt(maxResults)); if (datasource instanceof CollectionDatasource.Suspendable) ((CollectionDatasource.Suspendable) datasource).setSuspended(true); loadQuery(element, datasource); loadDatasources(element, datasource); return datasource; }
protected Datasource loadHierarchicalDatasource(Element element) { MetaClass metaClass = loadMetaClass(element); if (metaClass == null) throw new DevelopmentException("'class' attribute is not set for the datasource"); initCollectionDatasourceAttributes(element, metaClass); HierarchicalDatasource datasource = builder .setDsClass(getDatasourceClass(element)) .buildHierarchicalDatasource(); String hierarchyProperty = element.attributeValue("hierarchyProperty"); if (!StringUtils.isEmpty(hierarchyProperty)) { datasource.setHierarchyPropertyName(hierarchyProperty); } if (datasource instanceof CollectionDatasource.Suspendable) ((CollectionDatasource.Suspendable) datasource).setSuspended(true); loadQuery(element, datasource); loadDatasources(element, datasource); return datasource; }
public static void autoRefreshInvalid(CollectionDatasource datasource, boolean autoRefresh) { if (datasource instanceof PropertyDatasource) { return; } if (autoRefresh && Datasource.State.INVALID.equals(datasource.getState())) { DsContext dsContext = datasource.getDsContext(); if (dsContext == null || !WindowParams.DISABLE_AUTO_REFRESH.getBool(dsContext.getFrameContext())) { if (datasource instanceof CollectionDatasource.Suspendable) ((CollectionDatasource.Suspendable) datasource).refreshIfNotSuspended(); else datasource.refresh(); } } } }
protected Datasource loadGroupDatasource(Element element) { MetaClass metaClass = loadMetaClass(element); if (metaClass == null) throw new DevelopmentException("'class' attribute is not set for the datasource"); initCollectionDatasourceAttributes(element, metaClass); GroupDatasource datasource = builder .setDsClass(getDatasourceClass(element)) .buildGroupDatasource(); if (datasource instanceof CollectionDatasource.Suspendable) ((CollectionDatasource.Suspendable) datasource).setSuspended(true); loadQuery(element, datasource); loadDatasources(element, datasource); return datasource; }
@Override public void refreshIfNotSuspended(Map<String, Object> parameters) { if (datasource instanceof CollectionDatasource.Suspendable) ((CollectionDatasource.Suspendable) datasource).refreshIfNotSuspended(parameters); else datasource.refresh(parameters); }
@Override public void resumeSuspended() { List<CollectionDatasource.Suspendable> list = new ArrayList<>(); addDsContextToResume(this, list); for (CollectionDatasource.Suspendable suspendable : list) { suspendable.setSuspended(false); } }