NoiseSpecConverter.java 3.26 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.sleng.NoiseDistributionEnum
 *  com.scene7.is.util.Converter
 *  com.scene7.is.util.StringMerger
 *  com.scene7.is.util.text.ParameterException
 *  com.scene7.is.util.text.ParsingException
 *  com.scene7.is.util.text.access.ListParamAccess
 *  com.scene7.is.util.text.converters.BooleanConverter
 *  com.scene7.is.util.text.converters.BooleanConverter$Builder
 *  com.scene7.is.util.text.converters.EnumConverter
 *  com.scene7.is.util.text.converters.IntegerConverter
 *  org.apache.commons.beanutils.ConversionException
 *  org.jetbrains.annotations.NotNull
 */
package com.scene7.is.ps.provider.parsers;

import com.scene7.is.ps.provider.defs.NoiseSpec;
import com.scene7.is.sleng.NoiseDistributionEnum;
import com.scene7.is.util.Converter;
import com.scene7.is.util.StringMerger;
import com.scene7.is.util.text.ParameterException;
import com.scene7.is.util.text.ParsingException;
import com.scene7.is.util.text.access.ListParamAccess;
import com.scene7.is.util.text.converters.BooleanConverter;
import com.scene7.is.util.text.converters.EnumConverter;
import com.scene7.is.util.text.converters.IntegerConverter;
import org.apache.commons.beanutils.ConversionException;
import org.jetbrains.annotations.NotNull;

public class NoiseSpecConverter
extends Converter<String, NoiseSpec> {
    private static final Converter<String, NoiseSpec> INSTANCE = new NoiseSpecConverter();
    private static final Converter<String, Integer> AMOUNT_CONVERTER = IntegerConverter.integerConverter((int)0, (int)100);
    private static final Converter<String, Boolean> GRAYSCALE_CONVERTER = new BooleanConverter.Builder().addCommonValues().add("GRAY", true).add("COLOR", false).getProduct();
    private static final Converter<String, NoiseDistributionEnum> DISTRIBUTION_CONVERTER = EnumConverter.enumConverter(NoiseDistributionEnum.class, (boolean)false);

    public static Converter<String, NoiseSpec> noiseConverter() {
        return INSTANCE;
    }

    @NotNull
    public NoiseSpec convert(@NotNull String value) throws ConversionException {
        try {
            ListParamAccess list = new ListParamAccess(value);
            int amount = (Integer)list.getCustom("amount", (Object)0, AMOUNT_CONVERTER);
            NoiseDistributionEnum distribution = (NoiseDistributionEnum)list.getCustom("distribution", (Object)NoiseDistributionEnum.UNIFORM, DISTRIBUTION_CONVERTER);
            boolean grayscale = (Boolean)list.getCustom("grayscale", (Object)true, GRAYSCALE_CONVERTER);
            return new NoiseSpec(amount, distribution, grayscale);
        }
        catch (ParameterException e) {
            throw new ConversionException((Throwable)new ParsingException(4, value, (Throwable)e));
        }
    }

    @NotNull
    public String revert(@NotNull NoiseSpec src) throws ConversionException {
        StringMerger merger = new StringMerger(",");
        merger.append((String)AMOUNT_CONVERTER.revert((Object)src.getAmount()));
        merger.append((String)DISTRIBUTION_CONVERTER.revert((Object)src.getDistribution()));
        merger.append((String)GRAYSCALE_CONVERTER.revert((Object)src.isGrayscale()));
        return merger.toString();
    }

    private NoiseSpecConverter() {
        super(String.class, NoiseSpec.class);
    }
}