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

import com.capgemini.reports.definition.r07report.data.extractor.lines.*;

/**
 * Interface for generating an index with a different algorithm for each line type.
 */
public interface TransformerR07 {

    /**
     * Creates an identifier for a {@link R07Quad}.
     *
     * @param line the line from which to create the Identifier
     * @return the {@link String} identifier
     */
    String makeIdentifier(final R07Quad line);

    /**
     * Creates an identifier for a {@link R07PartRfPart}.
     *
     * @param line the line from which to create the Identifier
     * @return the {@link String} identifier
     */
    String makeIdentifier(final R07PartRfPart line);


    /**
     * Creates an identifier for a {@link R07ReceptorLine}.
     *
     * @param line the line from which to create the Identifier
     * @return the {@link String} identifier
     */
    String makeIdentifier(final R07ReceptorLine line);

    /**
     * Creates an identifier for a {@link R07ProductGeneric}.
     *
     * @param r07ProductGeneric the line from which to create the Identifier
     * @return the {@link String} identifier
     */
    String makeIdentifier(final R07ProductGeneric r07ProductGeneric);

    /**
     * Creates an identifier for a {@link R07AltPart}.
     *
     * @param altPart the line from which to create the Identifier
     * @return the {@link String} identifier
     */
    String makeIdentifier(final R07AltPart altPart);

}
