1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.dam.app.contentview.tree;
35
36 import info.magnolia.dam.api.AssetProviderRegistry;
37 import info.magnolia.dam.api.Item;
38 import info.magnolia.dam.app.data.AssetListDataProvider;
39 import info.magnolia.dam.app.data.HierarchicalAssetDataProvider;
40 import info.magnolia.objectfactory.ComponentProvider;
41 import info.magnolia.ui.availability.AvailabilityChecker;
42 import info.magnolia.ui.contentapp.Datasource;
43 import info.magnolia.ui.contentapp.FilterableHierarchicalDataProvider;
44 import info.magnolia.ui.contentapp.browser.TreePresenter;
45 import info.magnolia.ui.contentapp.configuration.GridViewDefinition;
46 import info.magnolia.ui.contentapp.configuration.column.ColumnDefinition;
47 import info.magnolia.ui.datasource.PropertySetFactory;
48 import info.magnolia.ui.observation.DatasourceObservation;
49
50 import java.util.ArrayList;
51 import java.util.List;
52 import java.util.stream.Collectors;
53 import java.util.stream.Stream;
54
55 import javax.inject.Inject;
56
57 import com.vaadin.data.PropertySet;
58
59
60
61
62 public class AssetTreePresenter extends TreePresenter<Item> {
63
64 private final AssetProviderRegistry assetProviderRegistry;
65 private final PropertySetFactory<Item> propertySetFactory;
66
67 @Inject
68 AssetTreePresenter(GridViewDefinition<Item> definition,
69 ComponentProvider componentProvider,
70 AvailabilityChecker<Item> availabilityChecker,
71 AssetProviderRegistry assetProviderRegistry,
72 PropertySetFactory<Item> propertySetFactory,
73 Datasource<Item> datasource,
74 DatasourceObservation datasourceObservation
75 ) {
76 super(definition, componentProvider, availabilityChecker, datasource, datasourceObservation);
77 this.propertySetFactory = propertySetFactory;
78 this.assetProviderRegistry = assetProviderRegistry;
79 }
80
81
82
83
84 @Deprecated
85 public AssetTreePresenter(GridViewDefinition<Item> definition, ComponentProvider componentProvider, AvailabilityChecker<Item> availabilityChecker, AssetProviderRegistry assetProviderRegistry, PropertySetFactory<Item> propertySetFactory, Datasource<Item> datasource) {
86 this(definition, componentProvider, availabilityChecker, assetProviderRegistry, propertySetFactory, datasource, componentProvider.getComponent(DatasourceObservation.class));
87 }
88
89 @Override
90 public Stream<Item> getParents(Item item) {
91 final List<Item> parents = new ArrayList<>();
92 Item parent = item;
93 while (!"/".equals(parent.getPath())) {
94 parent = parent.getParent();
95 parents.add(parent);
96 }
97 return parents.stream();
98 }
99
100 @Override
101 public FilterableHierarchicalDataProvider<Item> createDataProvider() {
102 return FilterableHierarchicalDataProvider.wrap(new HierarchicalAssetDataProvider(assetProviderRegistry), new AssetListDataProvider(assetProviderRegistry));
103 }
104
105 @Override
106 protected PropertySet<Item> createPropertySet() {
107 return propertySetFactory.withProperties(definition.getColumns().stream().collect(Collectors.toMap(ColumnDefinition::getName, ColumnDefinition::getType)));
108 }
109 }