package net.bible.android.control.versification;
import org.crosswire.jsword.passage.VerseRange;
import org.crosswire.jsword.versification.Versification;
/**
* Allow a VerseRange to be easily converted to any other.
*
* @author Martin Denham [mjdenham at gmail dot com]
* @see gnu.lgpl.License for license details.<br>
* The copyright to this program is held by it's author.
*/
public class ConvertibleVerseRange {
private VerseRange originalVerseRange;
private ConvertibleVerse startVerse;
private ConvertibleVerse endVerse;
public ConvertibleVerseRange(VerseRange verseRange) {
this.originalVerseRange = verseRange;
this.startVerse = new ConvertibleVerse(verseRange.getStart());
this.endVerse = new ConvertibleVerse(verseRange.getEnd());
}
public VerseRange getVerseRange() {
return originalVerseRange;
}
public VerseRange getVerseRange(Versification v11n) {
return new VerseRange(v11n, startVerse.getVerse(v11n), endVerse.getVerse(v11n));
}
public boolean isConvertibleTo(Versification v11n) {
return startVerse.isConvertibleTo(v11n) && endVerse.isConvertibleTo(v11n);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ConvertibleVerseRange that = (ConvertibleVerseRange) o;
return originalVerseRange.equals(that.getVerseRange(originalVerseRange.getVersification()));
}
@Override
public String toString() {
return "ConvertibleVerseRange{" +
"originalVerseRange=" + originalVerseRange +
'}';
}
@Override
public int hashCode() {
return originalVerseRange.hashCode();
}
public Versification getOriginalVersification() {
return originalVerseRange.getVersification();
}
}