org.haiku.haikudepotserver.graphics.bitmap.PngOptimizationServiceFactory.java Source code

Java tutorial

Introduction

Here is the source code for org.haiku.haikudepotserver.graphics.bitmap.PngOptimizationServiceFactory.java

Source

/*
 * Copyright 2018, Andrew Lindesay
 * Distributed under the terms of the MIT License.
 */

package org.haiku.haikudepotserver.graphics.bitmap;

import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.annotation.Value;

/**
 * <p>This will create a PNG optimization service based on the configuration.</p>
 */

public class PngOptimizationServiceFactory implements FactoryBean<PngOptimizationService> {

    protected static Logger LOGGER = LoggerFactory.getLogger(PngOptimizationServiceFactory.class);

    private final String optiPngPath;

    public PngOptimizationServiceFactory(String optiPngPath) {
        this.optiPngPath = optiPngPath;
    }

    @Override
    public PngOptimizationService getObject() {
        if (!Strings.isNullOrEmpty(optiPngPath)) {
            LOGGER.info("will use optipng; {}", optiPngPath);
            return new OptipngPngOptimizationServiceImpl(optiPngPath);
        }

        LOGGER.info("will no-op png optimization");
        return new NoOpPngOptimizationServiceImpl();
    }

    @Override
    public Class<?> getObjectType() {
        return PngOptimizationService.class;
    }

    @Override
    public boolean isSingleton() {
        return true;
    }
}