use of com.haulmont.cuba.gui.components.data.meta.EmptyDataUnit in project cuba by cuba-platform.
the class RefreshAction method execute.
/**
* Executes the action.
*/
@Override
public void execute() {
if (target == null) {
throw new IllegalStateException("RefreshAction target is not set");
}
if (target.getItems() instanceof EmptyDataUnit) {
return;
}
if (!(target.getItems() instanceof ContainerDataUnit)) {
throw new IllegalStateException("RefreshAction target is null or does not implement SupportsContainerBinding");
}
CollectionContainer container = ((ContainerDataUnit) target.getItems()).getContainer();
if (container == null) {
throw new IllegalStateException("RefreshAction target is not bound to CollectionContainer");
}
DataLoader loader = null;
if (container instanceof HasLoader) {
loader = ((HasLoader) container).getLoader();
}
if (loader != null) {
DataContext dataContext = loader.getDataContext();
if (dataContext != null) {
for (Object entity : container.getItems()) {
dataContext.evict((Entity) entity);
}
}
loader.load();
} else {
log.warn("RefreshAction '{}' target container has no loader, refresh is impossible", getId());
}
}
use of com.haulmont.cuba.gui.components.data.meta.EmptyDataUnit in project cuba by cuba-platform.
the class RefreshAction method actionPerform.
/**
* This method is invoked by action owner component. Don't override it, there are special methods to
* customize behaviour below.
*
* @param component component invoking action
*/
@Override
public void actionPerform(Component component) {
if (beforeRefreshHandler != null) {
beforeRefreshHandler.run();
}
CollectionDatasource datasource = owner.getDatasource();
if (datasource == null) {
// In case of using the 'metaClass' attribute, no datasource is created, but EmptyDataUnit.
if (owner.getItems() instanceof EmptyDataUnit) {
return;
}
throw new IllegalStateException("RefreshAction target is not bound to CollectionDatasource");
}
Map<String, Object> refreshParams = getRefreshParams();
Map<String, Object> supplierParams = null;
if (refreshParamsSupplier != null) {
supplierParams = refreshParamsSupplier.get();
}
Map<String, Object> params = null;
if (supplierParams != null || refreshParams != null) {
params = new HashMap<>();
params.putAll(refreshParams != null ? refreshParams : Collections.emptyMap());
params.putAll(supplierParams != null ? supplierParams : Collections.emptyMap());
}
if (params != null) {
datasource.refresh(params);
} else {
datasource.refresh();
}
if (afterRefreshHandler != null) {
afterRefreshHandler.run();
}
}
Aggregations