## org.apache.poi.openxml4j.opc
Class PackagingURIHelper

    java.lang.Object
      org.apache.poi.openxml4j.opc.PackagingURIHelper

    public final class PackagingURIHelper

extends java.lang.Object

Helper for part and pack URI.

Version:
  0.1
Author:
  Julien Chable, CDubet, Kim Ung

Field Summary
`static PackagePartName` `CORE_PROPERTIES_PART_NAME` Core properties partname.
`static java.net.URI` `CORE_PROPERTIES_URI` Core properties part URI.
`static char` `FORWARD_SLASH_CHAR` Forward slash URI separator.
`static java.lang.String` `FORWARD_SLASH_STRING` Forward slash URI separator.
`static java.lang.String` `PACKAGE_CORE_PROPERTIES_NAME` Core package properties art name.
`static java.lang.String` `PACKAGE_PROPERTIES_SEGMENT_NAME` Segment name of the package properties folder.
`static PackagePartName` `PACKAGE_RELATIONSHIPS_ROOT_PART_NAME` Package relationships part name.
`static java.net.URI` `PACKAGE_RELATIONSHIPS_ROOT_URI` Package relationships part URI
`static PackagePartName` `PACKAGE_ROOT_PART_NAME` Root package part name.
`static java.net.URI` `PACKAGE_ROOT_URI` Root package URI.
`static java.lang.String` `RELATIONSHIP_PART_EXTENSION_NAME` Extension name of a relationship part.
`static java.lang.String` `RELATIONSHIP_PART_SEGMENT_NAME` Segment name of a relationship part.

Constructor Summary
`PackagingURIHelper()`

Method Summary
`static java.lang.String` `combine(java.lang.String prefix, java.lang.String suffix)` Combine a string URI with a prefix and a suffix.
`static java.net.URI` `combine(java.net.URI prefix, java.net.URI suffix)` Combine two URIs.
`static PackagePartName` `createPartName(java.lang.String partName)` Create an OPC compliant part name.
`static PackagePartName` `createPartName(java.lang.String partName, PackagePart relativePart)` Create an OPC compliant part name by resolving it using a base part.
`static PackagePartName` `createPartName(java.net.URI partUri)` Create an OPC compliant part name by throwing an exception if the URI is not valid.
`static PackagePartName` `createPartName(java.net.URI partName, PackagePart relativePart)` Create an OPC compliant part name by resolving it using a base part.
`static java.lang.String` `decodeURI(java.net.URI uri)` Decode a URI by converting all percent encoded character into a String character.
`static java.lang.String` `encode(java.lang.String s)` percent-encode white spaces and characters above 0x80.
`static java.lang.String` `getFilename(java.net.URI uri)` Get file name from the specified URI.
`static java.lang.String` `getFilenameWithoutExtension(java.net.URI uri)` Get the file name without the trailing extension.
`static java.net.URI` `getPackageRootUri()` Gets the URI for the package root.
`static java.net.URI` `getPath(java.net.URI uri)` Get the directory path from the specified URI.
`static PackagePartName` `getRelationshipPartName(PackagePartName partName)` Build a part name where the relationship should be stored ((ex /word/document.xml -> /word/_rels/document.xml.rels)
`static java.net.URI` `getSourcePartUriFromRelationshipPartUri(java.net.URI relationshipPartUri)` Get the source part URI from a specified relationships part.
`static java.net.URI` `getURIFromPath(java.lang.String path)` Get URI from a string path.
`static boolean` `isRelationshipPartURI(java.net.URI partUri)` Know if the specified URI is a relationship part name.
`static boolean` `isValidPartName(java.net.URI partUri)` Validate a part URI by returning a boolean.
`static java.net.URI` `relativizeURI(java.net.URI sourceURI, java.net.URI targetURI)` Fully relativize the source part URI against the target part URI.
`static java.net.URI` `relativizeURI(java.net.URI sourceURI, java.net.URI targetURI, boolean msCompatible)` Fully relativize the source part URI against the target part URI.
`static java.net.URI` `resolvePartUri(java.net.URI sourcePartUri, java.net.URI targetUri)` Resolve a source uri against a target.
`static java.net.URI` `toURI(java.lang.String value)` Convert a string to `URI` If part name is not a valid URI, it is resolved as follows:

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### RELATIONSHIP_PART_EXTENSION_NAME

    public static final java.lang.String RELATIONSHIP_PART_EXTENSION_NAME

  Extension name of a relationship part.

### RELATIONSHIP_PART_SEGMENT_NAME

    public static final java.lang.String RELATIONSHIP_PART_SEGMENT_NAME

  Segment name of a relationship part.

### PACKAGE_PROPERTIES_SEGMENT_NAME

    public static final java.lang.String PACKAGE_PROPERTIES_SEGMENT_NAME

  Segment name of the package properties folder.

### PACKAGE_CORE_PROPERTIES_NAME

    public static final java.lang.String PACKAGE_CORE_PROPERTIES_NAME

  Core package properties art name.

### FORWARD_SLASH_CHAR

    public static final char FORWARD_SLASH_CHAR

  Forward slash URI separator.

### FORWARD_SLASH_STRING

    public static final java.lang.String FORWARD_SLASH_STRING

  Forward slash URI separator.

### PACKAGE_RELATIONSHIPS_ROOT_URI

    public static final java.net.URI PACKAGE_RELATIONSHIPS_ROOT_URI

  Package relationships part URI

### PACKAGE_RELATIONSHIPS_ROOT_PART_NAME

    public static final PackagePartName PACKAGE_RELATIONSHIPS_ROOT_PART_NAME

  Package relationships part name.

### CORE_PROPERTIES_URI

    public static final java.net.URI CORE_PROPERTIES_URI

  Core properties part URI.

### CORE_PROPERTIES_PART_NAME

    public static final PackagePartName CORE_PROPERTIES_PART_NAME

  Core properties partname.

### PACKAGE_ROOT_URI

    public static final java.net.URI PACKAGE_ROOT_URI

  Root package URI.

### PACKAGE_ROOT_PART_NAME

    public static final PackagePartName PACKAGE_ROOT_PART_NAME

  Root package part name.

Constructor Detail

### PackagingURIHelper

    public PackagingURIHelper()

Method Detail

### getPackageRootUri

    public static java.net.URI getPackageRootUri()

  Gets the URI for the package root.

  Returns:
    URI of the package root.

### isRelationshipPartURI

    public static boolean isRelationshipPartURI(java.net.URI partUri)

  Know if the specified URI is a relationship part name.

  Parameters:
    `partUri` - URI to check.
  Returns:
    true if the URI false.

### getFilename

    public static java.lang.String getFilename(java.net.URI uri)

  Get file name from the specified URI.

### getFilenameWithoutExtension

    public static java.lang.String getFilenameWithoutExtension(java.net.URI uri)

  Get the file name without the trailing extension.

### getPath

    public static java.net.URI getPath(java.net.URI uri)

  Get the directory path from the specified URI.

### combine

    public static java.net.URI combine(java.net.URI prefix,
                                       java.net.URI suffix)

  Combine two URIs.

  Parameters:
    `prefix` - the prefix URI
    `suffix` - the suffix URI
  Returns:
    the combined URI

### combine

    public static java.lang.String combine(java.lang.String prefix,
                                           java.lang.String suffix)

  Combine a string URI with a prefix and a suffix.

### relativizeURI

    public static java.net.URI relativizeURI(java.net.URI sourceURI,
                                             java.net.URI targetURI,
                                             boolean msCompatible)

  Fully relativize the source part URI against the target part URI.

  Parameters:
    `sourceURI` - The source part URI.
    `targetURI` - The target part URI.
    `msCompatible` - if true then remove leading slash from the relativized URI. This flag violates [M1.4]: A part name shall start with a forward slash ('/') character, but allows generating URIs compatible with MS Office and OpenOffice.
  Returns:
    A fully relativize part name URI ('word/media/image1.gif', '/word/document.xml' => 'media/image1.gif') else `null`.

### relativizeURI

    public static java.net.URI relativizeURI(java.net.URI sourceURI,
                                             java.net.URI targetURI)

  Fully relativize the source part URI against the target part URI.

  Parameters:
    `sourceURI` - The source part URI.
    `targetURI` - The target part URI.
  Returns:
    A fully relativize part name URI ('word/media/image1.gif', '/word/document.xml' => 'media/image1.gif') else `null`.

### resolvePartUri

    public static java.net.URI resolvePartUri(java.net.URI sourcePartUri,
                                              java.net.URI targetUri)

  Resolve a source uri against a target.

  Parameters:
    `sourcePartUri` - The source URI.
    `targetUri` - The target URI.
  Returns:
    The resolved URI.

### getURIFromPath

    public static java.net.URI getURIFromPath(java.lang.String path)

  Get URI from a string path.

### getSourcePartUriFromRelationshipPartUri

    public static java.net.URI getSourcePartUriFromRelationshipPartUri(java.net.URI relationshipPartUri)

  Get the source part URI from a specified relationships part.

  Parameters:
    `relationshipPartUri` - The relationship part use to retrieve the source part.
  Returns:
    The source part URI from the specified relationships part.

### createPartName

    public static PackagePartName createPartName(java.net.URI partUri)
                                          throws InvalidFormatException

  Create an OPC compliant part name by throwing an exception if the URI is not valid.

  Parameters:
    `partUri` - The part name URI to validate.
  Returns:
    A valid part name object, else `null`.
  Throws:
    `InvalidFormatException` - Throws if the specified URI is not OPC compliant.

### createPartName

    public static PackagePartName createPartName(java.lang.String partName)
                                          throws InvalidFormatException

  Create an OPC compliant part name.

  Parameters:
    `partName` - The part name to validate.
  Returns:
    The correspondant part name if valid, else `null`.
  Throws:
    `InvalidFormatException` - Throws if the specified part name is not OPC compliant.
  See Also:
    `createPartName(URI)`

### createPartName

    public static PackagePartName createPartName(java.lang.String partName,
                                                 PackagePart relativePart)
                                          throws InvalidFormatException

  Create an OPC compliant part name by resolving it using a base part.

  Parameters:
    `partName` - The part name to validate.
    `relativePart` - The relative base part.
  Returns:
    The correspondant part name if valid, else `null`.
  Throws:
    `InvalidFormatException` - Throws if the specified part name is not OPC compliant.
  See Also:
    `createPartName(URI)`

### createPartName

    public static PackagePartName createPartName(java.net.URI partName,
                                                 PackagePart relativePart)
                                          throws InvalidFormatException

  Create an OPC compliant part name by resolving it using a base part.

  Parameters:
    `partName` - The part name URI to validate.
    `relativePart` - The relative base part.
  Returns:
    The correspondant part name if valid, else `null`.
  Throws:
    `InvalidFormatException` - Throws if the specified part name is not OPC compliant.
  See Also:
    `createPartName(URI)`

### isValidPartName

    public static boolean isValidPartName(java.net.URI partUri)

  Validate a part URI by returning a boolean. ([M1.1],[M1.3],[M1.4],[M1.5],[M1.6]) (OPC Specifications 8.1.1 Part names) : Part Name Syntax The part name grammar is defined as follows: part_name = 1*( "/" segment ) segment = 1*( pchar ) (pchar is defined in RFC 3986)

  Parameters:
    `partUri` - The URI to validate.
  Returns:
    true if the URI is valid to the OPC Specifications, else false
  See Also:
    `createPartName(URI)`

### decodeURI

    public static java.lang.String decodeURI(java.net.URI uri)

  Decode a URI by converting all percent encoded character into a String character.

  Parameters:
    `uri` - The URI to decode.
  Returns:
    The specified URI in a String with converted percent encoded characters.

### getRelationshipPartName

    public static PackagePartName getRelationshipPartName(PackagePartName partName)

  Build a part name where the relationship should be stored ((ex /word/document.xml -> /word/_rels/document.xml.rels)

  Parameters:
    `partName` - Source part URI
  Returns:
    the full path (as URI) of the relation file
  Throws:
    `InvalidOperationException` - Throws if the specified URI is a relationshp part.

### toURI

    public static java.net.URI toURI(java.lang.String value)
                              throws java.net.URISyntaxException

  Convert a string to `URI` If part name is not a valid URI, it is resolved as follows:

  1. Percent-encode each open bracket ([) and close bracket (]). 2. Percent-encode each percent (%) character that is not followed by a hexadecimal notation of an octet value. 3. Un-percent-encode each percent-encoded unreserved character. 4. Un-percent-encode each forward slash (/) and back slash (\). 5. Convert all back slashes to forward slashes. 6. If present in a segment containing non-dot (?.?) characters, remove trailing dot (?.?) characters from each segment. 7. Replace each occurrence of multiple consecutive forward slashes (/) with a single forward slash. 8. If a single trailing forward slash (/) is present, remove that trailing forward slash. 9. Remove complete segments that consist of three or more dots. 10. Resolve the relative reference against the base URI of the part holding the Unicode string, as it is defined in ?5.2 of RFC 3986. The path component of the resulting absolute URI is the part name.

  Parameters:
    `value` - the string to be parsed into a URI
  Returns:
    the resolved part name that should be OK to construct a URI TODO YK: for now this method does only (5). Finish the rest.
  Throws:
    `java.net.URISyntaxException`

### encode

    public static java.lang.String encode(java.lang.String s)

  percent-encode white spaces and characters above 0x80.

  Examples: 'Apache POI' --> 'Apache%20POI' 'Apache?POI' --> 'Apache%04%10POI'

  Parameters:
    `s` - the string to encode
  Returns:
    the encoded string

Copyright 2012 The Apache Software Foundation or its licensors, as applicable.