package eu.dnetlib.iis.wf.importer.infospace.converter;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import org.apache.avro.specific.SpecificRecord;
import eu.dnetlib.data.proto.OafProtos.Oaf;
import eu.dnetlib.data.proto.OafProtos.OafEntity;
import eu.dnetlib.data.proto.OafProtos.OafRel;
import eu.dnetlib.iis.wf.importer.infospace.QualifiedOafJsonRecord;
/**
* {@link OafEntity} with associated {@link OafRel} relation objects to avro converter.
*
* @author mhorst
*
* @param <T> avro record type to be produced
*/
public interface OafEntityWithRelsToAvroConverter<T extends SpecificRecord> {
/**
* Builds avro objects from {@link Oaf} entity.
*
* @param oafEntity {@link Oaf} main entity
* @param relations relations associated with main entity. Records are mapped by column family.
* @return avro object
* @throws IOException
*/
T convert(OafEntity oafEntity, Map<String, List<QualifiedOafJsonRecord>> relations) throws IOException;
}