Class PartName

java.lang.Object
org.docx4j.openpackaging.parts.PartName
All Implemented Interfaces:
Comparable<PartName>

public final class PartName extends Object implements Comparable<PartName>
An immutable Open Packaging Convention compliant part name. [Docx4J comment: Note that in docx4J, part names should be resolved, before being set, so that they are absolute (ie start with '/'). In contrast, this class enforces the OPC specification, which says that a part name can't be absolute. For this reason, you'll see the leading '/' being added and removed in various places :( ]
Version:
0.1
Author:
Julien Chable
  • Constructor Details

    • PartName

      public PartName(URI uri, boolean checkConformance) throws InvalidFormatException
      Constructor. Makes a ValidPartName object from a java.net.URI
      Parameters:
      uri - The URI to validate and to transform into ValidPartName.
      checkConformance - Flag to specify if the contructor have to validate the OPC conformance. Must be always true except for special URI like '/' which is needed for internal use by OpenXML4J but is not valid.
      Throws:
      InvalidFormatException - Throw if the specified part name is not conform to Open Packaging Convention specifications.
      See Also:
    • PartName

      public PartName(String partName) throws InvalidFormatException
      Constructor. Makes a ValidPartName object from a String part name, provided it validates against OPC conformance.
      Parameters:
      partName - Part name to valid and to create.
      Throws:
      InvalidFormatException - Throw if the specified part name is not conform to Open Packaging Convention specifications.
    • PartName

      public PartName(String partName, boolean checkConformance) throws InvalidFormatException
      Constructor. Makes a ValidPartName object from a String part name.
      Parameters:
      partName - Part name to valid and to create.
      checkConformance - Flag to specify if the contructor have to validate the OPC conformance. Must be always true except for special URI like '/' which is needed for internal use by OpenXML4J but is not valid.
      Throws:
      InvalidFormatException - Throw if the specified part name is not conform to Open Packaging Convention specifications.
  • Method Details

    • isRelationshipPartURI

      public boolean isRelationshipPartURI()
      To know if this part name is a relationship part name.
      Returns:
      true if this part name respect the relationship part naming convention else false.
    • compareTo

      public int compareTo(PartName otherPartName)
      Compare two part name following the rule M1.12 : Part name equivalence is determined by comparing part names as case-insensitive ASCII strings. Packages shall not contain equivalent part names and package implementers shall neither create nor recognize packages with equivalent part names. [M1.12]
      Specified by:
      compareTo in interface Comparable<PartName>
    • getExtension

      public String getExtension()
      Retrieves the extension of the part name if any. If there is no extension returns an empty String. Example : '/document/content.xml' => 'xml'
      Returns:
      The extension of the part name.
    • getName

      public String getName()
      Get this part name.
      Returns:
      The name of this part name.
    • equals

      public boolean equals(Object otherPartName)
      Part name equivalence is determined by comparing part names as case-insensitive ASCII strings. Packages shall not contain equivalent part names and package implementers shall neither create nor recognize packages with equivalent part names. [M1.12]
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getURI

      public URI getURI()
      Part name property getter.
      Returns:
      This part name URI.
    • generateUniqueName

      public static String generateUniqueName(Base sourcePart, String proposedRelId, String directoryPrefix, String after_, String ext)
    • getRelationshipsPartName

      public static String getRelationshipsPartName(String partName)
      See Also:
      • for Wygwam's implementation which I only found after writing this