mirror of
https://github.com/querydsl/querydsl.git
synced 2026-07-03 21:07:49 +08:00
make query flags sorted
This commit is contained in:
parent
c413914e94
commit
7e7121c363
@ -13,9 +13,6 @@
|
||||
*/
|
||||
package com.mysema.query;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@ -26,7 +23,9 @@ import com.google.common.base.Objects;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.ImmutableSortedSet;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.mysema.query.types.Expression;
|
||||
import com.mysema.query.types.ExpressionUtils;
|
||||
import com.mysema.query.types.OrderSpecifier;
|
||||
@ -68,7 +67,6 @@ public class DefaultQueryMetadata implements QueryMetadata, Cloneable {
|
||||
|
||||
private BooleanBuilder where = new BooleanBuilder();
|
||||
|
||||
// TODO : make sure this is sorted
|
||||
private Set<QueryFlag> flags = ImmutableSet.of();
|
||||
|
||||
private boolean validate = true;
|
||||
@ -77,7 +75,7 @@ public class DefaultQueryMetadata implements QueryMetadata, Cloneable {
|
||||
if (list.isEmpty()) {
|
||||
return ImmutableList.of(element);
|
||||
} else if (list.size() == 1) {
|
||||
list = new ArrayList<T>(list);
|
||||
list = Lists.newArrayList(list);
|
||||
}
|
||||
list.add(element);
|
||||
return list;
|
||||
@ -87,7 +85,17 @@ public class DefaultQueryMetadata implements QueryMetadata, Cloneable {
|
||||
if (set.isEmpty()) {
|
||||
return ImmutableSet.of(element);
|
||||
} else if (set.size() == 1) {
|
||||
set = new HashSet<T>(set);
|
||||
set = Sets.newHashSet(set);
|
||||
}
|
||||
set.add(element);
|
||||
return set;
|
||||
}
|
||||
|
||||
private static <T> Set<T> addSorted(Set<T> set, T element) {
|
||||
if (set.isEmpty()) {
|
||||
return ImmutableSet.of(element);
|
||||
} else if (set.size() == 1) {
|
||||
set = Sets.newLinkedHashSet(set);
|
||||
}
|
||||
set.add(element);
|
||||
return set;
|
||||
@ -97,7 +105,7 @@ public class DefaultQueryMetadata implements QueryMetadata, Cloneable {
|
||||
if (map.isEmpty()) {
|
||||
return ImmutableMap.of(key, value);
|
||||
} else if (map.size() == 1) {
|
||||
map = new HashMap<K,V>(map);
|
||||
map = Maps.newHashMap(map);
|
||||
}
|
||||
map.put(key, value);
|
||||
return map;
|
||||
@ -119,6 +127,12 @@ public class DefaultQueryMetadata implements QueryMetadata, Cloneable {
|
||||
validate = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addFlag(QueryFlag flag) {
|
||||
flags = addSorted(flags, flag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addGroupBy(Expression<?> o) {
|
||||
@ -214,16 +228,16 @@ public class DefaultQueryMetadata implements QueryMetadata, Cloneable {
|
||||
public QueryMetadata clone(){
|
||||
try {
|
||||
DefaultQueryMetadata clone = (DefaultQueryMetadata) super.clone();
|
||||
clone.exprInJoins = new HashSet<Expression<?>>(exprInJoins);
|
||||
clone.groupBy = ImmutableList.copyOf(groupBy);
|
||||
clone.exprInJoins = Sets.newHashSet(exprInJoins);
|
||||
clone.groupBy = Lists.newArrayList(groupBy);
|
||||
clone.having = having.clone();
|
||||
clone.joins = ImmutableList.copyOf(joins);
|
||||
clone.modifiers = new QueryModifiers(modifiers);
|
||||
clone.orderBy = ImmutableList.copyOf(orderBy);
|
||||
clone.orderBy = Lists.newArrayList(orderBy);
|
||||
clone.projection = ImmutableList.copyOf(projection);
|
||||
clone.params = ImmutableMap.copyOf(params);
|
||||
clone.params = Maps.newHashMap(params);
|
||||
clone.where = where.clone();
|
||||
clone.flags = ImmutableSortedSet.copyOf(flags);
|
||||
clone.flags = Sets.newLinkedHashSet(flags);
|
||||
return clone;
|
||||
} catch (CloneNotSupportedException e) {
|
||||
throw new QueryException(e);
|
||||
@ -331,11 +345,6 @@ public class DefaultQueryMetadata implements QueryMetadata, Cloneable {
|
||||
params = put(params, param, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addFlag(QueryFlag flag) {
|
||||
flags = add(flags, flag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<QueryFlag> getFlags() {
|
||||
return flags;
|
||||
|
||||
@ -49,7 +49,7 @@ public abstract class SerializerBase<S extends SerializerBase<S>> implements Vis
|
||||
|
||||
private String anonParamPrefix = "_";
|
||||
|
||||
private final Map<Object,String> constantToLabel = new HashMap<Object,String>();
|
||||
private final Map<Object,String> constantToLabel = new HashMap<Object,String>(4);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private final S self = (S) this;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user