package org.osmtools.osmchange; import java.text.DecimalFormat; import java.util.Iterator; public class SequenceIterator implements Iterator<Sequence>, Iterable<Sequence> { private static final String BASE_STATE_URL = "http://planet.openstreetmap.org/replication/"; private DecimalFormat df = new DecimalFormat("000"); private Granularity granularity; private int knownSequence; private int osmSequence; public SequenceIterator(Granularity granularity, int knownSequence, int osmSequence) { this.granularity = granularity; this.knownSequence = knownSequence; this.osmSequence = osmSequence; } @Override public boolean hasNext() { return knownSequence < osmSequence; } @Override public Sequence next() { knownSequence++; State state = StateSplitter.split(knownSequence); String url = BASE_STATE_URL + granularity.name() + "/" + df.format(state.getA()) + "/" + df.format(state.getB()) + "/" + df.format(state.getC()) + ".osc.gz"; return new Sequence(knownSequence, url); } @Override public void remove() { throw new RuntimeException("not implemented"); } @Override public Iterator<Sequence> iterator() { return this; } }