From f9c7505139d9287e1a5747ebca754797520ff93f Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 28 Jan 2018 12:08:00 +0000 Subject: Adjust style for easier transformation --- .../mammoth/internal/docx/DocumentReader.java | 54 ++++++++++++++-------- 1 file changed, 35 insertions(+), 19 deletions(-) (limited to 'src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java') diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java index a616aac..f8060a9 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java @@ -21,11 +21,6 @@ import static org.zwobble.mammoth.internal.util.Lists.*; import static org.zwobble.mammoth.internal.util.Strings.trimLeft; public class DocumentReader { - @FunctionalInterface - private interface PartWithBodyReader { - T readPart(String name, BiFunction read, Optional defaultValue); - } - public static InternalResult readDocument(Optional path, Archive zipFile) { PartPaths partPaths = findPartPaths(zipFile); @@ -33,20 +28,7 @@ public class DocumentReader { Numbering numbering = readNumbering(zipFile, partPaths); ContentTypes contentTypes = readContentTypes(zipFile); FileReader fileReader = new PathRelativeFileReader(path); - PartWithBodyReader partReader = new PartWithBodyReader() { - @Override - public T readPart(String name, BiFunction readPart, Optional defaultValue) { - Relationships relationships = readRelationships(zipFile, findRelationshipsPathFor(name)); - BodyXmlReader bodyReader = new BodyXmlReader(styles, numbering, relationships, contentTypes, zipFile, fileReader); - if (defaultValue.isPresent()) { - return tryParseOfficeXml(zipFile, name) - .map(root -> readPart.apply(root, bodyReader)) - .orElse(defaultValue.get()); - } else { - return readPart.apply(parseOfficeXml(zipFile, name), bodyReader); - } - } - }; + PartWithBodyReader partReader = new PartWithBodyReader(zipFile, contentTypes, fileReader, numbering, styles); return InternalResult.flatMap( readNotes(partReader, partPaths), readComments(partReader, partPaths), @@ -58,6 +40,40 @@ public class DocumentReader { ); } + private static class PartWithBodyReader { + private final Archive zipFile; + private final ContentTypes contentTypes; + private final FileReader fileReader; + private final Numbering numbering; + private final Styles styles; + + public PartWithBodyReader( + Archive zipFile, + ContentTypes contentTypes, + FileReader fileReader, + Numbering numbering, + Styles styles + ) { + this.zipFile = zipFile; + this.contentTypes = contentTypes; + this.fileReader = fileReader; + this.numbering = numbering; + this.styles = styles; + } + + T readPart(String name, BiFunction readPart, Optional defaultValue) { + Relationships relationships = readRelationships(zipFile, findRelationshipsPathFor(name)); + BodyXmlReader bodyReader = new BodyXmlReader(styles, numbering, relationships, contentTypes, zipFile, fileReader); + if (defaultValue.isPresent()) { + return tryParseOfficeXml(zipFile, name) + .map(root -> readPart.apply(root, bodyReader)) + .orElse(defaultValue.get()); + } else { + return readPart.apply(parseOfficeXml(zipFile, name), bodyReader); + } + } + } + public static class PartPaths { private final String mainDocument; private final String comments; -- cgit v1.2.3