aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-12-31 17:33:42 +0000
committerMichael Williamson <mike@zwobble.org>2015-12-31 17:33:42 +0000
commit10fb9097c90d531445a290e29dcb29f9bcc8885a (patch)
tree19bb5638f2b4e070f5ebe13416931aa946b31f4c /src
parent853ed35d873b5a3e95d5d332ffeb2211f772edfe (diff)
Add relationship XML reading
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/Relationship.java13
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/Relationships.java16
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/RelationshipsXml.java22
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/RelationshipsXmlTests.java26
4 files changed, 77 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/Relationship.java b/src/main/java/org/zwobble/mammoth/docx/Relationship.java
new file mode 100644
index 0000000..4d469d7
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/docx/Relationship.java
@@ -0,0 +1,13 @@
+package org.zwobble.mammoth.docx;
+
+public class Relationship {
+ private final String target;
+
+ public Relationship(String target) {
+ this.target = target;
+ }
+
+ public String getTarget() {
+ return target;
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/docx/Relationships.java b/src/main/java/org/zwobble/mammoth/docx/Relationships.java
new file mode 100644
index 0000000..d33a091
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/docx/Relationships.java
@@ -0,0 +1,16 @@
+package org.zwobble.mammoth.docx;
+
+import java.util.Map;
+import java.util.Optional;
+
+public class Relationships {
+ private final Map<String, Relationship> relationships;
+
+ public Relationships(Map<String, Relationship> relationships) {
+ this.relationships = relationships;
+ }
+
+ public Relationship findRelationshipById(String id) {
+ return Optional.ofNullable(relationships.get(id)).get();
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/docx/RelationshipsXml.java b/src/main/java/org/zwobble/mammoth/docx/RelationshipsXml.java
new file mode 100644
index 0000000..550eed0
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/docx/RelationshipsXml.java
@@ -0,0 +1,22 @@
+package org.zwobble.mammoth.docx;
+
+import org.zwobble.mammoth.xml.XmlElement;
+
+import java.util.Map;
+
+import static com.google.common.collect.Maps.immutableEntry;
+import static org.zwobble.mammoth.util.MammothMaps.toMap;
+
+public class RelationshipsXml {
+ public static Relationships readRelationshipsXmlElement(XmlElement element) {
+ return new Relationships(toMap(
+ element.findChildren("relationships:Relationship"),
+ RelationshipsXml::readRelationship));
+ }
+
+ private static Map.Entry<String, Relationship> readRelationship(XmlElement element) {
+ return immutableEntry(
+ element.getAttribute("Id"),
+ new Relationship(element.getAttribute("Target")));
+ }
+}
diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/RelationshipsXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/RelationshipsXmlTests.java
new file mode 100644
index 0000000..1ba9ea8
--- /dev/null
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/RelationshipsXmlTests.java
@@ -0,0 +1,26 @@
+package org.zwobble.mammoth.tests.docx;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import org.junit.Test;
+import org.zwobble.mammoth.docx.Relationships;
+import org.zwobble.mammoth.xml.XmlElement;
+
+import static org.junit.Assert.assertEquals;
+import static org.zwobble.mammoth.docx.RelationshipsXml.readRelationshipsXmlElement;
+import static org.zwobble.mammoth.xml.XmlNodes.element;
+
+public class RelationshipsXmlTests {
+ @Test
+ public void targetIsReadFromRelationshipElement() {
+ XmlElement element = element("relationship:Relationships", ImmutableList.of(
+ element("relationships:Relationship", ImmutableMap.of(
+ "Id", "rId8",
+ "Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",
+ "Target", "http://example.com"))));
+
+ Relationships relationships = readRelationshipsXmlElement(element);
+
+ assertEquals("http://example.com", relationships.findRelationshipById("rId8").getTarget());
+ }
+}