package japicmp.model; import com.google.common.base.Optional; import japicmp.util.OptionalHelper; import javax.xml.bind.annotation.XmlAttribute; public class JApiModifier<T> { private final Optional<T> oldModifier; private final Optional<T> newModifier; private final JApiChangeStatus changeStatus; public JApiModifier(Optional<T> oldModifier, Optional<T> newModifier, JApiChangeStatus changeStatus) { this.oldModifier = oldModifier; this.newModifier = newModifier; this.changeStatus = changeStatus; } public Optional<T> getOldModifier() { return oldModifier; } public Optional<T> getNewModifier() { return newModifier; } @XmlAttribute(name = "changeStatus") public JApiChangeStatus getChangeStatus() { return changeStatus; } @XmlAttribute(name = "oldValue") public String getValueOld() { return OptionalHelper.optionalToString(this.oldModifier); } @XmlAttribute(name = "newValue") public String getValueNew() { return OptionalHelper.optionalToString(this.newModifier); } public boolean hasChangedFromTo(T oldValue, T newValue) { boolean hasChanged = false; if (oldModifier.isPresent() && newModifier.isPresent()) { if (oldModifier.get() == oldValue && newModifier.get() == newValue) { hasChanged = true; } } return hasChanged; } public boolean hasChangedFrom(T oldValue) { boolean hasChanged = false; if (oldModifier.isPresent() && newModifier.isPresent()) { if (oldModifier.get() == oldValue && newModifier.get() != oldValue) { hasChanged = true; } } else if (oldModifier.isPresent()) { if (oldModifier.get() == oldValue) { hasChanged = true; } } else { hasChanged = true; } return hasChanged; } public boolean hasChangedTo(T value) { boolean hasChangedTo = false; if (newModifier.isPresent()) { T newValue = newModifier.get(); if (value == newValue) { hasChangedTo = true; } } return hasChangedTo; } }