aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/docx
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-12-31 16:32:17 +0000
committerMichael Williamson <mike@zwobble.org>2015-12-31 16:32:17 +0000
commitb4bb718158ed274e664ea2796198597b1c1dfa9c (patch)
tree8f5915fcac93e1897d5a7d264a585048dae81c09 /src/main/java/org/zwobble/mammoth/docx
parent36deaa6002a0e85d7da6efd7e569d91f976d9949 (diff)
Read defaults from content types XML
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/docx')
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/ContentTypes.java19
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/ContentTypesXml.java25
2 files changed, 44 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/ContentTypes.java b/src/main/java/org/zwobble/mammoth/docx/ContentTypes.java
new file mode 100644
index 0000000..18aa8e4
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/docx/ContentTypes.java
@@ -0,0 +1,19 @@
+package org.zwobble.mammoth.docx;
+
+import com.google.common.io.Files;
+
+import java.util.Map;
+import java.util.Optional;
+
+public class ContentTypes {
+ private final Map<String, String> extensionDefaults;
+
+ public ContentTypes(Map<String, String> extensionDefaults) {
+ this.extensionDefaults = extensionDefaults;
+ }
+
+ public Optional<String> findContentType(String path) {
+ String extension = Files.getFileExtension(path);
+ return Optional.ofNullable(extensionDefaults.get(extension));
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/docx/ContentTypesXml.java b/src/main/java/org/zwobble/mammoth/docx/ContentTypesXml.java
new file mode 100644
index 0000000..6ecf8e2
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/docx/ContentTypesXml.java
@@ -0,0 +1,25 @@
+package org.zwobble.mammoth.docx;
+
+import org.zwobble.mammoth.xml.XmlElement;
+import org.zwobble.mammoth.xml.XmlElementList;
+
+import java.util.AbstractMap;
+import java.util.Map;
+
+import static org.zwobble.mammoth.util.MammothMaps.toMap;
+
+public class ContentTypesXml {
+ public static ContentTypes readContentTypesXmlElement(XmlElement element) {
+ return new ContentTypes(readDefaults(element.findChildren("content-types:Default")));
+ }
+
+ private static Map<String, String> readDefaults(XmlElementList children) {
+ return toMap(children, ContentTypesXml::readDefault);
+ }
+
+ private static Map.Entry<String, String> readDefault(XmlElement element) {
+ return new AbstractMap.SimpleImmutableEntry<>(
+ element.getAttribute("Extension"),
+ element.getAttribute("ContentType"));
+ }
+}