package com.illumina.basespace.igv;
import java.util.List;
import java.util.UUID;
import org.broad.igv.feature.genome.Genome;
import org.broad.igv.track.Track;
import com.illumina.basespace.ApiClient;
import com.illumina.basespace.entity.File;
import com.illumina.basespace.entity.FileCompact;
import com.illumina.basespace.igv.LocalDownloadLocatorFactory.LocalDownloadTrackLoader;
public class LocalDownloadLocatorFactory implements IResourceLocatorFactory<LocalDownloadTrackLoader>
{
@Override
public LocalDownloadTrackLoader newLocator(UUID clientId,ApiClient client,File check, List<FileCompact> filesInDirectory)
{
String nameLower = check.getName().toLowerCase();
if (nameLower.endsWith(".bed") || nameLower.endsWith(".tdf") || nameLower.endsWith(".bw") )
{
return new LocalDownloadTrackLoader(clientId, check);
}
return null;
}
public class LocalDownloadTrackLoader extends BaseSpaceResourceLocator implements IBaseSpaceTrackLoader<LocalDownloadTrackLoader>
{
public LocalDownloadTrackLoader(UUID clientId, File file)
{
super(clientId, file, null); //".bed"
}
@Override
public boolean loadTrack(LocalDownloadTrackLoader locator, List<Track> newTracks, Genome genome)
{
try
{
//Download vcf.gz
java.io.File localFile = getLocalFile(locator.getFile());
locator.setPath(localFile.toString());
//RETURN FALSE BECAUSE WE WANT DEFAULT IGV TO PERFORM THE LOAD
return false;
}
catch (Throwable t)
{
throw new RuntimeException("Error loading " + locator.getFile().getName(), t);
}
}
// the local file has the file ID prefixed - this gives it a nicer display name
@Override
public String getTrackName()
{
return getFileName();
}
}
}