package com.capgemini.reports.reports;

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

import com.capgemini.reports.bomlineholder.BOMLineHolder;

/**
 * Interface Generic Report Generator using the Visitor pattern.
 * 
 * @param <K> key
 * @param <V> value
 */
public interface IReportVisitor<K, V> {

    /**
     * visits a report and presents a result that the printer can understand.
     * 
     * @param holder the top {@link BOMLineHolder}
     * @return the report contents
     */
    List<Map<String, ?>> visitReport(final BOMLineHolder holder);

}
