git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1442148 13f79535-47bb-0310-9956-ffa450edef68tags/3.10-beta1
@@ -72,6 +72,12 @@ public final class PackageRelationshipCollection implements | |||
* Reference to the package. | |||
*/ | |||
private OPCPackage container; | |||
/** | |||
* The ID number of the next rID# to generate, or -1 | |||
* if that is still to be determined. | |||
*/ | |||
private int nextRelationshipId = -1; | |||
/** | |||
* Constructor. | |||
@@ -206,14 +212,17 @@ public final class PackageRelationshipCollection implements | |||
*/ | |||
public PackageRelationship addRelationship(URI targetUri, | |||
TargetMode targetMode, String relationshipType, String id) { | |||
if (id == null) { | |||
// Generate a unique ID is id parameter is null. | |||
int i = 0; | |||
do { | |||
id = "rId" + ++i; | |||
} while (relationshipsByID.get(id) != null); | |||
} | |||
if (id == null) { | |||
// Generate a unique ID is id parameter is null. | |||
if (nextRelationshipId == -1) { | |||
nextRelationshipId = size() + 1; | |||
} | |||
// Work up until we find a unique number (there could be gaps etc) | |||
do { | |||
id = "rId" + nextRelationshipId++; | |||
} while (relationshipsByID.get(id) != null); | |||
} | |||
PackageRelationship rel = new PackageRelationship(container, | |||
sourcePart, targetUri, targetMode, relationshipType, id); |
@@ -254,6 +254,25 @@ public class TestRelationships extends TestCase { | |||
// Check core too | |||
assertEquals("/docProps/core.xml", | |||
pkg.getRelationshipsByType("http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties").getRelationship(0).getTargetURI().toString()); | |||
// Add some more | |||
partB.addExternalRelationship("http://poi.apache.org/new", "http://example/poi/new"); | |||
partB.addExternalRelationship("http://poi.apache.org/alt", "http://example/poi/alt"); | |||
// Check the relations | |||
assertEquals(2, partA.getRelationships().size()); | |||
assertEquals(3, partB.getRelationships().size()); | |||
assertEquals("/partB", partA.getRelationship("rId1").getTargetURI().toString()); | |||
assertEquals("http://poi.apache.org/", | |||
partA.getRelationship("rId2").getTargetURI().toString()); | |||
assertEquals("http://poi.apache.org/ss/", | |||
partB.getRelationship("rId1").getTargetURI().toString()); | |||
assertEquals("http://poi.apache.org/new", | |||
partB.getRelationship("rId2").getTargetURI().toString()); | |||
assertEquals("http://poi.apache.org/alt", | |||
partB.getRelationship("rId3").getTargetURI().toString()); | |||
} | |||