diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-12-31 17:33:42 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-12-31 17:33:42 +0000 |
| commit | 10fb9097c90d531445a290e29dcb29f9bcc8885a (patch) | |
| tree | 19bb5638f2b4e070f5ebe13416931aa946b31f4c | |
| parent | 853ed35d873b5a3e95d5d332ffeb2211f772edfe (diff) | |
Add relationship XML reading
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()); + } +} |
