CompanySettings.java 4.16 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.provider.ResModeSpecConverter
 *  com.scene7.is.ps.provider.parsers.ColorConverter
 *  com.scene7.is.sleng.Color
 *  com.scene7.is.sleng.ResModeSpec
 *  com.scene7.is.util.Size
 *  com.scene7.is.util.callbacks.Option
 *  com.scene7.is.util.text.parsers.SizeParser
 *  javax.jcr.Node
 *  javax.jcr.Property
 *  javax.jcr.RepositoryException
 *  org.apache.sling.api.resource.Resource
 *  org.jetbrains.annotations.NotNull
 */
package com.adobe.cq.dam.s7imaging.impl.catalog;

import com.adobe.cq.dam.s7imaging.config.DynamicMediaConfig;
import com.adobe.cq.dam.s7imaging.impl.catalog.JcrModifierList;
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.provider.ResModeSpecConverter;
import com.scene7.is.ps.provider.parsers.ColorConverter;
import com.scene7.is.sleng.Color;
import com.scene7.is.sleng.ResModeSpec;
import com.scene7.is.util.Size;
import com.scene7.is.util.callbacks.Option;
import com.scene7.is.util.text.parsers.SizeParser;
import java.util.HashMap;
import java.util.Map;
import javax.jcr.Node;
import javax.jcr.Property;
import javax.jcr.RepositoryException;
import org.apache.sling.api.resource.Resource;
import org.jetbrains.annotations.NotNull;

public class CompanySettings {
    public static final PropKey<Option<Color>> BgColor = PropKey.optional("bkgcolor", ColorConverter.colorParser());
    public static final PropKey<Option<Long>> TimeStamp = PropKey.optional("jcr:lastModified", StandardExtractors.toLong);
    public static final PropKey<Option<Size>> DefaultPix = PropKey.optional("defaultpix", SizeParser.sizeParser());
    public static final PropKey<Option<Size>> DefaultThumbPix = PropKey.optional("defaultthumbpix", SizeParser.sizeParser());
    public static final PropKey<Option<Long>> Expiration = PropKey.optional("expiration", CompanySettings.expirationExtractor());
    public static final PropKey<Option<Size>> MaxPix = PropKey.optional("maxpix", SizeParser.sizeParser());
    public static final PropKey<Option<ResModeSpec>> ResamplingMode = PropKey.optional("resmode", ResModeSpecConverter.resModeParser());
    public static final PropKey<Option<Double>> Resolution = PropKey.optional("resolution", StandardExtractors.toDouble);
    public static final PropKey<Option<Integer>> JpegQuality = PropKey.optional("jpegquality", StandardExtractors.toInteger);
    public static final PropKey<Option<Boolean>> DownsampleChroma = PropKey.optional("downsamplechroma", StandardExtractors.toBoolean);
    public final JcrProps props;
    private final Resource resource;

    public static CompanySettings companySettings(@NotNull Resource resource) {
        return new CompanySettings(resource);
    }

    public Map<String, String> macros() throws RepositoryException {
        HashMap<String, String> result = new HashMap<String, String>();
        for (Resource presets : DynamicMediaConfig.imagePresets(this.resource)) {
            for (Resource child : presets.getChildren()) {
                for (Resource r : Option.some((Object)child.getChild("jcr:content"))) {
                    for (Node content : Option.some((Object)r.adaptTo(Node.class))) {
                        String key = child.getName();
                        String value = JcrModifierList.jcrModifierList(content);
                        result.put(key, value);
                    }
                }
            }
        }
        return result;
    }

    private static PropExtractor<Long> expirationExtractor() {
        return new PropExtractor<Long>(new int[]{3, 4, 1}){

            @Override
            protected Long extract(Property prop) throws RepositoryException {
                if (prop.getType() == 1 && "10".equals(prop.getString())) {
                    return 36000000;
                }
                return prop.getLong();
            }
        };
    }

    private CompanySettings(Resource resource) {
        this.resource = resource;
        this.props = JcrProps.jcrProps(resource);
    }

}