Skip to content

Commit

Permalink
Move SuraAyahIterator into its own class
Browse files Browse the repository at this point in the history
  • Loading branch information
ahmedre committed Jan 13, 2017
1 parent 2fe1fea commit 8b4747d
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 66 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ public static Set<String> getAyahKeysOnPage(int page, SuraAyah lowerBound, SuraA
if (upperBound != null) {
end = SuraAyah.min(end, upperBound);
}
SuraAyah.Iterator iterator = SuraAyah.getIterator(start, end);
SuraAyahIterator iterator = new SuraAyahIterator(start, end);
while (iterator.next()) {
ayahKeys.add(iterator.getSura() + ":" + iterator.getAyah());
}
Expand Down
69 changes: 5 additions & 64 deletions app/src/main/java/com/quran/labs/androidquran/data/SuraAyah.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import android.support.annotation.NonNull;

public class SuraAyah implements Comparable<SuraAyah>, Parcelable {
final public int sura;
final public int ayah;
public final int sura;
public final int ayah;
private int page = -1;

public SuraAyah(int sura, int ayah) {
Expand Down Expand Up @@ -59,21 +59,17 @@ public int compareTo(@NonNull SuraAyah another) {
@Override
public boolean equals(Object o) {
return o != null && o.getClass() == SuraAyah.class &&
((SuraAyah)o).sura == sura && ((SuraAyah)o).ayah == ayah;
((SuraAyah) o).sura == sura && ((SuraAyah) o).ayah == ayah;
}

@Override
public int hashCode() {
return 31 * sura + ayah;
return 31 * sura + ayah;
}

@Override
public String toString() {
return "("+ sura +":"+ ayah +")";
}

public static Iterator getIterator(SuraAyah start, SuraAyah end) {
return new Iterator(start, end);
return "(" + sura + ":" + ayah + ")";
}

public static SuraAyah min(SuraAyah a, SuraAyah b) {
Expand All @@ -88,59 +84,4 @@ public boolean after(SuraAyah next) {
return sura > next.sura || (sura == next.sura && ayah > next.ayah);
}

public static class Iterator {

private SuraAyah mStart;
private SuraAyah mEnd;

private boolean started;
private int mCurSura;
private int mCurAyah;

Iterator(SuraAyah start, SuraAyah end) {
// Sanity check
if (start.compareTo(end) <= 0) {
mStart = start;
mEnd = end;
} else {
mStart = end;
mEnd = start;
}
reset();
}

void reset() {
mCurSura = mStart.sura;
mCurAyah = mStart.ayah;
started = false;
}

public int getSura() {
return mCurSura;
}

public int getAyah() {
return mCurAyah;
}

public boolean hasNext() {
return !started || mCurSura < mEnd.sura || mCurAyah < mEnd.ayah;
}

public boolean next() {
if (!started) {
return started = true;
} else if (!hasNext()) {
return false;
}
if (mCurAyah < QuranInfo.getNumAyahs(mCurSura)) {
mCurAyah++;
} else {
mCurAyah = 1;
mCurSura++;
}
return true;
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package com.quran.labs.androidquran.data;

public class SuraAyahIterator {

private SuraAyah start;
private SuraAyah end;

private boolean started;
private int curSura;
private int curAyah;

public SuraAyahIterator(SuraAyah start, SuraAyah end) {
// Sanity check
if (start.compareTo(end) <= 0) {
this.start = start;
this.end = end;
} else {
this.start = end;
this.end = start;
}
reset();
}

private void reset() {
curSura = start.sura;
curAyah = start.ayah;
started = false;
}

public int getSura() {
return curSura;
}

public int getAyah() {
return curAyah;
}

private boolean hasNext() {
return !started || curSura < end.sura || curAyah < end.ayah;
}

public boolean next() {
if (!started) {
return started = true;
} else if (!hasNext()) {
return false;
}
if (curAyah < QuranInfo.getNumAyahs(curSura)) {
curAyah++;
} else {
curAyah = 1;
curSura++;
}
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.quran.labs.androidquran.common.QuranAyahInfo;
import com.quran.labs.androidquran.common.QuranText;
import com.quran.labs.androidquran.data.SuraAyah;
import com.quran.labs.androidquran.data.SuraAyahIterator;
import com.quran.labs.androidquran.data.VerseRange;
import com.quran.labs.androidquran.database.TranslationsDBAdapter;
import com.quran.labs.androidquran.model.translation.TranslationModel;
Expand Down Expand Up @@ -139,7 +140,7 @@ List<QuranText> ensureProperTranslations(@NonNull VerseRange verseRange,
// ex. ibn katheer is missing 3 records, 1 in each of suras 5, 17, and 87.
SuraAyah start = new SuraAyah(verseRange.startSura, verseRange.startAyah);
SuraAyah end = new SuraAyah(verseRange.endingSura, verseRange.endingAyah);
SuraAyah.Iterator iterator = SuraAyah.getIterator(start, end);
SuraAyahIterator iterator = new SuraAyahIterator(start, end);

int i = 0;
while (iterator.next()) {
Expand Down

0 comments on commit 8b4747d

Please sign in to comment.