All Downloads are FREE. Search and download functionalities are using the official Maven repository.

umcg.genetica.io.regulomedb.RegulomeDbIterator Maven / Gradle / Ivy

There is a newer version: 1.0.7
Show newest version
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package umcg.genetica.io.regulomedb;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 *
 * @author Patrick Deelen
 */
public class RegulomeDbIterator implements Iterator {
	
	private Iterator regulomeDbFilesIterator;
	private BufferedReader regulomeDbFileReader = null;
	private boolean hasNext;
	private RegulomeDbEntry next;
	
	public RegulomeDbIterator(RegulomeDbFile regulomeDbFile) {
		
		ArrayList regulomeDbFiles = new ArrayList(1);
		regulomeDbFiles.add(regulomeDbFile);
		regulomeDbFilesIterator = regulomeDbFiles.iterator();
		
		try {
			
			if(regulomeDbFilesIterator.hasNext()){
				regulomeDbFileReader = new BufferedReader(new FileReader(regulomeDbFilesIterator.next().getRegulomeDbFile()));
				loadNext();
			} else {
				hasNext = false;
				next = null;
			}
			
		} catch (Exception ex) {
			throw new RuntimeException(ex);
		}
		
	}

	public RegulomeDbIterator(Collection regulomeDbFiles) {
		
		this.regulomeDbFilesIterator = regulomeDbFiles.iterator();
		
		try {
			
			if(regulomeDbFilesIterator.hasNext()){
				regulomeDbFileReader = new BufferedReader(new FileReader(regulomeDbFilesIterator.next().getRegulomeDbFile()));
				loadNext();
			} else {
				hasNext = false;
				next = null;
			}
			
		} catch (Exception ex) {
			throw new RuntimeException(ex);
		}
		
	}
	
	

	@Override
	public boolean hasNext() {
		return hasNext;
	}

	@Override
	public RegulomeDbEntry next() {
		
		RegulomeDbEntry current = next;
		
		try {
			loadNext();
		} catch (Exception ex) {
			throw new RuntimeException(ex);
		}
		
		return current;
		
	}

	@Override
	public void remove() {
		throw new UnsupportedOperationException("Not supported ever.");
	}

	private void loadNext() throws IOException,Exception{
		
		String line = regulomeDbFileReader.readLine();
		
		if(line == null){
			while(regulomeDbFilesIterator.hasNext()){
				regulomeDbFileReader = new BufferedReader(new FileReader(regulomeDbFilesIterator.next().getRegulomeDbFile()));
				line = regulomeDbFileReader.readLine();
				if(line == null){
					continue;
				} else {
					hasNext = true;
					next = new RegulomeDbEntry(line);
					return;
				}
			}
			hasNext = false;
			next = null;
		} else {
			hasNext = true;
			next = new RegulomeDbEntry(line);
		}
		
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy