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.HierarchicalAssetDataProvider;
39 import info.magnolia.objectfactory.ComponentProvider;
40 import info.magnolia.ui.availability.AvailabilityChecker;
41 import info.magnolia.ui.contentapp.Datasource;
42 import info.magnolia.ui.contentapp.FilterableHierarchicalDataProvider;
43 import info.magnolia.ui.contentapp.browser.TreePresenter;
44 import info.magnolia.ui.contentapp.configuration.GridViewDefinition;
45 import info.magnolia.ui.contentapp.configuration.column.ColumnDefinition;
46 import info.magnolia.ui.datasource.PropertySetFactory;
47
48 import java.util.ArrayList;
49 import java.util.List;
50 import java.util.stream.Collectors;
51 import java.util.stream.Stream;
52
53 import com.vaadin.data.PropertySet;
54
55
56
57
58 public class AssetTreePresenter extends TreePresenter<Item> {
59
60 private final HierarchicalAssetDataProvider hierarchicalAssetDataProvider;
61 private final PropertySetFactory<Item> propertySetFactory;
62
63 public AssetTreePresenter(GridViewDefinition<Item> definition,
64 ComponentProvider componentProvider,
65 AvailabilityChecker<Item> availabilityChecker,
66 AssetProviderRegistry assetProviderRegistry,
67 PropertySetFactory<Item> propertySetFactory,
68 Datasource<Item> datasource
69 ) {
70 super(definition, componentProvider, availabilityChecker, datasource);
71 this.hierarchicalAssetDataProvider = new HierarchicalAssetDataProvider(assetProviderRegistry);
72 this.propertySetFactory = propertySetFactory;
73 }
74
75 @Override
76 public Stream<Item> getParents(Item item) {
77 final List<Item> parents = new ArrayList<>();
78 Item parent = item;
79 while (!"/".equals(parent.getPath())) {
80 parents.add(parent);
81 parent = parent.getParent();
82 }
83 return parents.stream();
84 }
85
86 @Override
87 public FilterableHierarchicalDataProvider<Item> createDataProvider() {
88 return FilterableHierarchicalDataProvider.wrap(hierarchicalAssetDataProvider);
89 }
90
91 @Override
92 protected PropertySet<Item> createPropertySet() {
93 return propertySetFactory.withProperties(definition.getColumns().stream().collect(Collectors.toMap(ColumnDefinition::getName, ColumnDefinition::getType)));
94 }
95 }