package org.dayatang.domain.internal.criterion;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.dayatang.domain.NamedParameters;
import org.dayatang.utils.Assert;
/**
* 判断某个属性的值是否包含指定文本内容的查询条件
* @author yyang
*/
public class ContainsTextCriterion extends BasicCriterion {
private final String value;
/**
* 创建查询条件
* @param propName 属性名
* @param value 要包含在属性值中的子字符串
*/
public ContainsTextCriterion(String propName, String value) {
super(propName);
Assert.notBlank(propName, "Property name is null or blank!");
Assert.notBlank(value, "value is null or blank!");
this.value = value;
}
/**
* 获取匹配值
* @return 匹配值
*/
public String getValue() {
return value;
}
@Override
public String toQueryString() {
return getPropNameWithAlias() + " like " + getParamNameWithColon();
}
@Override
public NamedParameters getParameters() {
return NamedParameters.create().add(getParamName(), "%" + value + "%");
}
@Override
public boolean equals(final Object other) {
if (this == other) {
return true;
}
if (!(other instanceof ContainsTextCriterion)) {
return false;
}
ContainsTextCriterion that = (ContainsTextCriterion) other;
return new EqualsBuilder()
.append(this.getPropName(), that.getPropName())
.append(value, that.value).isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37).append(getPropName()).append(value).toHashCode();
}
@Override
public String toString() {
return getPropName() + " like '*" + value + "*'";
}
}