This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository nuiton-utils. See https://gitlab.nuiton.org/nuiton/nuiton-utils.git commit 4d374467a0dec068d827db232bdd2ab470b70d54 Author: Arnaud Thimel <thimel@codelutin.com> Date: Tue Dec 13 16:28:13 2016 +0100 fixes #4094 Add method org.nuiton.util.pagination.PaginationResult#transform --- .../nuiton/util/pagination/PaginationResult.java | 13 +++++++++ .../util/pagination/PaginationResultTest.java | 31 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/main/java/org/nuiton/util/pagination/PaginationResult.java b/src/main/java/org/nuiton/util/pagination/PaginationResult.java index 9ab5dbf..d46b9e3 100644 --- a/src/main/java/org/nuiton/util/pagination/PaginationResult.java +++ b/src/main/java/org/nuiton/util/pagination/PaginationResult.java @@ -22,7 +22,10 @@ package org.nuiton.util.pagination; * #L% */ +import com.google.common.base.Function; import com.google.common.base.Preconditions; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import java.io.Serializable; import java.util.LinkedList; @@ -178,4 +181,14 @@ public class PaginationResult<O> implements Serializable { return result; } + /** + * Creates an instance of PaginationResult transforming the current one using the given function + */ + public <T> PaginationResult<T> transform(Function<? super O, ? extends T> function) { + Iterable<T> transformed = Iterables.transform(getElements(), function); + List<T> transformedElements = Lists.newLinkedList(transformed); + PaginationResult<T> result = PaginationResult.of(transformedElements, getCount(), getCurrentPage()); + return result; + } + } diff --git a/src/test/java/org/nuiton/util/pagination/PaginationResultTest.java b/src/test/java/org/nuiton/util/pagination/PaginationResultTest.java index d21edea..d41c6cf 100644 --- a/src/test/java/org/nuiton/util/pagination/PaginationResultTest.java +++ b/src/test/java/org/nuiton/util/pagination/PaginationResultTest.java @@ -25,6 +25,7 @@ package org.nuiton.util.pagination; import java.util.Arrays; import java.util.List; +import com.google.common.base.Function; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -199,4 +200,34 @@ public class PaginationResultTest { } + @Test + public void testTransform() { + String str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus " + + "tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor"; + + List<String> list = Arrays.asList(str.split(" ")); + Assert.assertEquals(22, list.size()); + + final Function<String, Integer> getWordLength = new Function<String, Integer>() { + @Override + public Integer apply(String input) { + return input.length(); + } + }; + + PaginationResult<String> words = PaginationResult.fromFullList(list, PaginationParameter.ALL); + + PaginationResult<Integer> wordLengths = words.transform(getWordLength); + Assert.assertEquals(22, wordLengths.getElements().size()); + Assert.assertEquals(22, wordLengths.getCount()); + Assert.assertEquals(PaginationParameter.ALL, wordLengths.getCurrentPage()); + + // consectetur + Assert.assertEquals("consectetur", words.getElements().get(5)); + Assert.assertEquals("consectetur".length(), wordLengths.getElements().get(5).intValue()); + // elit. + Assert.assertEquals("elit.", words.getElements().get(7)); + Assert.assertEquals("elit.".length(), wordLengths.getElements().get(7).intValue()); + } + } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.