aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/internal/docx
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-26 09:27:45 +0000
committerMichael Williamson <mike@zwobble.org>2016-03-26 09:27:45 +0000
commitabbcc3915fa783c648436ef52e15da923a246dd1 (patch)
tree2db501fd1a82dc608217623cc53b8a6b13f71bb5 /src/main/java/org/zwobble/mammoth/internal/docx
parent55ec6fed7278825bee4b6db24965b69b9c496ed5 (diff)
Lazily combine warnings in results
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal/docx')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/ReadResult.java32
2 files changed, 15 insertions, 21 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
index 9951cbc..0edc7a7 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
@@ -18,7 +18,7 @@ import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
import static org.zwobble.mammoth.internal.docx.ReadResult.EMPTY_SUCCESS;
import static org.zwobble.mammoth.internal.docx.ReadResult.success;
-import static org.zwobble.mammoth.internal.util.MammothSets.set;
+import static org.zwobble.mammoth.internal.util.MammothLists.list;
import static org.zwobble.mammoth.internal.util.MammothStrings.trimLeft;
public class BodyXmlReader {
@@ -213,7 +213,7 @@ public class BodyXmlReader {
} else {
return new InternalResult<>(
Optional.of(new Style(styleId, Optional.empty())),
- set(styleType + " style with ID " + styleId + " was referenced but not defined in the document"));
+ list(styleType + " style with ID " + styleId + " was referenced but not defined in the document"));
}
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/ReadResult.java b/src/main/java/org/zwobble/mammoth/internal/docx/ReadResult.java
index 8f3053d..95b886f 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/ReadResult.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/ReadResult.java
@@ -1,32 +1,26 @@
package org.zwobble.mammoth.internal.docx;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
import org.zwobble.mammoth.internal.documents.DocumentElement;
import org.zwobble.mammoth.internal.results.InternalResult;
import java.util.List;
-import java.util.Set;
import java.util.function.BiFunction;
import java.util.function.Function;
+import static org.zwobble.mammoth.internal.util.MammothIterables.lazyConcat;
+import static org.zwobble.mammoth.internal.util.MammothIterables.lazyFlatMap;
+import static org.zwobble.mammoth.internal.util.MammothLists.eagerFlatMap;
import static org.zwobble.mammoth.internal.util.MammothLists.list;
-import static org.zwobble.mammoth.internal.util.MammothSets.set;
public class ReadResult {
public static final ReadResult EMPTY_SUCCESS = success(list());
public static ReadResult concat(Iterable<ReadResult> results) {
- ImmutableList.Builder<DocumentElement> elements = ImmutableList.builder();
- ImmutableList.Builder<DocumentElement> extra = ImmutableList.builder();
- ImmutableSet.Builder<String> warnings = ImmutableSet.builder();
- for (ReadResult result : results) {
- elements.addAll(result.elements);
- extra.addAll(result.extra);
- warnings.addAll(result.warnings);
- }
- return new ReadResult(elements.build(), extra.build(), warnings.build());
+ return new ReadResult(
+ eagerFlatMap(results, result -> result.elements),
+ eagerFlatMap(results, result -> result.extra),
+ lazyFlatMap(results, result -> result.warnings));
}
public static <T> ReadResult map(
@@ -37,7 +31,7 @@ public class ReadResult {
return new ReadResult(
list(function.apply(first.getValue(), second.elements)),
second.extra,
- Sets.union(first.getWarnings(), second.warnings).immutableCopy());
+ lazyConcat(first.getWarnings(), second.warnings));
}
public static ReadResult success(DocumentElement element) {
@@ -45,22 +39,22 @@ public class ReadResult {
}
public static ReadResult success(List<DocumentElement> elements) {
- return new ReadResult(elements, list(), set());
+ return new ReadResult(elements, list(), list());
}
public static ReadResult emptyWithWarning(String warning) {
- return new ReadResult(list(), list(), set(warning));
+ return new ReadResult(list(), list(), list(warning));
}
public static ReadResult withWarning(DocumentElement element, String warning) {
- return new ReadResult(list(element), list(), set(warning));
+ return new ReadResult(list(element), list(), list(warning));
}
private final List<DocumentElement> elements;
private final List<DocumentElement> extra;
- private final Set<String> warnings;
+ private final Iterable<String> warnings;
- public ReadResult(List<DocumentElement> elements, List<DocumentElement> extra, Set<String> warnings) {
+ public ReadResult(List<DocumentElement> elements, List<DocumentElement> extra, Iterable<String> warnings) {
this.elements = elements;
this.extra = extra;
this.warnings = warnings;