/**
* Copyright (C) 2013 Isabel Drost-Fromm
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.isabeldrostfromm.sof;
import java.util.Iterator;
/**
* Iteration logic given a method that parses documents from an internal
* document provider.
* */
public abstract class ProviderIterator implements Iterator<Example> {
protected Example parsed;
protected abstract Example parse();
@Override
public boolean hasNext() {
if (this.parsed != null) {
return true;
}
this.parsed = parse();
if (this.parsed != null)
return true;
return false;
}
@Override
public Example next() {
if (this.parsed == null) {
this.parsed = parse();
}
Example current = this.parsed;
this.parsed = null;
return current;
}
@Override
public void remove() {
throw new UnsupportedOperationException(
"No removal of documents from search results.");
}
}