package eu.dnetlib.clients.is;

import java.util.Comparator;
import java.util.Objects;

import org.apache.commons.lang3.StringUtils;

public class DnetSchemaId implements Comparable<DnetSchemaId> {

	private String kind;
	private String type;

	public DnetSchemaId() {}

	public DnetSchemaId(final String kind, final String type) {
		this.kind = kind;
		this.type = type;
	}

	public String getKind() {
		return kind;
	}

	public void setKind(final String kind) {
		this.kind = kind;
	}

	public String getType() {
		return type;
	}

	public void setType(final String type) {
		this.type = type;
	}

	@Override
	public int compareTo(final DnetSchemaId o) {
		return Comparator.comparing(DnetSchemaId::getKind).thenComparing(DnetSchemaId::getType).compare(this, o);
	}

	@Override
	public int hashCode() {
		return Objects.hash(kind, type);
	}

	@Override
	public boolean equals(final Object o) {
		return (o instanceof DnetSchemaId)
				&& StringUtils.equals(kind, ((DnetSchemaId) o).getKind())
				&& StringUtils.equals(type, ((DnetSchemaId) o).getType());
	}

	@Override
	public String toString() {
		return String.format("[kind: %s, type: %s]", kind, type);
	}

}
