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.browser;
35
36 import static info.magnolia.dam.jcr.AssetNodeTypes.AssetResource.*;
37 import static org.apache.commons.lang3.StringUtils.EMPTY;
38
39 import info.magnolia.cms.core.Path;
40 import info.magnolia.dam.jcr.AssetNodeTypes.Asset;
41 import info.magnolia.dam.jcr.AssetNodeTypes.AssetResource;
42 import info.magnolia.jcr.util.PropertyUtil;
43 import info.magnolia.ui.contentapp.browser.JcrContentClipboard;
44 import info.magnolia.ui.vaadin.integration.jcr.JcrItemId;
45 import info.magnolia.ui.vaadin.integration.jcr.JcrItemUtil;
46
47 import javax.jcr.Item;
48 import javax.jcr.Node;
49 import javax.jcr.RepositoryException;
50
51 import org.apache.commons.io.FilenameUtils;
52
53
54
55
56 public class AssetContentClipboard extends JcrContentClipboard {
57
58
59
60
61
62 @Override
63 protected JcrItemId pasteSingleNode(Node sourceNode, Node destinationNode) throws RepositoryException {
64 JcrItemId newItemId = super.pasteSingleNode(sourceNode, destinationNode);
65 if (sourceNode.isNodeType(Asset.NAME)) {
66 Node targetNode = (Node) JcrItemUtil.getJcrItem(newItemId);
67
68 Node resourceNode = getResourceNodeFromAsset(targetNode);
69 String extension = PropertyUtil.getString(resourceNode, EXTENSION, EMPTY);
70
71 String assetName = targetNode.getName().endsWith(extension) ?
72 FilenameUtils.getBaseName(targetNode.getName()) :
73 targetNode.getName();
74
75 targetNode.setProperty(Asset.ASSET_NAME, assetName);
76 targetNode.getSession().save();
77 }
78 return newItemId;
79 }
80
81
82
83
84 @Override
85 protected String getUniqueNewItemName(Item referenceItem, Node destination) throws RepositoryException {
86 if (referenceItem.isNode() && ((Node) referenceItem).isNodeType(Asset.NAME)) {
87 Node resourceNode = AssetResource.getResourceNodeFromAsset(((Node) referenceItem));
88 if (resourceNode != null) {
89 String extension = PropertyUtil.getString(resourceNode, AssetResource.EXTENSION, EMPTY);
90 String fileName = PropertyUtil.getString(resourceNode, AssetResource.FILENAME);
91 String referenceName = (fileName != null && fileName.endsWith(extension)) ? fileName : fileName + "." + extension;
92 return Path.getUniqueLabel(destination.getSession(), destination.getPath(), Path.getValidatedLabel(referenceName), extension);
93 }
94 }
95 return super.getUniqueNewItemName(referenceItem, destination);
96 }
97 }