
org.mydotey.scf.labeled.DefaultLabeledKey Maven / Gradle / Ivy
package org.mydotey.scf.labeled;
import java.util.Objects;
/**
* @author koqizhao
*
* May 17, 2018
*/
@SuppressWarnings("unchecked")
public class DefaultLabeledKey implements LabeledKey, Cloneable {
private K _key;
private PropertyLabels _labels;
protected DefaultLabeledKey() {
}
@Override
public K getKey() {
return _key;
}
@Override
public PropertyLabels getLabels() {
return _labels;
}
@Override
public DefaultLabeledKey clone() {
try {
return (DefaultLabeledKey) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
@Override
public String toString() {
return String.format("%s { key: %s, labels: %s }", getClass().getSimpleName(), getKey(), getLabels());
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((_key == null) ? 0 : _key.hashCode());
result = prime * result + ((_labels == null) ? 0 : _labels.hashCode());
return result;
}
@Override
public boolean equals(Object other) {
if (this == other)
return true;
if (other == null)
return false;
if (getClass() != other.getClass())
return false;
DefaultLabeledKey labeledKey = (DefaultLabeledKey) other;
if (!Objects.equals(_key, labeledKey._key))
return false;
if (!Objects.equals(_labels, labeledKey._labels))
return false;
return true;
}
public static class Builder extends DefaultAbstractBuilder>
implements LabeledKey.Builder {
}
public static abstract class DefaultAbstractBuilder>
implements LabeledKey.AbstractBuilder {
private DefaultLabeledKey _labeledKey;
protected DefaultAbstractBuilder() {
_labeledKey = newLabeledKey();
}
protected DefaultLabeledKey newLabeledKey() {
return new DefaultLabeledKey<>();
}
protected DefaultLabeledKey getLabeledKey() {
return _labeledKey;
}
@Override
public B setKey(K key) {
getLabeledKey()._key = key;
return (B) this;
}
@Override
public B setPropertyLabels(PropertyLabels labels) {
getLabeledKey()._labels = labels;
return (B) this;
}
@Override
public DefaultLabeledKey build() {
Objects.requireNonNull(getLabeledKey()._key, "key is null");
Objects.requireNonNull(getLabeledKey()._labels, "labels is null");
return _labeledKey.clone();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy