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