Class OdfPackageDocument
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Direct Known Subclasses:
OdfSchemaDocument
Still the abstract concept of documents exist in the ODF Package layer.
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static class
Helper class to receive an ODF document template for new documents from the environment (ie. -
Field Summary
Modifier and TypeFieldDescriptionprotected String
The media type of the ODF package document.protected String
The internal path to the document relative to the ODF packageprotected OdfPackage
The ODF package containing the documentprotected static final String
The path of the root documentprotected static final String
-
Constructor Summary
ModifierConstructorDescriptionprotected
OdfPackageDocument
(OdfPackage pkg, String internalPath, String mediaTypeString) Creates a new OdfPackageDocument. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Close the OdfPackageDocument, its OdfPackage and release all temporary created data.protected void
Flush the existing DOM to the document to get in advantage of the recent changes from the DOMgetAbsoluteFilePath
(String relativeFilePath) protected Document
getCachedDom
(String internalPath) Get the relative path for an embedded ODF document.getFileDom
(String internalPath) Retrieves the OdfPackage for this OdfPackageDocument.org.apache.jena.rdf.model.Model
getXMLFileMetadata
(String internalPath) Extracts RDF Metadata triple from XML filesvoid
insertDocument
(OdfPackageDocument newDocument, String documentPath) Embed an OdfPackageDocument to the current OdfPackageDocument.protected static boolean
Checks if the given reference is a reference, which points outside the ODF package Only relative path are allowed with the exception of a single slash '/' representing the root document.boolean
static OdfPackageDocument
loadDocument
(String documentPath) Loads an OdfPackageDocument from the provided path.loadSubDocument
(String documentPath) Returns an embedded OdfPackageDocument from the given package path.protected static String
normalizeDocumentPath
(String documentPath) Ensure the document path for is valid and gurantee unique encoding by normalizing the path.void
removeDocument
(String internDocumentPath) Removes an embedded ODF document from the ODF Package.void
Save the document to a given file.void
Save the document to given path.protected final void
setMediaTypeString
(String mediaTypeString)
-
Field Details
-
SLASH
- See Also:
-
ROOT_DOCUMENT_PATH
The path of the root document- See Also:
-
mPackage
The ODF package containing the document -
mDocumentPathInPackage
The internal path to the document relative to the ODF package -
mDocumentMediaType
The media type of the ODF package document. Note: Not necessarily an ODF XML media type as specified in ODF 1.2 part1
-
-
Constructor Details
-
OdfPackageDocument
Creates a new OdfPackageDocument.- Parameters:
pkg
- - the ODF Package that contains the document. A baseURL is being generated based on its location.internalPath
- - the directory path within the package from where the document should be loaded.mediaTypeString
- - media type of stream. If unknown null can be used.
-
-
Method Details
-
loadDocument
Loads an OdfPackageDocument from the provided path.OdfPackageDocument relies on the file being available for read access over the whole life-cycle of OdfDocument.
- Parameters:
documentPath
- - the path from where the document can be loaded- Returns:
- the OpenDocument from the given path or NULL if the media type is not supported by ODFDOM.
- Throws:
Exception
- - if the document could not be created.
-
loadSubDocument
Returns an embedded OdfPackageDocument from the given package path.- Parameters:
documentPath
- to the document within the package. The path is relative the current document path.- Returns:
- an embedded OdfPackageDocument
-
getMediaTypeString
- Returns:
- the media type of this document
-
setMediaTypeString
- Parameters:
mediaTypeString
- for the media type of this document
-
getPackage
Retrieves the OdfPackage for this OdfPackageDocument.- Returns:
- the OdfPackage that contains this OdfPackageDocument.
-
getDocumentPath
Get the relative path for an embedded ODF document.- Returns:
- path to the directory of the embedded ODF document (relative to ODF package root).
-
removeDocument
Removes an embedded ODF document from the ODF Package. All files within the embedded document directory will be removed.- Parameters:
internDocumentPath
- path to the directory of the embedded ODF document (always relative to the package path of the current document).
-
isRootDocument
public boolean isRootDocument()- Returns:
- true if the document is at the root level of the package
-
isExternalReference
Checks if the given reference is a reference, which points outside the ODF package Only relative path are allowed with the exception of a single slash '/' representing the root document.- Parameters:
ref
- the file reference to be checked- Returns:
- true if the reference is an package external reference
-
normalizeDocumentPath
Ensure the document path for is valid and gurantee unique encoding by normalizing the path.- Parameters:
documentPath
- the destination directory of the document. The path should end with a '/'.- Returns:
- the documentPath after normalization.
- See Also:
-
OdfPackage.normalizeDirectoryPath(java.lang.String)
-
save
Save the document to given path.When save the embedded document to a stand alone document, all the file entries of the embedded document will be copied to a new document package. If the embedded document is outside of the current document directory, you have to embed it to the sub directory and refresh the link of the embedded document. You should reload it from the given path to get the saved embedded document.
- Parameters:
documentPath
- - the path to the package document- Throws:
Exception
- if the document could not be saved
-
save
Save the document to a given file.If the input file has been cached (this is the case when loading from an InputStream), the input file can be overwritten.
Otherwise it's allowed to overwrite the input file as long as the same path name is used that was used for loading (no symbolic link foo2.odt pointing to the loaded file foo1.odt, no network path X:\foo.odt pointing to the loaded file D:\foo.odt).
When saving the embedded document to a stand alone document, all files of the embedded document will be copied to a new document package. If the embedded document is outside of the current document directory, you have to embed it to the sub directory and refresh the link of the embedded document. You should reload it from the given file to get the saved embedded document.
- Parameters:
file
- - the file to save the document- Throws:
Exception
- if the document could not be saved
-
flushDoms
protected void flushDoms()Flush the existing DOM to the document to get in advantage of the recent changes from the DOM -
insertDocument
Embed an OdfPackageDocument to the current OdfPackageDocument. All the file entries of child document will be embedded as well to the current document package.- Parameters:
newDocument
- the OdfPackageDocument to be embedded.documentPath
- to the directory the ODF document should be inserted (relative to the root of this document).
-
getFileDom
- Parameters:
filePath
- of the XML relative to the document folder- Returns:
- the typed DOM of the given file
-
getAbsoluteFilePath
- Parameters:
relativeFilePath
- of the file path relative to the document folder- Returns:
- the absolute file path relative to the package (i.e. ZIP) root.
-
close
public void close()Close the OdfPackageDocument, its OdfPackage and release all temporary created data. After execution of this method, this class is no longer usable. Do this as the last action to free resources. Closing an already closed document has no effect.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
getXMLFileMetadata
Extracts RDF Metadata triple from XML files- Parameters:
internalPath
- path to the XML file relative to package root- Returns:
- RDF Metadata through GRDDL XSLT of given XML file
-
getCachedDom
- Returns:
- the already once parsed XML document
-