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

org.optaplanner.constraint.streams.bavet.uni.AbstractGroupUniNode Maven / Gradle / Ivy

package org.optaplanner.constraint.streams.bavet.uni;

import java.util.function.BiFunction;
import java.util.function.Function;

import org.optaplanner.constraint.streams.bavet.common.AbstractGroupNode;
import org.optaplanner.constraint.streams.bavet.common.Tuple;
import org.optaplanner.constraint.streams.bavet.common.TupleLifecycle;
import org.optaplanner.core.api.score.stream.uni.UniConstraintCollector;

abstract class AbstractGroupUniNode
        extends AbstractGroupNode, OutTuple_, MutableOutTuple_, GroupKey_, ResultContainer_, Result_> {

    private final BiFunction accumulator;

    protected AbstractGroupUniNode(int groupStoreIndex,
            Function, GroupKey_> groupKeyFunction,
            UniConstraintCollector collector,
            TupleLifecycle nextNodesTupleLifecycle) {
        super(groupStoreIndex, groupKeyFunction,
                collector == null ? null : collector.supplier(),
                collector == null ? null : collector.finisher(),
                nextNodesTupleLifecycle);
        accumulator = collector == null ? null : collector.accumulator();
    }

    @Override
    protected final Runnable accumulate(ResultContainer_ resultContainer, UniTuple tuple) {
        return accumulator.apply(resultContainer, tuple.getFactA());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy