package com.capgemini.reports.definition.r07report.data.extractor.lines;


/**
 * Interface used in the R07 for comparing lines to each other.
 */
public interface ComparableLine {
    /**
     * Compares a line to any other {@link ComparableLine}.
     *
     * @param other the other line
     * @return the difference
     */
    int compareLineContent(final ComparableLine other);

    /**
     * Compares a line a to a {@link R07Quad}.
     *
     * @param other the other line
     * @return the difference
     */
    int compareContent(final R07Quad other);

    /**
     * Compares a line a to a {@link R07PartRfPart}.
     *
     * @param other the other line
     * @return the difference
     */
    int compareContent(final R07PartRfPart other);

    /**
     * Compares a line a to a {@link R07ReceptorLine}.
     *
     * @param other the other line
     * @return the difference
     */
    int compareContent(final R07ReceptorLine other);

    /**
     * Compares a line a to a {@link R07ProductGeneric}.
     *
     * @param other the other line
     * @return the difference
     */
    int compareContent(final R07ProductGeneric other);

    /**
     * Compares a line a to a {@link R07AltPart}.
     *
     * @param other the other line
     * @return the difference
     */
    int compareContent(final R07AltPart other);


}
