package org.jabref.logic.openoffice; import java.util.Optional; public class CitationEntry implements Comparable<CitationEntry> { private final String refMarkName; private Optional<String> pageInfo; private final String context; private final Optional<String> origPageInfo; // Only used for testing... public CitationEntry(String refMarkName, String context) { this(refMarkName, context, Optional.empty()); } // Only used for testing... public CitationEntry(String refMarkName, String context, String pageInfo) { this(refMarkName, context, Optional.ofNullable(pageInfo)); } public CitationEntry(String refMarkName, String context, Optional<String> pageInfo) { this.refMarkName = refMarkName; this.context = context; this.pageInfo = pageInfo; this.origPageInfo = pageInfo; } public Optional<String> getPageInfo() { return pageInfo; } public String getRefMarkName() { return refMarkName; } public boolean pageInfoChanged() { if (pageInfo.isPresent() ^ origPageInfo.isPresent()) { return true; } if (pageInfo.isPresent()) { // This means that origPageInfo.isPresent is also true here return pageInfo.get().compareTo(origPageInfo.get()) != 0; } else { // So origPageInfo.isPresent is false here return false; } } @Override public int compareTo(CitationEntry other) { return this.refMarkName.compareTo(other.refMarkName); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o instanceof CitationEntry) { CitationEntry other = (CitationEntry) o; return this.refMarkName.equals(other.refMarkName); } return false; } @Override public int hashCode() { return this.refMarkName.hashCode(); } public String getContext() { return context; } public void setPageInfo(String trim) { pageInfo = Optional.ofNullable(trim); } }