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.commands;
35
36 import info.magnolia.cms.core.Path;
37 import info.magnolia.dam.app.DamAppConfiguration;
38 import info.magnolia.dam.app.assets.form.action.SaveAssetFormAction;
39 import info.magnolia.dam.app.ui.field.transformer.AssetTransformer;
40 import info.magnolia.dam.app.ui.field.upload.AssetUploadReceiver;
41 import info.magnolia.dam.jcr.AssetNodeTypes;
42 import info.magnolia.i18nsystem.SimpleTranslator;
43 import info.magnolia.jcr.util.NodeTypes;
44 import info.magnolia.objectfactory.Components;
45 import info.magnolia.ui.form.field.upload.UploadReceiver;
46 import info.magnolia.ui.framework.command.ImportZipCommand;
47 import info.magnolia.ui.vaadin.integration.jcr.JcrNewNodeAdapter;
48 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
49
50 import javax.inject.Inject;
51 import javax.jcr.Node;
52 import javax.jcr.RepositoryException;
53
54 import org.apache.jackrabbit.JcrConstants;
55
56
57
58
59 public class ImportAssetZipCommand extends ImportZipCommand {
60
61 @Inject
62 public ImportAssetZipCommand(SimpleTranslator translator) {
63 super(translator);
64 }
65
66
67
68
69 @Deprecated
70 public ImportAssetZipCommand(DamAppConfiguration damAppConfig, SimpleTranslator translator) {
71 this(translator);
72 }
73
74 @Override
75 protected UploadReceiver createReceiver() {
76 return Components.newInstance(AssetUploadReceiver.class);
77 }
78
79 @Override
80 protected void doHandleEntryFromReceiver(Node parentFolder, UploadReceiver receiver) throws RepositoryException {
81 createAsset(parentFolder, receiver);
82 }
83
84 public static Node createAsset(Node parentFolder, UploadReceiver receiver) throws RepositoryException {
85
86 String fileName = receiver.getFileName();
87 String assetNodeName = Path.getValidatedLabel(fileName);
88
89 JcrNodeAdapter resourceItem = null;
90 JcrNodeAdapter assetItem = null;
91
92 if (parentFolder.hasNode(assetNodeName)) {
93 assetItem = new JcrNodeAdapter(parentFolder.getNode(assetNodeName));
94 resourceItem = new JcrNodeAdapter(AssetNodeTypes.AssetResource.getResourceNodeFromAsset(parentFolder.getNode(assetNodeName)));
95 } else {
96 assetItem = new JcrNewNodeAdapter(parentFolder, AssetNodeTypes.Asset.NAME, assetNodeName);
97 resourceItem = new JcrNewNodeAdapter(parentFolder, NodeTypes.Resource.NAME, JcrConstants.JCR_CONTENT);
98 }
99
100 assetItem.addChild(resourceItem);
101
102 new AssetTransformer().populateItem((AssetUploadReceiver) receiver, resourceItem);
103
104
105 Node assetNode = assetItem.applyChanges();
106 SaveAssetFormAction.setAssetPropertyName(assetItem, assetNode, fileName);
107
108 return assetNode;
109 }
110 }