ImageAsset.java 7.29 KB
/*
 * 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();
    }
}