Class PackagingURIHelper
- Version:
- 0.1
- Author:
- Julien Chable, CDubet, Kim Ung
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final PackagePartNameCore properties partname.static final URICore properties part URI.static final charForward slash URI separator.static final StringForward slash URI separator.static final StringCore package properties art name.static final StringSegment name of the package properties folder.static final PackagePartNamePackage relationships part name.static final URIPackage relationships part URIstatic final PackagePartNameRoot package part name.static final URIRoot package URI.static final StringExtension name of a relationship part.static final StringSegment name of a relationship part. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic StringCombine a string URI with a prefix and a suffix.static URICombine two URIs.static PackagePartNamecreatePartName(String partName) Create an OPC compliant part name.static PackagePartNamecreatePartName(String partName, PackagePart relativePart) Create an OPC compliant part name by resolving it using a base part.static PackagePartNamecreatePartName(URI partUri) Create an OPC compliant part name by throwing an exception if the URI is not valid.static PackagePartNamecreatePartName(URI partName, PackagePart relativePart) Create an OPC compliant part name by resolving it using a base part.static StringDecode a URI by converting all percent encoded character into a String character.static Stringpercent-encode white spaces and characters above 0x80.static StringgetFilename(URI uri) Get file name from the specified URI.static StringGet the file name without the trailing extension.static URIGets the URI for the package root.static URIGet the directory path from the specified URI.static PackagePartNamegetRelationshipPartName(PackagePartName partName) Build a part name where the relationship should be stored ((ex /word/document.xml -> /word/_rels/document.xml.rels)static URIgetSourcePartUriFromRelationshipPartUri(URI relationshipPartUri) Get the source part URI from a specified relationships part.static URIgetURIFromPath(String path) Get URI from a string path.static booleanisRelationshipPartURI(URI partUri) Know if the specified URI is a relationship part name.static booleanisValidPartName(URI partUri) Validate a part URI by returning a boolean.static URIrelativizeURI(URI sourceURI, URI targetURI) Fully relativize the source part URI against the target part URI.static URIrelativizeURI(URI sourceURI, URI targetURI, boolean msCompatible) Fully relativize the source part URI against the target part URI.static URIresolvePartUri(URI sourcePartUri, URI targetUri) Resolve a source uri against a target.static URIConvert a string toURIIf part name is not a valid URI, it is resolved as follows:
-
Field Details
-
RELATIONSHIP_PART_EXTENSION_NAME
Extension name of a relationship part. -
RELATIONSHIP_PART_SEGMENT_NAME
Segment name of a relationship part. -
PACKAGE_PROPERTIES_SEGMENT_NAME
Segment name of the package properties folder. -
PACKAGE_CORE_PROPERTIES_NAME
Core package properties art name. -
FORWARD_SLASH_CHAR
public static final char FORWARD_SLASH_CHARForward slash URI separator. -
FORWARD_SLASH_STRING
Forward slash URI separator. -
PACKAGE_RELATIONSHIPS_ROOT_URI
Package relationships part URI -
PACKAGE_RELATIONSHIPS_ROOT_PART_NAME
Package relationships part name. -
CORE_PROPERTIES_URI
Core properties part URI. -
CORE_PROPERTIES_PART_NAME
Core properties partname. -
PACKAGE_ROOT_URI
Root package URI. -
PACKAGE_ROOT_PART_NAME
Root package part name.
-
-
Constructor Details
-
PackagingURIHelper
public PackagingURIHelper()
-
-
Method Details
-
getPackageRootUri
Gets the URI for the package root.- Returns:
- URI of the package root.
-
isRelationshipPartURI
Know if the specified URI is a relationship part name.- Parameters:
partUri- URI to check.- Returns:
- true if the URI false.
-
getFilename
Get file name from the specified URI. -
getFilenameWithoutExtension
Get the file name without the trailing extension. -
getPath
Get the directory path from the specified URI. -
combine
Combine two URIs.- Parameters:
prefix- the prefix URIsuffix- the suffix URI- Returns:
- the combined URI
-
combine
Combine a string URI with a prefix and a suffix. -
relativizeURI
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
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
Resolve a source uri against a target.- Parameters:
sourcePartUri- The source URI.targetUri- The target URI.- Returns:
- The resolved URI.
-
getURIFromPath
Get URI from a string path. -
getSourcePartUriFromRelationshipPartUri
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
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
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
public static PackagePartName createPartName(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
public static PackagePartName createPartName(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:
-
isValidPartName
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:
-
decodeURI
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
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
Convert a string toURIIf 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:
URISyntaxException
-
encode
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
-