package ru.hflabs.rcd.model.path;
import lombok.Getter;
import lombok.Setter;
import ru.hflabs.rcd.model.Named;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import static ru.hflabs.util.core.EqualsUtil.lowerCaseEquals;
import static ru.hflabs.util.core.EqualsUtil.lowerCaseHashCode;
/**
* Класс <class>MetaFieldNamedPath</class> содержит информацию, уникально идентифицирующую МЕТА-поле справочника
*
* @see ru.hflabs.rcd.model.document.MetaField
* @see Named
*/
@Getter
@Setter
public class MetaFieldNamedPath extends DictionaryNamedPath {
private static final long serialVersionUID = -5827186400778971005L;
/*
* Название полей с идентификаторами
*/
public static final String FIELD_NAME = "fieldName";
/** Имя поля справочника */
@NotNull
@Size(min = Named.NAME_MIN_SIZE, max = Named.NAME_MAX_SIZE)
private String fieldName;
public MetaFieldNamedPath() {
// default constructor
}
public MetaFieldNamedPath(DictionaryNamedPath namedPath, String fieldName) {
this(namedPath.getGroupName(), namedPath.getDictionaryName(), fieldName);
}
public MetaFieldNamedPath(String groupName, String dictionaryName, String fieldName) {
super(groupName, dictionaryName);
setFieldName(fieldName);
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + lowerCaseHashCode(fieldName);
return result;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
MetaFieldNamedPath that = (MetaFieldNamedPath) o;
return lowerCaseEquals(fieldName, that.fieldName) && super.equals(o);
}
@Override
public String toString() {
return String.format("%s[%s]", super.toString(), fieldName);
}
}