CatalogPropertiesHandler.java 10.4 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.provider.JpegQualityConverter
 *  com.scene7.is.provider.JpegQualitySpec
 *  com.scene7.is.provider.ResModeSpecConverter
 *  com.scene7.is.provider.ScaleModeSpecConverter
 *  com.scene7.is.provider.ThumbTypeEnum
 *  com.scene7.is.provider.ThumbTypeEnumConverter
 *  com.scene7.is.provider.catalog.Catalog
 *  com.scene7.is.provider.catalog.CatalogException
 *  com.scene7.is.provider.catalog.ObjectRecord
 *  com.scene7.is.sleng.Color
 *  com.scene7.is.sleng.ColorProfileInfo
 *  com.scene7.is.sleng.ColorSpaceEnum
 *  com.scene7.is.sleng.IccProfile
 *  com.scene7.is.sleng.ImageAccessException
 *  com.scene7.is.sleng.ImageServer
 *  com.scene7.is.sleng.ResModeSpec
 *  com.scene7.is.sleng.ScaleModeSpec
 *  com.scene7.is.util.Location
 *  com.scene7.is.util.Size
 *  com.scene7.is.util.callbacks.Option
 *  com.scene7.is.util.error.ApplicationException
 *  com.scene7.is.util.text.converters.DoubleConverter
 *  com.scene7.is.util.text.converters.SizeConverter
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 */
package com.scene7.is.ps.provider;

import com.scene7.is.provider.JpegQualityConverter;
import com.scene7.is.provider.JpegQualitySpec;
import com.scene7.is.provider.ResModeSpecConverter;
import com.scene7.is.provider.ScaleModeSpecConverter;
import com.scene7.is.provider.ThumbTypeEnum;
import com.scene7.is.provider.ThumbTypeEnumConverter;
import com.scene7.is.provider.catalog.Catalog;
import com.scene7.is.provider.catalog.CatalogException;
import com.scene7.is.provider.catalog.ObjectRecord;
import com.scene7.is.ps.provider.ModifierSet;
import com.scene7.is.ps.provider.PropertiesHandler;
import com.scene7.is.ps.provider.Request;
import com.scene7.is.ps.provider.defs.ModifierEnum;
import com.scene7.is.ps.provider.parsers.ColorConverter;
import com.scene7.is.ps.provider.parsers.MaxPixConverter;
import com.scene7.is.sleng.Color;
import com.scene7.is.sleng.ColorProfileInfo;
import com.scene7.is.sleng.ColorSpaceEnum;
import com.scene7.is.sleng.IccProfile;
import com.scene7.is.sleng.ImageAccessException;
import com.scene7.is.sleng.ImageServer;
import com.scene7.is.sleng.ResModeSpec;
import com.scene7.is.sleng.ScaleModeSpec;
import com.scene7.is.util.Location;
import com.scene7.is.util.Size;
import com.scene7.is.util.callbacks.Option;
import com.scene7.is.util.error.ApplicationException;
import com.scene7.is.util.text.converters.DoubleConverter;
import com.scene7.is.util.text.converters.SizeConverter;
import java.text.DateFormat;
import java.util.HashMap;
import java.util.Map;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

class CatalogPropertiesHandler
extends PropertiesHandler {
    private final ImageServer server;
    private static final String BG_COLOR = "catalog.bkgColor";
    private static final String DEFAULT_EXTENSION = "catalog.defaultExt";
    private static final String DEFAULT_SIZE = "catalog.defaultPix";
    private static final String DEFAULT_THUMB_SIZE = "catalog.defaultThumbPix";
    private static final String EXPIRATION = "catalog.expiration";
    private static final String NON_IMG_EXPIRATION = "catalog.nonImgExpiration";
    private static final String DEFAULT_EXPIRATION = "catalog.defaultExpiration";
    private static final String JPEG_QUALITY = "catalog.jpegQuality";
    private static final String MAX_SIZE = "catalog.maxPix";
    private static final String PRINT_RESOLUTION = "catalog.printResolution";
    private static final String RESAMPLING_MODE = "catalog.resMode";
    private static final String SCALE_MODE = "catalog.scaleMode";
    private static final String RESOLUTION = "catalog.resolution";
    private static final String THUMB_BG_COLOR = "catalog.thumbBkgColor";
    private static final String THUMB_HALIGN = "catalog.thumbHorizAlign";
    private static final String THUMB_VALIGN = "catalog.thumbVertAlign";
    private static final String THUMB_RESOLUTION = "catalog.thumbRes";
    private static final String THUMB_TYPE = "catalog.thumbType";
    private static final String WATERMARK = "catalog.watermark";
    private static final String COMPILE_TIME = "catalog.fileTime";
    private static final String PUBLISH_INFO = "catalog.publishInfo";
    private static final String ICC_PROFILE_RGB = "catalog.iccProfileRGB";
    private static final String ICC_PROFILE_CMYK = "catalog.iccProfileCMYK";
    private static final String ICC_PROFILE_GRAY = "catalog.iccProfileGRAY";
    private static final String ICC_PROFILE_SRC_RGB = "catalog.iccProfileSrcRGB";
    private static final String ICC_PROFILE_SRC_CMYK = "catalog.iccProfileSrcCMYK";
    private static final String ICC_PROFILE_SRC_GRAY = "catalog.iccProfileSrcGRAY";
    private static final String DEFAULT_IMAGE = "catalog.defaultImage";
    private static final String ERROR_IMAGE = "catalog.errorImage";

    CatalogPropertiesHandler(ImageServer server) {
        this.server = server;
    }

    @Override
    protected Map<String, Object> getProperties(Request request) throws ApplicationException {
        HashMap<String, Object> props = new HashMap<String, Object>();
        ObjectRecord descriptor = request.getGlobalAttributes().getOrDie(ModifierEnum.I_DESCRIPTOR);
        Catalog catalog = descriptor.getCatalog();
        this.setCatalogProperties(catalog, props);
        return props;
    }

    private void setCatalogProperties(Catalog catalog, Map<String, Object> dst) throws ImageAccessException, CatalogException {
        CatalogPropertiesHandler.setProperty("catalog.bkgColor", (String)ColorConverter.colorConverter().revert((Object)catalog.getBgColor()), dst);
        CatalogPropertiesHandler.setProperty("catalog.defaultExt", catalog.getDefaultExt(), dst);
        CatalogPropertiesHandler.setProperty("catalog.defaultPix", (String)SizeConverter.sizeConverter().revert((Object)catalog.getDefaultPix()), dst);
        CatalogPropertiesHandler.setProperty("catalog.defaultThumbPix", (String)SizeConverter.sizeConverter().revert((Object)catalog.getDefaultThumbPix()), dst);
        CatalogPropertiesHandler.setProperty("catalog.expiration", CatalogPropertiesHandler.expirationToString(catalog.getExpiration()), dst);
        CatalogPropertiesHandler.setProperty("catalog.nonImgExpiration", CatalogPropertiesHandler.expirationToString(catalog.getNonImgExpiration()), dst);
        CatalogPropertiesHandler.setProperty("catalog.defaultExpiration", CatalogPropertiesHandler.expirationToString(catalog.getDefaultExpiration()), dst);
        CatalogPropertiesHandler.setProperty("catalog.jpegQuality", (String)JpegQualityConverter.jpegQualityConverter().revert((Object)catalog.getJpegQuality()), dst);
        CatalogPropertiesHandler.setProperty("catalog.maxPix", (String)MaxPixConverter.maxPixConverter().revert((Object)catalog.getMaxPix()), dst);
        CatalogPropertiesHandler.setProperty("catalog.printResolution", (String)DoubleConverter.doubleConverter().revert((Object)catalog.getPrintResolution()), dst);
        CatalogPropertiesHandler.setProperty("catalog.resMode", (String)ResModeSpecConverter.resModeSpecConverter().revert((Object)catalog.getResamplingMode()), dst);
        CatalogPropertiesHandler.setProperty("catalog.scaleMode", (String)ScaleModeSpecConverter.scaleModeSpecConverter().revert((Object)catalog.getScaleMode()), dst);
        CatalogPropertiesHandler.setProperty("catalog.resolution", (String)DoubleConverter.doubleConverter().revert((Object)catalog.getResolution()), dst);
        CatalogPropertiesHandler.setProperty("catalog.thumbBkgColor", (String)ColorConverter.colorConverter().revert((Object)catalog.getThumbBgColor()), dst);
        Location thumbAlign = catalog.getThumbAlign();
        CatalogPropertiesHandler.setProperty("catalog.thumbHorizAlign", CatalogPropertiesHandler.thumbAlignToString(thumbAlign.x), dst);
        CatalogPropertiesHandler.setProperty("catalog.thumbVertAlign", CatalogPropertiesHandler.thumbAlignToString(thumbAlign.y), dst);
        CatalogPropertiesHandler.setProperty("catalog.thumbRes", (String)DoubleConverter.doubleConverter().revert((Object)catalog.getThumbResolution()), dst);
        CatalogPropertiesHandler.setProperty("catalog.thumbType", (String)ThumbTypeEnumConverter.thumbTypeEnumConverter().revert((Object)catalog.getThumbType()), dst);
        CatalogPropertiesHandler.setProperty("catalog.watermark", catalog.getWatermark(), dst);
        DateFormat dateFormat = DateFormat.getDateTimeInstance();
        CatalogPropertiesHandler.setProperty("catalog.fileTime", dateFormat.format(catalog.getCompileTimeStamp()), dst);
        CatalogPropertiesHandler.setProperty("catalog.publishInfo", catalog.getPublishInfo(), dst);
        CatalogPropertiesHandler.setProperty("catalog.defaultImage", catalog.getDefaultImage(), dst);
        CatalogPropertiesHandler.setProperty("catalog.errorImage", catalog.getErrorImage(), dst);
        this.handleProfile("catalog.iccProfileCMYK", dst, catalog.getDefaultProfile(ColorSpaceEnum.CMYK));
        this.handleProfile("catalog.iccProfileRGB", dst, catalog.getDefaultProfile(ColorSpaceEnum.RGB));
        this.handleProfile("catalog.iccProfileGRAY", dst, catalog.getDefaultProfile(ColorSpaceEnum.GRAY));
        this.handleProfile("catalog.iccProfileSrcCMYK", dst, catalog.getDefaultSourceProfile(ColorSpaceEnum.CMYK));
        this.handleProfile("catalog.iccProfileSrcRGB", dst, catalog.getDefaultSourceProfile(ColorSpaceEnum.RGB));
        this.handleProfile("catalog.iccProfileSrcGRAY", dst, catalog.getDefaultSourceProfile(ColorSpaceEnum.GRAY));
    }

    private static void setProperty(@NotNull String name, @Nullable String value, @NotNull Map<String, Object> dst) {
        if (value != null && !value.isEmpty()) {
            dst.put(name, value);
        }
    }

    private void handleProfile(@NotNull String propName, @NotNull Map<String, Object> dst, @NotNull Option<IccProfile> profile) throws ImageAccessException {
        if (!profile.isEmpty()) {
            ColorProfileInfo profileInfo = this.server.getProfileInfo(((IccProfile)profile.get()).path());
            CatalogPropertiesHandler.setProperty(propName, profileInfo.getDescription(), dst);
        }
    }

    private static String expirationToString(Object value) {
        if (value != null) {
            long expiration = (Long)value;
            return String.valueOf(expiration >= 0 ? (double)expiration / 3600000.0 : -1.0);
        }
        return "";
    }

    private static String thumbAlignToString(double value) {
        return String.valueOf((int)Math.round(value + 2.0));
    }
}