SubAssetReferenceProvider.java 2.74 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.granite.references.Reference
 *  com.adobe.granite.references.ReferenceProvider
 *  com.day.cq.dam.api.Asset
 *  com.day.cq.dam.commons.util.DamUtil
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Property
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ResourceResolver
 */
package com.day.cq.dam.core.impl;

import com.adobe.granite.references.Reference;
import com.adobe.granite.references.ReferenceProvider;
import com.day.cq.dam.api.Asset;
import com.day.cq.dam.commons.util.DamUtil;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.List;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;

@Component(metatype=0)
@Service(value={ReferenceProvider.class})
public class SubAssetReferenceProvider
implements ReferenceProvider {
    @Property(value={"subassetsReference"}, label="Reference Provider Name")
    public static final String SCHEDULE_TIME_BASED = "cq.dam.referenceprovider";
    public static final String REFERENCE_TYPE = "subassetsReference";

    public List<Reference> getReferences(Resource resource) {
        ArrayList<Reference> references = new ArrayList<Reference>();
        if (null != resource) {
            Asset asset = (Asset)resource.adaptTo(Asset.class);
            ResourceResolver resolver = resource.getResourceResolver();
            if (null != asset) {
                Collection subAssets = asset.getSubAssets();
                List refAssets = DamUtil.getReferencedSubAssets((Resource)resource);
                if (null != subAssets && null != refAssets) {
                    subAssets.addAll(refAssets);
                } else if (null != refAssets) {
                    subAssets = refAssets;
                }
                if (null != subAssets) {
                    Calendar now = Calendar.getInstance();
                    for (Asset each : subAssets) {
                        Resource subRes = resolver.getResource(each.getPath());
                        Calendar subAssetExpiryTime = DamUtil.getExpiryTime((Asset)each);
                        if (null == subAssetExpiryTime || !subAssetExpiryTime.before(now)) continue;
                        references.add(new Reference(resource, subRes, "subassetsReference"));
                    }
                }
            }
        }
        return references;
    }

    public String getType() {
        return "subassetsReference";
    }
}