package org.opencb.opencga.storage.core.variant.io;
import org.opencb.opencga.storage.core.exceptions.StorageEngineException;
import org.opencb.opencga.storage.core.metadata.ExportMetadata;
import org.opencb.opencga.storage.core.metadata.StudyConfiguration;
import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor;
import java.io.IOException;
import java.net.URI;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* Created on 07/12/16.
*
* @author Jacobo Coll <jacobo167@gmail.com>
*/
public abstract class VariantImporter {
protected final VariantDBAdaptor dbAdaptor;
public VariantImporter(VariantDBAdaptor dbAdaptor) {
this.dbAdaptor = dbAdaptor;
}
public void importData(URI inputUri) throws StorageEngineException, IOException {
VariantMetadataImporter metadataImporter = new VariantMetadataImporter();
ExportMetadata exportMetadata = metadataImporter.importMetaData(inputUri, dbAdaptor.getStudyConfigurationManager());
importData(inputUri, exportMetadata);
}
public void importData(URI input, ExportMetadata remappedMetadata) throws StorageEngineException, IOException {
Map<StudyConfiguration, StudyConfiguration> map = remappedMetadata.getStudies().stream()
.collect(Collectors.toMap(Function.identity(), Function.identity()));
importData(input, remappedMetadata, map);
}
public abstract void importData(URI input, ExportMetadata remappedMetadata,
Map<StudyConfiguration, StudyConfiguration> studiesOldNewMap)
throws StorageEngineException, IOException;
}