#834521 : added DefaultQueryMetadata equals and hashCode

This commit is contained in:
Timo Westkämper 2011-08-26 12:35:04 +03:00
parent 83d1dd6126
commit c5b888fb4c
2 changed files with 94 additions and 0 deletions

View File

@ -17,6 +17,8 @@ import java.util.Set;
import javax.annotation.Nullable;
import org.apache.commons.lang.ObjectUtils;
import com.mysema.query.types.Expression;
import com.mysema.query.types.OrderSpecifier;
import com.mysema.query.types.ParamExpression;
@ -297,4 +299,45 @@ public class DefaultQueryMetadata implements QueryMetadata, Cloneable {
}
}
}
@Override
public boolean equals(Object o) {
if (o instanceof QueryMetadata) {
QueryMetadata q = (QueryMetadata)o;
return q.getFlags().equals(flags)
&& q.getGroupBy().equals(groupBy)
&& ObjectUtils.equals(q.getHaving(), having.getValue())
&& q.isDistinct() == distinct
&& q.isUnique() == unique
&& q.getJoins().equals(joins)
&& ObjectUtils.equals(q.getModifiers(), modifiers)
&& q.getOrderBy().equals(orderBy)
&& q.getParams().equals(params)
&& q.getProjection().equals(projection)
&& ObjectUtils.equals(q.getWhere(), where.getValue());
} else {
return false;
}
}
@Override
public int hashCode() {
final int prime = 31;
int result = prime + (distinct ? 1231 : 1237);
result = prime * result + flags.hashCode();
result = prime * result + groupBy.hashCode();
result = prime * result + having.hashCode();
result = prime * result + joins.hashCode();
result = prime * result + ((modifiers == null) ? 0 : modifiers.hashCode());
result = prime * result + orderBy.hashCode();
result = prime * result + params.hashCode();
result = prime * result + projection.hashCode();
result = prime * result + (unique ? 1231 : 1237);
result = prime * result + where.hashCode();
return result;
}
}

View File

@ -179,4 +179,55 @@ public class DefaultQueryMetadataTest {
metadata.addFlag(flag);
assertTrue(metadata.hasFlag(flag));
}
@Test
public void Equals() {
metadata.addJoin(JoinType.DEFAULT, str);
metadata.addGroupBy(str);
metadata.addHaving(str.isNotNull());
metadata.addJoin(JoinType.DEFAULT, str2);
QueryModifiers modifiers = new QueryModifiers(1l,2l);
metadata.setModifiers(modifiers);
metadata.addOrderBy(str.asc());
metadata.addProjection(str, str.append("abc"));
metadata.addWhere(str.eq("b"), str.isNotEmpty());
QueryMetadata metadata2 = new DefaultQueryMetadata();
assertFalse(metadata.equals(metadata2));
metadata2.addJoin(JoinType.DEFAULT, str);
assertFalse(metadata.equals(metadata2));
metadata2.addGroupBy(str);
assertFalse(metadata.equals(metadata2));
metadata2.addHaving(str.isNotNull());
assertFalse(metadata.equals(metadata2));
metadata2.addJoin(JoinType.DEFAULT, str2);
assertFalse(metadata.equals(metadata2));
metadata2.setModifiers(modifiers);
assertFalse(metadata.equals(metadata2));
metadata2.addOrderBy(str.asc());
assertFalse(metadata.equals(metadata2));
metadata2.addProjection(str, str.append("abc"));
assertFalse(metadata.equals(metadata2));
metadata2.addWhere(str.eq("b"), str.isNotEmpty());
assertTrue(metadata.equals(metadata2));
}
@Test
public void HashCode() {
metadata.addJoin(JoinType.DEFAULT, str);
metadata.addGroupBy(str);
metadata.addHaving(str.isNotNull());
metadata.addJoin(JoinType.DEFAULT, str2);
QueryModifiers modifiers = new QueryModifiers(1l,2l);
metadata.setModifiers(modifiers);
metadata.addOrderBy(str.asc());
metadata.addProjection(str, str.append("abc"));
metadata.addWhere(str.eq("b"), str.isNotEmpty());
metadata.hashCode();
}
@Test
public void HashCode_Empty_Metadata() {
metadata.hashCode();
}
}