All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mapfish.print.processor.ProcessorDependency Maven / Gradle / Ivy

package org.mapfish.print.processor;

import com.google.common.collect.Sets;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;


/**
 * Models a dependency between two processors.
 */
public class ProcessorDependency {

    private final Class> required;
    private final Class> dependent;
    private final Set commonInputs;
    
    /**
     * Constructor.
     * The processor dependent requires the processor required.
     *
     * @param required The processor which is required to be executed before the other.
     * @param dependent The processor which requires the other to be executed first.
     * @param commonInputs The dependency is only enforced if the two processors have these inputs in common.
     */
    public ProcessorDependency(
            final Class> required,
            final Class> dependent,
            final Set commonInputs) {
        this.required = required;
        this.dependent = dependent;
        this.commonInputs = Sets.newHashSet(commonInputs);
    }
    
    /**
     * Constructor.
     * The processor dependent requires the processor required.
     * 
     * @param required The processor which is required to be executed before the other.
     * @param dependent The processor which requires the other to be executed first.
     */
    public ProcessorDependency(
            final Class> required,
            final Class> dependent) {
        this(required, dependent, new HashSet());
    }

    /**
     * Returns the processor which is required to be executed before the other.
     */
    public final Class> getRequired() {
        return this.required;
    }

    /**
     * Returns the processor which requires the other to be executed first.
     */
    public final Class> getDependent() {
        return this.dependent;
    }

    /**
     * The inputs that both processors must have in common.
     */
    public final Set getCommonInputs() {
        return Collections.unmodifiableSet(this.commonInputs);
    }

    /**
     * Add a common input to this dependency.
     *
     * @param inputName the name of the input to add
     */
    public final void addCommonInput(final String inputName) {
        this.commonInputs.add(inputName);
    }

    @Override
    public final String toString() {
        return "ProcessorDependency{" +
               "required=" + this.required.getSimpleName() +
               ", dependent=" + this.dependent.getSimpleName() +
               ", commonInputs=" + this.commonInputs +
               '}';
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy