Removing SmartPlugDetector.
[pingpong.git] / Code / Projects / SmartPlugDetector / src / main / java / edu / uci / iotproject / comparison / seqalignment / AlignmentPricer.java
diff --git a/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/comparison/seqalignment/AlignmentPricer.java b/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/comparison/seqalignment/AlignmentPricer.java
deleted file mode 100644 (file)
index 0552279..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-package edu.uci.iotproject.comparison.seqalignment;
-
-import java.util.function.ToIntBiFunction;
-import java.util.function.ToIntFunction;
-
-/**
- * Provides a generic implementation for the calculation of the cost of aligning two elements of a sequence as part of
- * the sequence alignment algorithm (the algorithm is implemented in {@link SequenceAlignment}).
- *
- * @param <T> The type of the elements that are being aligned.
- *
- * @author Janus Varmarken {@literal <jvarmark@uci.edu>}
- * @author Rahmadi Trimananda {@literal <rtrimana@uci.edu>}
- */
-public class AlignmentPricer<T> {
-
-    /**
-     * A function that provides the cost of aligning a {@link T} with a gap.
-     */
-    private final ToIntFunction<T> mGapCostFunction;
-
-    /**
-     * A function that provides the cost of aligning a {@link T} with some other {@link T}.
-     */
-    private final ToIntBiFunction<T,T> mAlignmentCostFunction;
-
-    /**
-     * Constructs a new {@link AlignmentPricer}.
-     *
-     * @param alignmentCostFunction A function that specifies the cost of aligning a {@link T} with some other {@link T}
-     *                              (e.g., based on the values of the properties of the two instances).
-     * @param gapCostFunction A function that specifies the cost of aligning a {@link T} with a gap. Note that the
-     *                        function is free to specify <em>different</em> gap costs for different {@link T}s.
-     */
-    public AlignmentPricer(ToIntBiFunction<T,T> alignmentCostFunction, ToIntFunction<T> gapCostFunction) {
-        mAlignmentCostFunction = alignmentCostFunction;
-        mGapCostFunction = gapCostFunction;
-    }
-
-    /**
-     * Calculate the cost of aligning {@code item1} with {@code item2}. If either of the two arguments is set to
-     * {@code null}, the cost of aligning the other argument with a gap will be returned. Note that both arguments
-     * cannot be {@code null} at the same time as that translates to aligning a gap with a gap, which is pointless.
-     *
-     * @param item1 The first of the two aligned objects. Set to {@code null} to calculate the cost of aligning
-     *              {@code item2} with a gap.
-     * @param item2 The second of the two aligned objects. Set to {@code null} to calculate the cost of aligning
-     *              {@code item2} with a gap.
-     * @return The cost of aligning {@code item1} with {@code item2}.
-     */
-    public int alignmentCost(T item1, T item2) {
-        // If both arguments are null, the caller is aligning a gap with a gap which is pointless might as well remove
-        // both gaps in that case!)
-        if (item1 == null && item2 == null) {
-            throw new IllegalArgumentException("Both arguments cannot be null: you are aligning a gap with a gap!");
-        }
-        // If one item is null, it means we're aligning an int with a gap.
-        // Invoke the provided gap cost function to get the gap cost.
-        if (item1 == null) {
-            return mGapCostFunction.applyAsInt(item2);
-        }
-        if (item2 == null) {
-            return mGapCostFunction.applyAsInt(item1);
-        }
-        // If both arguments are present, we simply delegate the task of calculating the cost of aligning the two items
-        // to the provided alignment cost function.
-        return mAlignmentCostFunction.applyAsInt(item1, item2);
-    }
-
-}