package org.opennms.core.criteria;
public class Order {
public static interface OrderVisitor {
public void visitAttribute(final String attribute);
public void visitAscending(final boolean ascending);
}
private final String m_attribute;
private final boolean m_ascending;
public Order(final String attribute, boolean ascending) {
m_attribute = attribute;
m_ascending = ascending;
}
public void visit(final OrderVisitor visitor) {
visitor.visitAttribute(getAttribute());
visitor.visitAscending(asc());
}
public String getAttribute() {
return m_attribute;
}
public boolean asc() {
return m_ascending;
}
public boolean desc() {
return !m_ascending;
}
public static Order asc(final String attribute) {
return new Order(attribute, true);
}
public static Order desc(final String attribute) {
return new Order(attribute, false);
}
/* we don't include m_ascending since a single order attribute should only be used once */
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
// result = prime * result + (m_ascending ? 1231 : 1237);
result = prime * result + ((m_attribute == null) ? 0 : m_attribute.hashCode());
return result;
}
/* we don't include m_ascending since a single order attribute should only be used once */
@Override
public boolean equals(final Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (!(obj instanceof Order)) return false;
final Order other = (Order) obj;
// if (m_ascending != other.m_ascending) return false;
if (m_attribute == null) {
if (other.m_attribute != null) return false;
} else if (!m_attribute.equals(other.m_attribute)) {
return false;
}
return true;
}
@Override
public String toString() {
return "Order [attribute=" + m_attribute + ", ascending=" + m_ascending + "]";
}
}