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.external.app.action.availability;
35
36 import info.magnolia.dam.api.AssetProvider;
37 import info.magnolia.dam.api.AssetProviderRegistry;
38 import info.magnolia.dam.api.Item;
39 import info.magnolia.dam.api.ItemKey;
40 import info.magnolia.ui.api.availability.AbstractAvailabilityRule;
41
42 import javax.inject.Inject;
43
44 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory;
46
47
48
49
50 public class IsAssetRule extends AbstractAvailabilityRule {
51
52 private static final Logger log = LoggerFactory.getLogger(IsAssetRule.class);
53
54 private final AssetProviderRegistry assetProviderRegistry;
55
56 @Inject
57 public IsAssetRule(AssetProviderRegistry assetProviderRegistry) {
58 this.assetProviderRegistry = assetProviderRegistry;
59 }
60
61 @Override
62 protected boolean isAvailableForItem(Object itemId) {
63 if (itemId == null || !(itemId instanceof ItemKey)) {
64 return false;
65 }
66 final ItemKey itemKey = (ItemKey) itemId;
67 final AssetProvider assetProvider = assetProviderRegistry.getProviderById(itemKey.getProviderId());
68 try {
69 if (assetProvider != null) {
70 final Item item = assetProvider.getItem(itemKey);
71 return item.isAsset();
72 }
73 } catch (AssetProvider.AssetNotFoundException e) {
74 log.error("Failed to retrieve item with given id: " + e.getMessage(), e);
75 } catch (AssetProvider.IllegalItemKeyException e) {
76 log.error("Failed to handle item id: " + e.getMessage(), e);
77 }
78 return false;
79 }
80
81 }