
umcg.genetica.genomicboundaries.GenomicBoundariesIterator Maven / Gradle / Ivy
package umcg.genetica.genomicboundaries;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.TreeMap;
/**
*
* @author PatrickDeelen
*/
public class GenomicBoundariesIterator implements Iterator>{
private Iterator>>> chromosomeIterator;
private Iterator>> currentChromosomePositionBoundariesIterator;
private Iterator> currentChromosomeBoundariesIterator;
private ArrayList> currentChromosomePosBoundaries;
private boolean end = false;
public GenomicBoundariesIterator(HashMap>>> genomicsBoundaries) {
chromosomeIterator = genomicsBoundaries.values().iterator();
if(chromosomeIterator.hasNext()){
currentChromosomePositionBoundariesIterator = chromosomeIterator.next().values().iterator();
if(currentChromosomePositionBoundariesIterator.hasNext()){
currentChromosomePosBoundaries = currentChromosomePositionBoundariesIterator.next();
currentChromosomeBoundariesIterator = currentChromosomePosBoundaries.iterator();
}
} else {
end = true;
}
}
public boolean hasNext() {
if(end){
return false;
}
if(currentChromosomeBoundariesIterator.hasNext()){
return true;
} else {
if(currentChromosomePositionBoundariesIterator.hasNext()){
currentChromosomePosBoundaries = currentChromosomePositionBoundariesIterator.next();
currentChromosomeBoundariesIterator = currentChromosomePosBoundaries.iterator();
if(currentChromosomeBoundariesIterator.hasNext()){
return true;
}
}
else{
while(chromosomeIterator.hasNext()){
currentChromosomePositionBoundariesIterator = chromosomeIterator.next().values().iterator();
if(currentChromosomePositionBoundariesIterator.hasNext()){
currentChromosomePosBoundaries = currentChromosomePositionBoundariesIterator.next();
currentChromosomeBoundariesIterator = currentChromosomePosBoundaries.iterator();
if(currentChromosomeBoundariesIterator.hasNext()){
return true;
}
}
}
}
}
end = true;
return false;
}
public GenomicBoundary next() {
if(currentChromosomeBoundariesIterator.hasNext()){
return currentChromosomeBoundariesIterator.next();
} else {
if(currentChromosomePositionBoundariesIterator.hasNext()){
currentChromosomePosBoundaries = currentChromosomePositionBoundariesIterator.next();
currentChromosomeBoundariesIterator = currentChromosomePosBoundaries.iterator();
if(currentChromosomeBoundariesIterator.hasNext()){
return currentChromosomeBoundariesIterator.next();
}
}
else{
while(chromosomeIterator.hasNext()){
currentChromosomePositionBoundariesIterator = chromosomeIterator.next().values().iterator();
if(currentChromosomePositionBoundariesIterator.hasNext()){
currentChromosomePosBoundaries = currentChromosomePositionBoundariesIterator.next();
currentChromosomeBoundariesIterator = currentChromosomePosBoundaries.iterator();
if(currentChromosomeBoundariesIterator.hasNext()){
return currentChromosomeBoundariesIterator.next();
}
}
}
}
}
throw new NoSuchElementException();
}
public void remove() {
currentChromosomeBoundariesIterator.remove();
if(currentChromosomePosBoundaries.isEmpty()){
currentChromosomePositionBoundariesIterator.remove();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy