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.ui.field.transformer;
35
36 import info.magnolia.dam.app.ui.field.definition.DamUploadFieldDefinition;
37 import info.magnolia.dam.app.ui.field.upload.AssetUploadReceiver;
38 import info.magnolia.dam.jcr.AssetNodeTypes;
39 import info.magnolia.objectfactory.Components;
40 import info.magnolia.ui.api.i18n.I18NAuthoringSupport;
41 import info.magnolia.ui.form.field.transformer.item.FileTransformer;
42
43 import javax.inject.Inject;
44
45 import org.apache.commons.lang3.StringUtils;
46
47 import com.vaadin.v7.data.Item;
48
49
50
51
52
53
54 public class AssetTransformer<T extends AssetUploadReceiver> extends FileTransformer<T> {
55
56 @Inject
57 public AssetTransformer(Item relatedFormItem, DamUploadFieldDefinition definition, Class<T> type, I18NAuthoringSupport i18nAuthoringSupport) {
58 super(relatedFormItem, definition, type, i18nAuthoringSupport);
59 }
60
61
62
63
64 @Deprecated
65 public AssetTransformer(Item relatedFormItem, DamUploadFieldDefinition definition, Class<T> type) {
66 this(relatedFormItem, definition, type, Components.getComponent(I18NAuthoringSupport.class));
67 }
68
69
70
71
72 public AssetTransformer() {
73 this(null, new DamUploadFieldDefinition(), (Class<T>) AssetUploadReceiver.class, null);
74 }
75
76 @Override
77 public T createPropertyFromItem(Item item) {
78 T assetUploadReceiver = super.createPropertyFromItem(item);
79 if (StringUtils.isNotBlank(assetUploadReceiver.getMimeType())) {
80 assetUploadReceiver.updateRelatedProperties();
81 }
82 return assetUploadReceiver;
83 }
84
85 @Override
86 protected T initializeUploadReceiver() {
87 return (T) Components.newInstance(AssetUploadReceiver.class);
88 }
89
90 @Override
91 public Item populateItem(T newValue, Item item) {
92 super.populateItem(newValue, item);
93 newValue.updateRelatedProperties();
94
95 getOrCreateProperty(item, AssetNodeTypes.AssetResource.FILENAME, String.class).setValue(newValue.getFileName());
96 if (newValue.isImage() && newValue.getFileSize() > 0) {
97
98 getOrCreateProperty(item, AssetNodeTypes.AssetResource.WIDTH, Long.class).setValue(newValue.getWidth());
99 getOrCreateProperty(item, AssetNodeTypes.AssetResource.HEIGHT, Long.class).setValue(newValue.getHeight());
100
101 item.removeItemProperty("duration");
102 } else if (newValue.getDuration() > 0) {
103
104 getOrCreateProperty(item, "duration", Long.class).setValue(newValue.getDuration());
105
106
107 item.removeItemProperty(AssetNodeTypes.AssetResource.WIDTH);
108 item.removeItemProperty(AssetNodeTypes.AssetResource.HEIGHT);
109 } else {
110
111 item.removeItemProperty("duration");
112 item.removeItemProperty(AssetNodeTypes.AssetResource.WIDTH);
113 item.removeItemProperty(AssetNodeTypes.AssetResource.HEIGHT);
114 }
115 return item;
116 }
117 }