Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.molgenis.data.vcf.importer;
  
  import java.io.File;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Set;
 
 import  org.springframework.beans.factory.annotation.Autowired;
 import  org.springframework.stereotype.Service;
 import  org.springframework.transaction.annotation.Transactional;
 
 
 @Service
 public class VcfImporterService implements ImportService
 {
 	private static final Logger LOG = LoggerFactory.getLogger(VcfImporterService.class);
 	private static final int BATCH_SIZE = 10000;
 	private static final String BACKEND = .;
 	private final DataService dataService;
 
 	@Autowired
 	public VcfImporterService(FileRepositoryCollectionFactory fileRepositoryCollectionFactoryDataService dataService,
 			PermissionSystemService permissionSystemService)
 
 	{
 		this. = fileRepositoryCollectionFactory;
 		this. = dataService;
 		this. = permissionSystemService;
 	}
 
 	@Transactional
 	public EntityImportReport doImport(RepositoryCollection sourceDatabaseAction databaseActionString defaultPackage)
 	{
 		if (databaseAction != .throw new IllegalArgumentException("Only ADD is supported");
 
 		List<EntityMetaDataaddedEntities = Lists.newArrayList();
 		try
 		{
 			Iterator<Stringit = source.getEntityNames().iterator();
 			if (it.hasNext())
 			{
 				try (Repository repo = source.getRepository(it.next());)
 				{
 					report = importVcf(repoaddedEntities);
 					List<StringentityNames = addedEntities.stream().map(emd -> emd.getName())
 							.collect(Collectors.toList());
 							entityNames);
 				}
 			}
 			else
 			{
 				report = new EntityImportReport();
 			}
 		}
 		catch (Exception e)
 		{
 			.error("Exception importing vcf"e);
 
 			// Remove created repositories
 			try
 			{
 				.getMeta().delete(addedEntities);
 			}
 			catch (Exception e1)
 			{
 				.error("Exception rollback changes"e1);
 			}
			throw new MolgenisDataException(e);
		}
		// Should not be necessary, bug in elasticsearch?
		// "All shards failed" for big datasets if this flush is not here...
		for (EntityMetaData entityMetaData : addedEntities)
		{
		}
		return report;
	}
	{
		if (it.hasNext())
		{
			String entityName = it.next();
			EntityMetaData emd = source.getRepository(entityName).getEntityMetaData();
			// Vcf entity
			boolean entityExists = .hasRepository(entityName);
			report.getSheetsImportable().put(entityName, !entityExists);
			// Available Attributes
			List<StringavailableAttributeNames = Lists.newArrayList();
			{
				availableAttributeNames.add(attr.getName());
			}
			report.getFieldsImportable().put(entityNameavailableAttributeNames);
			// Sample entity
			if (sampleAttribute != null)
			{
				String sampleEntityName = sampleAttribute.getRefEntity().getName();
				boolean sampleEntityExists = .hasRepository(sampleEntityName);
				report.getSheetsImportable().put(sampleEntityName, !sampleEntityExists);
				List<StringavailableSampleAttributeNames = Lists.newArrayList();
				for (AttributeMetaData attr : sampleAttribute.getRefEntity().getAtomicAttributes())
				{
					availableSampleAttributeNames.add(attr.getName());
				}
				report.getFieldsImportable().put(sampleEntityNameavailableSampleAttributeNames);
			}
		}
		return report;
	}
	public boolean canImport(File fileRepositoryCollection source)
	{
		for (String extension : GenericImporterExtensions.getVCF())
		{
			if (file.getName().toLowerCase().endsWith(extension))
			{
				return true;
			}
		}
		return false;
	}
	public void importVcf(File vcfFilethrows IOException
	{
		Iterator<Stringit = repositoryCollection.getEntityNames().iterator();
		if (it.hasNext())
		{
			Repository repo = repositoryCollection.getRepository(it.next());
			try
			{
			}
			finally
			{
				IOUtils.closeQuietly(repo);
			}
		}
	}
	private EntityImportReport importVcf(Repository inRepositoryList<EntityMetaDataaddedEntities)
	{
		Repository sampleRepository = null;
		String entityName = inRepository.getName();
		if (.hasRepository(entityName))
		{
			throw new MolgenisDataException("Can't overwrite existing " + entityName);
		}
		DefaultEntityMetaData entityMetaData = new DefaultEntityMetaData(inRepository.getEntityMetaData());
		entityMetaData.setBackend();
		AttributeMetaData sampleAttribute = entityMetaData.getAttribute(.);
		if (sampleAttribute != null)
		{
			DefaultEntityMetaData samplesEntityMetaData = new DefaultEntityMetaData(sampleAttribute.getRefEntity());
			samplesEntityMetaData.setBackend();
			sampleRepository = .getMeta().addEntityMeta(samplesEntityMetaData);
					Collections.singletonList(samplesEntityMetaData.getName()));
			addedEntities.add(sampleAttribute.getRefEntity());
		}
		Iterator<EntityinIterator = inRepository.iterator();
		int vcfEntityCount = 0;
		int sampleEntityCount = 0;
		List<EntitysampleEntities = new ArrayList<>();
		try (Repository outRepository = .getMeta().addEntityMeta(entityMetaData))
		{
					Collections.singletonList(entityMetaData.getName()));
			addedEntities.add(entityMetaData);
			if (sampleRepository != null)
			{
				while (inIterator.hasNext())
				{
					Entity entity = inIterator.next();
					vcfEntityCount++;
					if (samples != null)
					{
						Iterator<EntitysampleIterator = samples.iterator();
						while (sampleIterator.hasNext())
						{
							sampleEntities.add(sampleIterator.next());
							if (sampleEntities.size() == )
							{
								sampleRepository.add(sampleEntities);
								sampleEntityCount += sampleEntities.size();
								sampleEntities.clear();
							}
						}
					}
				}
				if (!sampleEntities.isEmpty())
				{
					sampleRepository.add(sampleEntities);
					sampleEntityCount += sampleEntities.size();
				}
				sampleRepository.flush();
				report.addNewEntity(sampleRepository.getName());
				if (sampleEntityCount > 0) report.addEntityCount(sampleRepository.getName(), sampleEntityCount);
			}
			outRepository.add(inRepository);
		}
		report.addNewEntity(entityName);
		if (vcfEntityCount > 0)
		{
			report.addEntityCount(entityNamevcfEntityCount);
		}
		return report;
	}
	public int getOrder()
	{
		return 10;
	}
	{
	}
	public boolean getMustChangeEntityName()
	{
		return true;
	}
	{
		return GenericImporterExtensions.getVCF();
	}
New to GrepCode? Check out our FAQ X