/** * Returns the table's data container. */ protected CollectionContainer<T> getBrowseContainer() { DataUnit items = getTable().getItems(); if (items instanceof ContainerDataUnit) return ((ContainerDataUnit<T>) items).getContainer(); else throw new UnsupportedOperationException("Unsupported items: " + items); }
protected boolean checkRemovePermission() { ContainerDataUnit containerDataUnit = (ContainerDataUnit) target.getItems(); MetaClass metaClass = containerDataUnit.getEntityMetaClass(); if (metaClass == null) { return false; } boolean entityOpPermitted = security.isEntityOpPermitted(metaClass, EntityOp.DELETE); if (!entityOpPermitted) { return false; } if (containerDataUnit.getContainer() instanceof Nested) { Nested nestedContainer = (Nested) containerDataUnit.getContainer(); MetaClass masterMetaClass = nestedContainer.getMaster().getEntityMetaClass(); MetaProperty metaProperty = masterMetaClass.getPropertyNN(nestedContainer.getProperty()); boolean attrPermitted = security.isEntityAttrUpdatePermitted(masterMetaClass, metaProperty.getName()); if (!attrPermitted) { return false; } } return true; }
protected boolean isDataAvailable() { if (listComponent.getItems() instanceof ContainerDataUnit) { ContainerDataUnit unit = (ContainerDataUnit) listComponent.getItems(); CollectionContainer container = unit.getContainer(); return container instanceof HasLoader && unit.getState() == BindingState.ACTIVE && !container.getItems().isEmpty(); } else { CollectionDatasource ds = listComponent.getDatasource(); if (ds != null) return ds.getState() == Datasource.State.VALID && ds.size() > 0; } return false; }
@Nullable public static String getInferredTestId(DataUnit dataUnit, String suffix) { if (dataUnit instanceof ContainerDataUnit) { ContainerDataUnit dcDataUnit = (ContainerDataUnit) dataUnit; MetaClass entityMetaClass = dcDataUnit.getEntityMetaClass(); return entityMetaClass.getName() + suffix; } else if (dataUnit instanceof DatasourceDataUnit) { DatasourceDataUnit dsDataUnit = (DatasourceDataUnit) dataUnit; MetaClass entityMetaClass = dsDataUnit.getDatasource().getMetaClass(); return entityMetaClass.getName() + suffix; } return null; } }
/** * Creates a remove builder using list component, e.g. {@link Table} or {@link DataGrid}. * * @param listComponent list component * @param <E> type of entity */ public <E extends Entity> RemoveBuilder<E> builder(ListComponent<E> listComponent) { checkNotNullArgument(listComponent); checkNotNullArgument(listComponent.getFrame()); FrameOwner frameOwner = listComponent.getFrame().getFrameOwner(); Class<E> entityClass; DataUnit items = listComponent.getItems(); if (items instanceof ContainerDataUnit) { entityClass = ((ContainerDataUnit) items).getEntityMetaClass().getJavaClass(); } else { throw new IllegalStateException(String.format("Component %s is not bound to data", listComponent)); } return builder(entityClass, frameOwner) .withListComponent(listComponent); }
protected boolean needExportAll() { if (target.getSelected().isEmpty()) { return true; } CollectionContainer container = ((ContainerDataUnit) target.getItems()).getContainer(); return container != null && container.getItems().size() <= 1; }
@Override protected boolean isPermitted() { if (target == null || !(target.getItems() instanceof ContainerDataUnit)) { return false; } ContainerDataUnit containerDataUnit = (ContainerDataUnit) target.getItems(); MetaClass metaClass = containerDataUnit.getEntityMetaClass(); if (metaClass == null) { return false; } if (containerDataUnit.getContainer() instanceof Nested) { Nested nestedContainer = (Nested) containerDataUnit.getContainer(); MetaClass masterMetaClass = nestedContainer.getMaster().getEntityMetaClass(); MetaProperty metaProperty = masterMetaClass.getPropertyNN(nestedContainer.getProperty()); boolean attrPermitted = security.isEntityAttrUpdatePermitted(masterMetaClass, metaProperty.getName()); if (!attrPermitted) { return false; } } return super.isPermitted(); }
protected <E extends Entity> void refreshItems(DataUnit dataSource) { CollectionContainer<E> container = dataSource instanceof ContainerDataUnit ? ((ContainerDataUnit) dataSource).getContainer() : null; if (container != null) { DataLoader loader = null; if (container instanceof HasLoader) { loader = ((HasLoader) container).getLoader(); } if (loader != null) { loader.load(); } else { log.warn("Target container has no loader, refresh is impossible"); } } }
@Override protected boolean isPermitted() { if (target == null || !(target.getItems() instanceof ContainerDataUnit)) { return false; } ContainerDataUnit containerDataUnit = (ContainerDataUnit) target.getItems(); MetaClass metaClass = containerDataUnit.getEntityMetaClass(); if (metaClass == null) { return false; } if (containerDataUnit.getContainer() instanceof Nested) { Nested nestedContainer = (Nested) containerDataUnit.getContainer(); MetaClass masterMetaClass = nestedContainer.getMaster().getEntityMetaClass(); MetaProperty metaProperty = masterMetaClass.getPropertyNN(nestedContainer.getProperty()); boolean attrPermitted = security.isEntityAttrUpdatePermitted(masterMetaClass, metaProperty.getName()); if (!attrPermitted) { return false; } } return super.isPermitted(); }
protected Adapter createAdapter(RowsCountTarget target) { if (target instanceof ListComponent) { DataUnit items = ((ListComponent) target).getItems(); if (items instanceof DatasourceDataUnit) { return createDatasourceAdapter(((DatasourceDataUnit) items).getDatasource()); } else if (items instanceof ContainerDataUnit) { return createLoaderAdapter(((ContainerDataUnit) items).getContainer()); } throw new IllegalStateException("Unsupported data unit type: " + items); } throw new UnsupportedOperationException("Unsupported RowsCountTarget: " + target); }
protected CollectionContainer getCollectionContainerFromOwner() { if (owner != null && owner.getItems() != null) { if (owner.getItems() instanceof ContainerDataUnit) { return ((ContainerDataUnit) owner.getItems()).getContainer(); } } return null; }
@SuppressWarnings("unchecked") @Override public void actionPerform(Component component) { // if standard behaviour if (!hasSubscriptions(ActionPerformedEvent.class)) { if (!(target.getItems() instanceof ContainerDataUnit)) { throw new IllegalStateException("ExcludeAction target items is null or does not implement ContainerDataUnit"); } ContainerDataUnit items = (ContainerDataUnit) target.getItems(); CollectionContainer container = items.getContainer(); if (container == null) { throw new IllegalStateException("ExcludeAction target is not bound to CollectionContainer"); } removeOperation.excludeSelected(target); } else { super.actionPerform(component); } } }
@SuppressWarnings("unchecked") @Override public void actionPerform(Component component) { if (!hasSubscriptions(ActionPerformedEvent.class)) { if (!(target.getItems() instanceof ContainerDataUnit)) { throw new IllegalStateException("RemoveAction target items is null or does not implement ContainerDataUnit"); } ContainerDataUnit items = (ContainerDataUnit) target.getItems(); CollectionContainer container = items.getContainer(); if (container == null) { throw new IllegalStateException("RemoveAction target is not bound to CollectionContainer"); } removeOperation.removeSelected(target); } else { super.actionPerform(component); } } }
@SuppressWarnings("unchecked") protected <E extends Entity> CollectionContainer<E> getCollectionContainer(RemoveBuilder<E> builder) { CollectionContainer<E> container; if (builder.getContainer() != null) { container = builder.getContainer(); } else if (builder.getListComponent() != null) { DataUnit items = builder.getListComponent().getItems(); container = ((ContainerDataUnit) items).getContainer(); } else { throw new IllegalArgumentException("Neither container nor list component is specified"); } return container; }
@Override public void actionPerform(Component component) { if (!hasSubscriptions(ActionPerformedEvent.class)) { 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) { loader.load(); } else { log.warn("RefreshAction '{}' target container has no loader, refresh is impossible", getId()); } } else { super.actionPerform(component); } } }
protected void printSelected(Set selected) { MetaClass metaClass; if (listComponent.getItems() instanceof ContainerDataUnit) { ContainerDataUnit unit = (ContainerDataUnit) listComponent.getItems(); InstanceContainer container = unit.getContainer(); metaClass = container.getEntityMetaClass(); } else { CollectionDatasource ds = listComponent.getDatasource(); metaClass = ds.getMetaClass(); } Window window = ComponentsHelper.getWindowNN(listComponent); openRunReportScreen(window.getFrameOwner(), selected, metaClass); }
protected Collection<MetaPropertyPath> getAutowiredProperties(EntityTableItems<E> entityTableSource) { if (entityTableSource instanceof ContainerDataUnit) { CollectionContainer container = ((ContainerDataUnit) entityTableSource).getContainer(); return container.getView() != null ? // if a view is specified - use view properties metadataTools.getViewPropertyPaths(container.getView(), container.getEntityMetaClass()) : // otherwise use all properties from meta-class metadataTools.getPropertyPaths(container.getEntityMetaClass()); } if (entityTableSource instanceof DatasourceDataUnit) { CollectionDatasource datasource = ((DatasourceDataUnit) entityTableSource).getDatasource(); return datasource.getView() != null ? // if a view is specified - use view properties metadataTools.getViewPropertyPaths(datasource.getView(), datasource.getMetaClass()) : // otherwise use all properties from meta-class metadataTools.getPropertyPaths(datasource.getMetaClass()); } return Collections.emptyList(); }
protected Collection<MetaPropertyPath> getAutowiredProperties(EntityDataGridItems<E> entityTableSource) { if (entityTableSource instanceof ContainerDataUnit) { CollectionContainer container = ((ContainerDataUnit) entityTableSource).getContainer(); return container.getView() != null ? // if a view is specified - use view properties metadataTools.getViewPropertyPaths(container.getView(), container.getEntityMetaClass()) : // otherwise use all properties from meta-class metadataTools.getPropertyPaths(container.getEntityMetaClass()); } if (entityTableSource instanceof DatasourceDataUnit) { CollectionDatasource datasource = ((DatasourceDataUnit) entityTableSource).getDatasource(); return datasource.getView() != null ? // if a view is specified - use view properties metadataTools.getViewPropertyPaths(datasource.getView(), datasource.getMetaClass()) : // otherwise use all properties from meta-class metadataTools.getPropertyPaths(datasource.getMetaClass()); } return Collections.emptyList(); }
CollectionContainer container = ((ContainerDataUnit) target.getItems()).getContainer(); size = container.getItems().size(); } else if (target.getItems() instanceof DatasourceDataUnit) {
protected void printAll() { MetaClass metaClass; LoadContext loadContext; if (listComponent.getItems() instanceof ContainerDataUnit) { ContainerDataUnit unit = (ContainerDataUnit) listComponent.getItems(); CollectionContainer container = unit.getContainer(); CollectionLoader loader = (CollectionLoader) ((HasLoader) unit.getContainer()).getLoader(); metaClass = container.getEntityMetaClass(); loadContext = loader.createLoadContext(); } else { CollectionDatasource ds = listComponent.getDatasource(); metaClass = ds.getMetaClass(); loadContext = ds.getCompiledLoadContext(); } ParameterPrototype parameterPrototype = new ParameterPrototype(metaClass.getName()); parameterPrototype.setMetaClassName(metaClass.getName()); LoadContext.Query query = loadContext.getQuery(); parameterPrototype.setQueryString(query.getQueryString()); parameterPrototype.setQueryParams(query.getParameters()); parameterPrototype.setViewName(loadContext.getView().getName()); Window window = ComponentsHelper.getWindowNN(listComponent); openRunReportScreen(window.getFrameOwner(), parameterPrototype, metaClass); } }