diff options
Diffstat (limited to 'src/scratchpad/ooxml-src/org/apache/poi/hxf')
-rw-r--r-- | src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java | 35 | ||||
-rw-r--r-- | src/scratchpad/ooxml-src/org/apache/poi/hxf/dev/HXFLister.java | 16 |
2 files changed, 44 insertions, 7 deletions
diff --git a/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java b/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java index f8f74e0943..a7a17f9421 100644 --- a/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java +++ b/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java @@ -29,6 +29,9 @@ import org.openxml4j.exceptions.OpenXML4JException; import org.openxml4j.opc.Package; import org.openxml4j.opc.PackageAccess; import org.openxml4j.opc.PackagePart; +import org.openxml4j.opc.PackagePartName; +import org.openxml4j.opc.PackageRelationship; +import org.openxml4j.opc.PackagingURIHelper; /** * Parent class of the low level interface to @@ -76,8 +79,28 @@ public abstract class HXFDocument { } } - public static Package openPackage(File f) throws InvalidFormatException { - return Package.open(f.toString(), PackageAccess.READ_WRITE); + /** + * Retrieves the PackagePart for the given relation + * id. This will normally come from a r:id attribute + * on part of the base document. + * @param partId The r:id pointing to the other PackagePart + */ + protected PackagePart getRelatedPackagePart(String partId) { + PackageRelationship rel = + basePart.getRelationship(partId); + + PackagePartName relName; + try { + relName = PackagingURIHelper.createPartName(rel.getTargetURI()); + } catch(InvalidFormatException e) { + throw new InternalError(e.getMessage()); + } + + PackagePart part = container.getPart(relName); + if(part == null) { + throw new IllegalArgumentException("No part found for rel " + rel); + } + return part; } /** @@ -87,4 +110,12 @@ public abstract class HXFDocument { public Package getPackage() { return container; } + + /** + * Returns an opened OOXML Package for the supplied File + * @param f File to open + */ + public static Package openPackage(File f) throws InvalidFormatException { + return Package.open(f.toString(), PackageAccess.READ_WRITE); + } } diff --git a/src/scratchpad/ooxml-src/org/apache/poi/hxf/dev/HXFLister.java b/src/scratchpad/ooxml-src/org/apache/poi/hxf/dev/HXFLister.java index d56d2682e8..3b0a540d37 100644 --- a/src/scratchpad/ooxml-src/org/apache/poi/hxf/dev/HXFLister.java +++ b/src/scratchpad/ooxml-src/org/apache/poi/hxf/dev/HXFLister.java @@ -80,6 +80,9 @@ public class HXFLister { if(! part.isRelationshipPart()) { disp.println("\t" + part.getRelationships().size() + " relations"); + for(PackageRelationship rel : part.getRelationships()) { + displayRelation(rel, "\t "); + } } } } @@ -92,13 +95,16 @@ public class HXFLister { PackageRelationshipCollection rels = container.getRelationships(); for (PackageRelationship rel : rels) { - disp.println("Relationship:"); - disp.println("\tFrom: "+ rel.getSourceURI()); - disp.println("\tTo: " + rel.getTargetURI()); - disp.println("\tMode: " + rel.getTargetMode()); - disp.println("\tType: " + rel.getRelationshipType()); + displayRelation(rel, ""); } } + private void displayRelation(PackageRelationship rel, String indent) { + disp.println(indent+"Relationship:"); + disp.println(indent+"\tFrom: "+ rel.getSourceURI()); + disp.println(indent+"\tTo: " + rel.getTargetURI()); + disp.println(indent+"\tMode: " + rel.getTargetMode()); + disp.println(indent+"\tType: " + rel.getRelationshipType()); + } public static void main(String[] args) throws Exception { if(args.length == 0) { |