blob: f536a51dad92490c9282da695cc24a43b6df8fc6 [file] [log] [blame] [raw]
package protocolsupport.api.utils;
import java.util.Objects;
import org.apache.commons.lang3.Validate;
import protocolsupport.utils.reflection.ReflectionUtils;
public class ProfileProperty {
protected final String name;
protected final String value;
protected final String signature;
public ProfileProperty(String name, String value, String signature) {
Validate.notNull(name, "Name cannot be null");
Validate.notNull(value, "Value cannot be null");
this.name = name;
this.value = value;
this.signature = signature;
}
public ProfileProperty(String name, String value) {
this(name, value, null);
}
/**
* Returns name of the property
*
* @return name of the property
*/
public String getName() {
return name;
}
/**
* Returns value of the property
*
* @return value of the property
*/
public String getValue() {
return value;
}
/**
* Returns signature of the property or null if doesn't have one
*
* @return signature of the property or null
*/
public String getSignature() {
return signature;
}
/**
* Checks if property has signature
*
* @return true if property has signature
*/
public boolean hasSignature() {
return signature != null;
}
@Override
public String toString() {
return ReflectionUtils.toStringAllFields(this);
}
@Override
public int hashCode() {
int nvHash = getName().hashCode() ^ getValue().hashCode();
return hasSignature() ? nvHash ^ getSignature().hashCode() : nvHash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
ProfileProperty otherProperty = (ProfileProperty) obj;
return
getName().equals(otherProperty.getName()) &&
getValue().equalsIgnoreCase(otherProperty.getValue()) &&
Objects.equals(getSignature(), otherProperty.getSignature());
}
}