package com.capgemini.reports.bomlineholder.visitor;

import com.capgemini.reports.bomlineholder.BOMLineHolder;

import java.util.List;
import java.util.Map;

/**
 * Visitor of {@link BOMLineHolder}.<br>
 * Produces a {@link List} of {@link Map}s with specified Key and Value types.
 *
 * @param <K> the Keys Type
 * @param <V> the Values Type
 */
public interface IBOMLineHolderVisitor<K, V> extends IBOMLineHolderExtractor<List<Map<K, V>>> {

    /**
     * Visitor which can used the BOMLineHolder properties to make a chosen report.
     *
     * @param aBomLineHolder BOMLineHolder
     * @return ArrayList<Map<K, V>>
     */
    @Override
    List<Map<K, V>> visitTopReceptorBom(final BOMLineHolder aBomLineHolder);

}
