package gutenberg.itext;
import java.util.Arrays;
/**
* @author <a href="http://twitter.com/aloyer">@aloyer</a>
*/
public class PageInfos {
public enum Matter {
Front,
Main,
Back
}
private final int rawPageNumber;
private final String formattedPageNumber;
private final Matter matter;
private final String[] sectionTitles;
public PageInfos(int rawPageNumber,
String formattedPageNumber,
Matter matter,
String[] sectionTitles) {
this.rawPageNumber = rawPageNumber;
this.formattedPageNumber = formattedPageNumber;
this.matter = matter;
this.sectionTitles = sectionTitles;
}
public String getFormattedPageNumber() {
return formattedPageNumber;
}
public int getRawPageNumber() {
return rawPageNumber;
}
public boolean is(Matter matter) {
return this.matter == matter;
}
public String[] sectionTitles() {
return sectionTitles;
}
public String chapterTitle() {
return sectionTitles[1];
}
public String sectionTitle() {
String title = null;
for (String sectionTitle : sectionTitles) {
if (sectionTitle != null)
title = sectionTitle;
}
return title;
}
@Override
public String toString() {
return "PageInfos{" +
"raw: " + rawPageNumber +
", formatted: '" + formattedPageNumber + '\'' +
", matter=" + matter +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (!(o instanceof PageInfos))
return false;
PageInfos pageInfos = (PageInfos) o;
return matter == pageInfos.matter
&& rawPageNumber == pageInfos.rawPageNumber
&& formattedPageNumber.equals(pageInfos.formattedPageNumber)
&& Arrays.equals(sectionTitles, pageInfos.sectionTitles);
}
@Override
public int hashCode() {
int result = rawPageNumber;
result = 31 * result + (formattedPageNumber != null ? formattedPageNumber.hashCode() : 0);
result = 31 * result + matter.hashCode();
return result;
}
}