package org.opennms.netmgt.ncs.persistence; import org.apache.commons.lang.builder.CompareToBuilder; import org.opennms.netmgt.model.ncs.NCSComponent.DependencyRequirements; public final class ComponentIdentifier implements Comparable<ComponentIdentifier> { private final Long m_id; private final String m_type; private final String m_name; private final String m_foreignSource; private final String m_foreignId; private final DependencyRequirements m_dependencyRequirements; public ComponentIdentifier(final Long id, final String type, final String foreignSource, final String foreignId, final String name, final DependencyRequirements requirements) { m_id = id; m_type = type; m_name = name; m_foreignSource = foreignSource; m_foreignId = foreignId; m_dependencyRequirements = requirements == null? DependencyRequirements.ALL : requirements; } public Long getId() { return m_id; } public String getType() { return m_type; } public String getName() { return m_name; } public String getForeignSource() { return m_foreignSource; } public String getForeignId() { return m_foreignId; } public DependencyRequirements getDependencyRequirements() { return m_dependencyRequirements; } @Override public String toString() { return "ComponentIdentifier[" + m_type + "|" + m_name + "|" + m_foreignSource + "|" + m_foreignId + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((m_foreignId == null) ? 0 : m_foreignId.hashCode()); result = prime * result + ((m_foreignSource == null) ? 0 : m_foreignSource.hashCode()); result = prime * result + ((m_type == null) ? 0 : m_type.hashCode()); return result; } @Override public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof ComponentIdentifier)) return false; final ComponentIdentifier other = (ComponentIdentifier) obj; if (m_foreignId == null) { if (other.m_foreignId != null) return false; } else if (!m_foreignId.equals(other.m_foreignId)) { return false; } if (m_foreignSource == null) { if (other.m_foreignSource != null) return false; } else if (!m_foreignSource.equals(other.m_foreignSource)) { return false; } if (m_type == null) { if (other.m_type != null) return false; } else if (!m_type.equals(other.m_type)) { return false; } return true; } @Override public int compareTo(final ComponentIdentifier o) { return new CompareToBuilder() .append(m_id, o.getId()) .append(m_foreignId, o.getForeignId()) .append(m_foreignSource, o.getForeignSource()) .append(m_type, o.getType()) .append(m_name, o.getName()) .append(m_dependencyRequirements, o.getDependencyRequirements()) .toComparison(); } }