Package com.googlecode.gaal.analysis.impl

Source Code of com.googlecode.gaal.analysis.impl.EmbeddedContextExtractor$ContextIterator

package com.googlecode.gaal.analysis.impl;

import java.util.Iterator;
import java.util.NoSuchElementException;

import com.googlecode.gaal.analysis.api.Filter;
import com.googlecode.gaal.analysis.api.IntervalSetBuilder;
import com.googlecode.gaal.data.api.IntervalSet;
import com.googlecode.gaal.data.api.SymbolTable;
import com.googlecode.gaal.suffix.api.EmbeddedSuffixTree.EmbeddedInterval;
import com.googlecode.gaal.suffix.api.LinearizedSuffixTree;
import com.googlecode.gaal.suffix.api.LinearizedSuffixTree.BinaryInterval;

public class EmbeddedContextExtractor implements Iterable<EmbeddedInterval> {
    private final IntervalSet<BinaryInterval> intervalSet;
    private final EmbeddedIntervalExtractor intervalContextExtractor;

    public EmbeddedContextExtractor(LinearizedSuffixTree lst, SymbolTable<?> symbolTable,
            IntervalSetBuilder intervalSetBuilder, Filter<EmbeddedInterval> contextFilter, int windowSize) {
        this.intervalSet = intervalSetBuilder.buildIntervalSet(lst);
        this.intervalContextExtractor = new EmbeddedIntervalExtractor(lst, symbolTable, intervalSetBuilder,
                contextFilter, windowSize);
    }

    @Override
    public Iterator<EmbeddedInterval> iterator() {
        return new ContextIterator();
    }

    private class ContextIterator implements Iterator<EmbeddedInterval> {
        private final Iterator<BinaryInterval> iterator = intervalSet.iterator();
        private Iterator<EmbeddedInterval> intervalContextIterator;
        private EmbeddedInterval next = advance();

        @Override
        public boolean hasNext() {
            return next != null;
        }

        @Override
        public EmbeddedInterval next() {
            if (next == null)
                throw new NoSuchElementException();
            EmbeddedInterval context = next;
            next = advance();
            return context;
        }

        @Override
        public void remove() {
            throw new UnsupportedOperationException();
        }

        private EmbeddedInterval advance() {
            while (intervalContextIterator == null || !intervalContextIterator.hasNext()) {
                if (iterator.hasNext()) {
                    intervalContextIterator = intervalContextExtractor.iterator(iterator.next());
                } else {
                    return null;
                }
            }
            return intervalContextIterator.next();
        }
    };
}
TOP

Related Classes of com.googlecode.gaal.analysis.impl.EmbeddedContextExtractor$ContextIterator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.