aboutsummaryrefslogtreecommitdiffstats
path: root/src/scratchpad/ooxml-src/org/apache/poi/hxf
diff options
context:
space:
mode:
Diffstat (limited to 'src/scratchpad/ooxml-src/org/apache/poi/hxf')
-rw-r--r--src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java35
-rw-r--r--src/scratchpad/ooxml-src/org/apache/poi/hxf/dev/HXFLister.java16
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) {