package example.domain;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable;
import java.util.UUID;
public final class Identity implements Serializable {
public static final Identity NEW = new Identity("new");
private final String value;
public Identity() {
value = UUID.randomUUID().toString();
}
private Identity(String value) {
this.value = value;
}
public static Identity fromValue(String value) {
if (StringUtils.isEmpty(value)) {
throw new IllegalArgumentException("Cannot create Identity from empty value");
}
if (NEW.getValue().equalsIgnoreCase(value)) {
return NEW;
}
return new Identity(value);
}
public boolean isNew() {
return NEW.equals(this);
}
public String getValue() {
return value;
}
public int hashCode() {
return value.hashCode();
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof Identity) {
Identity other = (Identity) obj;
return this.value.equals(other.value);
}
return false;
}
public String toString() {
return getValue();
}
}