package org.netbeans.gradle.project.properties; import java.util.Objects; public final class DomElementKey implements Comparable<DomElementKey> { private final String name; private final String namespace; public DomElementKey(String elementName, String namespace) { this.name = elementName; this.namespace = namespace; } public String getName() { return name; } public String getNamespace() { return namespace; } @Override public int hashCode() { int hash = 7; hash = 31 * hash + Objects.hashCode(name); hash = 31 * hash + Objects.hashCode(namespace); return hash; } @Override public boolean equals(Object obj) { if (obj == null) return false; if (getClass() != obj.getClass()) return false; final DomElementKey other = (DomElementKey)obj; return Objects.equals(this.name, other.name) && Objects.equals(this.namespace, other.namespace); } private int nullSafeStrCmp(String str1, String str2) { if (str1 == null) { return str2 != null ? -1 : 0; } else if (str2 == null) { return 1; } return str1.compareTo(str2); } @Override public int compareTo(DomElementKey o) { int namespaceCmp = nullSafeStrCmp(namespace, o.namespace); if (namespaceCmp != 0) { return namespaceCmp; } return nullSafeStrCmp(name, o.name); } }