package org.linkeddatafragments.model;
import java.util.Iterator;
import org.apache.jena.graph.Triple;
import org.linkeddatafragments.client.LinkedDataFragmentsClient;
/**
* Created by ldevocht on 4/25/14.
*/
public class LinkedDataFragmentIterator implements Iterator<LinkedDataFragment> {
protected final LinkedDataFragment baseFragment;
protected final Triple tripleTemplate;
protected final LinkedDataFragmentsClient ldfClient;
protected LinkedDataFragment currentFragment;
public LinkedDataFragmentIterator(LinkedDataFragment ldf, LinkedDataFragmentsClient c) {
baseFragment = ldf;
tripleTemplate = ldf.tripleMatch;
currentFragment = baseFragment;
ldfClient = c;
}
public static LinkedDataFragmentIterator create(LinkedDataFragment ldf, LinkedDataFragmentsClient c) {
return new LinkedDataFragmentIterator(ldf, c);
}
@Override
public boolean hasNext() {
return currentFragment.hasNextUrl();
}
@Override
public LinkedDataFragment next() {
try {
currentFragment = ldfClient.getFragment("GET", currentFragment.getNextUrl(), this.tripleTemplate);
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
return currentFragment;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}