ImageAsset.java
7.29 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.adobe.cq.dam.dm.process.api.PTiffMetadata
* com.adobe.cq.dam.dm.process.api.PTiffRendition
* com.scene7.is.catalog.CatalogRecord
* com.scene7.is.catalog.util.ObjectTypeEnum
* com.scene7.is.provider.ImageSet
* com.scene7.is.provider.UserData
* com.scene7.is.ps.provider.fvctx.AssetType
* com.scene7.is.ps.provider.parsers.ImageSetConverter
* com.scene7.is.sleng.HotSpot
* com.scene7.is.util.AbstractPath
* com.scene7.is.util.Location
* com.scene7.is.util.Size
* com.scene7.is.util.callbacks.Func1
* com.scene7.is.util.callbacks.Option
* com.scene7.is.util.text.ParsingException
* javax.jcr.Node
* javax.jcr.RepositoryException
* org.apache.sling.api.adapter.Adaptable
* org.apache.sling.api.resource.Resource
* org.jetbrains.annotations.NotNull
* scala.Function1
*/
package com.adobe.cq.dam.s7imaging.impl.catalog;
import com.adobe.cq.dam.dm.process.api.PTiffMetadata;
import com.adobe.cq.dam.dm.process.api.PTiffRendition;
import com.adobe.cq.dam.s7imaging.impl.catalog.JcrImageSet;
import com.adobe.cq.dam.s7imaging.impl.catalog.JcrMetadata;
import com.adobe.cq.dam.s7imaging.impl.catalog.JcrModifierList;
import com.adobe.cq.dam.s7imaging.impl.catalog.JcrUserData;
import com.adobe.cq.dam.s7imaging.impl.catalog.JcrUtil;
import com.adobe.cq.dam.s7imaging.impl.jcr.props.JcrProps;
import com.adobe.cq.dam.s7imaging.impl.jcr.props.PropExtractor;
import com.adobe.cq.dam.s7imaging.impl.jcr.props.PropKey;
import com.adobe.cq.dam.s7imaging.impl.jcr.props.StandardExtractors;
import com.scene7.is.catalog.CatalogRecord;
import com.scene7.is.catalog.util.ObjectTypeEnum;
import com.scene7.is.provider.ImageSet;
import com.scene7.is.provider.UserData;
import com.scene7.is.ps.provider.fvctx.AssetType;
import com.scene7.is.ps.provider.parsers.ImageSetConverter;
import com.scene7.is.sleng.HotSpot;
import com.scene7.is.util.AbstractPath;
import com.scene7.is.util.Location;
import com.scene7.is.util.Size;
import com.scene7.is.util.callbacks.Func1;
import com.scene7.is.util.callbacks.Option;
import com.scene7.is.util.text.ParsingException;
import java.util.Iterator;
import java.util.List;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import org.apache.sling.api.adapter.Adaptable;
import org.apache.sling.api.resource.Resource;
import org.jetbrains.annotations.NotNull;
import scala.Function1;
public class ImageAsset {
public static final PropKey<Long> LastModified = PropKey.required("jcr:lastModified", StandardExtractors.toLong);
private static final String PTIFF_RENDITION = "renditions/cqdam.pyramid.tiff";
private static final String MODIFIER = "modifier";
private static final String METADATA = "metadata";
private static final String DAM_ASSET = "dam:Asset";
private static final String DAM_ASSET_CONTENT = "dam:AssetContent";
private static final String S7_TYPE_IMAGE = "Image";
private static final PropKey<Option<String>> DAM_S7_DAM_TYPE = PropKey.optional("dam:s7damType", StandardExtractors.toString);
private static final PropKey<String> PRIMARY_TYPE = PropKey.required("jcr:primaryType", StandardExtractors.toString);
public static Option<CatalogRecord> imageAsset(String rootId, String recordId, @NotNull Resource resource, Func1<Node, AbstractPath> getRenditionPath) throws RepositoryException {
for (Resource jcrContent : JcrUtil.getChild(resource, "jcr:content")) {
Node contentNode = JcrUtil.as(Node.class, (Adaptable)jcrContent);
Option<JcrImageSet> imageSet = JcrImageSet.jcrImageSet(rootId, resource);
if (!imageSet.isDefined() && !ImageAsset.isDynamicImage(resource)) continue;
CatalogRecord result = CatalogRecord.catalogRecord((String)rootId, (String)recordId, (ObjectTypeEnum)ObjectTypeEnum.IS);
JcrProps props = JcrProps.jcrProps(jcrContent);
long lastModified = props.get(LastModified);
result.setLastModified(Long.valueOf(lastModified));
result.setTimeStamp(lastModified);
for (Resource r : JcrUtil.getChild(jcrContent, "renditions/cqdam.pyramid.tiff")) {
result.setPath((AbstractPath)getRenditionPath.call((Object)JcrUtil.as(Node.class, (Adaptable)r)));
PTiffRendition pTiffRendition = JcrUtil.as(PTiffRendition.class, (Adaptable)r);
PTiffMetadata pTiffMetadata = pTiffRendition.getMetadata();
if (!pTiffMetadata.hasSize()) continue;
int w = pTiffMetadata.getWidth();
int h = pTiffMetadata.getHeight();
result.setImageSize(Size.size((double)w, (double)h));
result.setAnchor(Location.location((double)((double)w / 2.0), (double)((double)h / 2.0)));
}
for (Object v222 : imageSet) {
result.setAssetType(Option.some((Object)v222.assetType.toString()));
result.setImageSet((ImageSet)ImageSetConverter.imageSetConverter().convert((Object)v222.value));
}
for (Object v222 : ImageAsset.userData(contentNode)) {
result.setUserData((UserData)v222);
}
for (Object v222 : JcrUtil.getNode(contentNode, "modifier")) {
result.setModifier(JcrModifierList.jcrModifierList((Node)v222));
}
for (Object v222 : ImageAsset.metadata(contentNode)) {
for (List hotSpots : v222.hotSpots) {
result.setHotSpots(hotSpots);
}
}
return Option.some((Object)result);
}
return Option.none();
}
private static Option<AbstractPath> renditionPath(Resource jcrContent, Function1<String, String> mapPath) {
Iterator i$ = JcrUtil.getChild(jcrContent, "renditions/cqdam.pyramid.tiff").iterator();
if (i$.hasNext()) {
Resource r = (Resource)i$.next();
String mappedPath = (String)mapPath.apply((Object)r.getPath());
try {
return Option.some((Object)new AbstractPath(mappedPath));
}
catch (ParsingException e) {
throw new AssertionError((Object)e);
}
}
return Option.none();
}
public static Option<UserData> userData(Node jcrContent) throws RepositoryException {
return JcrUserData.jcrUserData(jcrContent);
}
public static boolean isDynamicImage(Resource asset) throws RepositoryException {
if ("dam:Asset".equals(JcrProps.jcrProps(asset).get(PRIMARY_TYPE))) {
for (Resource jcrContent : JcrUtil.getChild(asset, "jcr:content")) {
Iterator i$;
JcrProps props = JcrProps.jcrProps(jcrContent);
if (!"dam:AssetContent".equals(props.get(PRIMARY_TYPE)) || !(i$ = JcrUtil.getChild(jcrContent, "renditions/cqdam.pyramid.tiff").iterator()).hasNext()) continue;
Resource ptiff = (Resource)i$.next();
return true;
}
}
return false;
}
public static Option<JcrMetadata> metadata(Node jcrContent) throws RepositoryException {
Iterator i$ = JcrUtil.getNode(jcrContent, "metadata").iterator();
if (i$.hasNext()) {
Node metadataNode = (Node)i$.next();
return Option.some((Object)JcrMetadata.jcrMetadata(metadataNode));
}
return Option.none();
}
}