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.assets.editor;
35
36 import info.magnolia.cms.core.version.VersionManager;
37 import info.magnolia.context.MgnlContext;
38 import info.magnolia.dam.jcr.AssetNodeTypes;
39 import info.magnolia.event.EventBus;
40 import info.magnolia.i18nsystem.SimpleTranslator;
41 import info.magnolia.ui.api.app.SubAppContext;
42 import info.magnolia.ui.api.app.SubAppEventBus;
43 import info.magnolia.ui.api.event.AdmincentralEventBus;
44 import info.magnolia.ui.contentapp.ContentSubAppView;
45 import info.magnolia.ui.contentapp.detail.DetailEditorPresenter;
46 import info.magnolia.ui.contentapp.detail.DetailLocation;
47 import info.magnolia.ui.contentapp.detail.DetailSubApp;
48 import info.magnolia.ui.vaadin.integration.contentconnector.ContentConnector;
49 import info.magnolia.ui.vaadin.integration.contentconnector.JcrContentConnector;
50
51 import javax.inject.Inject;
52 import javax.inject.Named;
53 import javax.jcr.Node;
54 import javax.jcr.Property;
55 import javax.jcr.RepositoryException;
56
57 import org.apache.commons.lang.StringUtils;
58 import org.slf4j.Logger;
59 import org.slf4j.LoggerFactory;
60
61
62
63
64 public class AssetDetailSubApp extends DetailSubApp {
65
66 private final Logger log = LoggerFactory.getLogger(getClass());
67
68 private final VersionManager versionManager;
69
70 private final SimpleTranslator i18n;
71
72 private final JcrContentConnector contentConnector;
73
74 @Inject
75 protected AssetDetailSubApp(SubAppContext subAppContext, ContentSubAppView view, DetailEditorPresenter workbench, @Named(AdmincentralEventBus.NAME) EventBus adminCentralEventBus, @Named(SubAppEventBus.NAME) EventBus eventBus, VersionManager versionManager, SimpleTranslator i18n, ContentConnector contentConnector) {
76 super(subAppContext, view, adminCentralEventBus, workbench, i18n, contentConnector);
77 this.versionManager = versionManager;
78 this.i18n = i18n;
79 this.contentConnector = (JcrContentConnector) contentConnector;
80 }
81
82 @Override
83 protected String getBaseCaption(DetailLocation location) {
84 String baseCaption = super.getBaseCaption(location);
85 try {
86 String workspace = contentConnector.getContentConnectorDefinition().getWorkspace();
87 if (MgnlContext.getJCRSession(workspace).nodeExists(location.getNodePath())) {
88 Node node = MgnlContext.getJCRSession(workspace).getNode(location.getNodePath());
89
90 if (StringUtils.isNotBlank(location.getVersion())) {
91 node = versionManager.getVersion(node, location.getVersion());
92 }
93 if (node.hasProperty(AssetNodeTypes.Asset.TITLE) || node.hasProperty(AssetNodeTypes.Asset.ASSET_NAME)) {
94 Property property = node.hasProperty(AssetNodeTypes.Asset.TITLE) ? node.getProperty(AssetNodeTypes.Asset.TITLE) : node.getProperty(AssetNodeTypes.Asset.ASSET_NAME);
95 baseCaption = property.getString();
96 }
97 } else {
98 baseCaption = i18n.translate("dam.assets.detail.label.newAsset");
99 }
100 } catch (RepositoryException e) {
101 log.warn("Could not set Sub App Tab Caption for item : {}", location.getNodePath(), e);
102 }
103 return baseCaption;
104 }
105 }