git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1442148 13f79535-47bb-0310-9956-ffa450edef68tags/3.10-beta1
* Reference to the package. | * Reference to the package. | ||||
*/ | */ | ||||
private OPCPackage container; | 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. | * Constructor. | ||||
*/ | */ | ||||
public PackageRelationship addRelationship(URI targetUri, | public PackageRelationship addRelationship(URI targetUri, | ||||
TargetMode targetMode, String relationshipType, String id) { | 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, | PackageRelationship rel = new PackageRelationship(container, | ||||
sourcePart, targetUri, targetMode, relationshipType, id); | sourcePart, targetUri, targetMode, relationshipType, id); |
// Check core too | // Check core too | ||||
assertEquals("/docProps/core.xml", | assertEquals("/docProps/core.xml", | ||||
pkg.getRelationshipsByType("http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties").getRelationship(0).getTargetURI().toString()); | 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()); | |||||
} | } | ||||