diff options
Diffstat (limited to 'src/main/java')
3 files changed, 18 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/Relationship.java b/src/main/java/org/zwobble/mammoth/internal/docx/Relationship.java index 2e83d54..65974d3 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/Relationship.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/Relationship.java @@ -3,10 +3,12 @@ package org.zwobble.mammoth.internal.docx; public class Relationship { private final String relationshipId; private final String target; + private final String type; - public Relationship(String relationshipId, String target) { + public Relationship(String relationshipId, String target, String type) { this.relationshipId = relationshipId; this.target = target; + this.type = type; } public String getRelationshipId() { @@ -16,4 +18,8 @@ public class Relationship { public String getTarget() { return target; } + + public String getType() { + return type; + } } diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/Relationships.java b/src/main/java/org/zwobble/mammoth/internal/docx/Relationships.java index d4d6f2e..bfd3fc3 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/Relationships.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/Relationships.java @@ -10,16 +10,25 @@ public class Relationships { public static final Relationships EMPTY = new Relationships(list()); private final Map<String, String> targetsByRelationshipId; + private final Map<String, List<String>> targetsByType; public Relationships(List<Relationship> relationships) { this.targetsByRelationshipId = toMap(relationships, relationship -> entry( relationship.getRelationshipId(), relationship.getTarget() )); + this.targetsByType = toMultiMap(relationships, relationship -> entry( + relationship.getType(), + relationship.getTarget() + )); } public String findTargetByRelationshipId(String relationshipId) { return lookup(targetsByRelationshipId, relationshipId) .orElseThrow(() -> new RuntimeException("Could not find relationship '" + relationshipId + "'")); } + + public List<String> findTargetsByType(String type) { + return lookup(targetsByType, type).orElse(list()); + } } diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/RelationshipsXml.java b/src/main/java/org/zwobble/mammoth/internal/docx/RelationshipsXml.java index 3b3e300..55862c9 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/RelationshipsXml.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/RelationshipsXml.java @@ -1,13 +1,8 @@ package org.zwobble.mammoth.internal.docx; -import org.zwobble.mammoth.internal.util.Lists; import org.zwobble.mammoth.internal.xml.XmlElement; -import java.util.Map; - import static org.zwobble.mammoth.internal.util.Lists.eagerMap; -import static org.zwobble.mammoth.internal.util.Maps.entry; -import static org.zwobble.mammoth.internal.util.Maps.toMap; public class RelationshipsXml { public static Relationships readRelationshipsXmlElement(XmlElement element) { @@ -20,6 +15,7 @@ public class RelationshipsXml { private static Relationship readRelationship(XmlElement element) { String relationshipId = element.getAttribute("Id"); String target = element.getAttribute("Target"); - return new Relationship(relationshipId, target); + String type = element.getAttribute("Type"); + return new Relationship(relationshipId, target, type); } } |
