diff --git a/querydsl-core/src/main/java/com/querydsl/core/group/Group.java b/querydsl-core/src/main/java/com/querydsl/core/group/Group.java index c309be280..4cff1719d 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/group/Group.java +++ b/querydsl-core/src/main/java/com/querydsl/core/group/Group.java @@ -13,10 +13,7 @@ */ package com.querydsl.core.group; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Set; +import java.util.*; import com.querydsl.core.types.Expression; @@ -67,6 +64,17 @@ public interface Group { * @return Set of values in this group */ Set getSet(Expression expr); + + /** + * Returns a SortedSet of values in this group. + * + * @param Value type of Set + * @param expr Grouped expression + * @throws NoSuchElementException if group is undefined. + * @throws ClassCastException if group is of different type (e.g. List) + * @return Set of values in this group + */ + SortedSet getSortedSet(Expression expr); /** * Returns a List of values in this group. @@ -91,5 +99,18 @@ public interface Group { * @return Map of values in this group */ Map getMap(Expression key, Expression value); + + /** + * Returns a SortedMap of values in this group + * + * @param Key type of result Map + * @param Value type of result Map + * @param key Key expression + * @param value Value expression + * @throws NoSuchElementException if group is undefined. + * @throws ClassCastException if group is of different type (e.g. List) + * @return Map of values in this group + */ + SortedMap getSortedMap(Expression key, Expression value); } \ No newline at end of file diff --git a/querydsl-core/src/main/java/com/querydsl/core/group/GroupImpl.java b/querydsl-core/src/main/java/com/querydsl/core/group/GroupImpl.java index 222a5386e..af113ae42 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/group/GroupImpl.java +++ b/querydsl-core/src/main/java/com/querydsl/core/group/GroupImpl.java @@ -13,12 +13,7 @@ */ package com.querydsl.core.group; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Set; +import java.util.*; import com.querydsl.core.types.Expression; import com.querydsl.core.types.Operation; @@ -104,6 +99,16 @@ class GroupImpl implements Group { throw new NoSuchElementException("GMap(" + key + ", " + value + ")"); } + @Override + public SortedMap getSortedMap(Expression key, Expression value) { + for (QPair pair : maps) { + if (pair.equals(key, value)) { + return (SortedMap) groupCollectorMap.get(pair).get(); + } + } + throw new NoSuchElementException("GMap(" + key + ", " + value + ")"); + } + @Override public T getOne(Expression expr) { return this.get(expr); @@ -114,6 +119,11 @@ class GroupImpl implements Group { return this.>get(expr); } + @Override + public SortedSet getSortedSet(Expression expr) { + return this.>get(expr); + } + @Override public Object[] toArray() { List arr = new ArrayList(groupCollectors.size());