|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectwriter2latex.xmerge.OfficeDocument
public class OfficeDocument
An implementation of Document for
StarOffice documents.
| Field Summary | |
|---|---|
private org.w3c.dom.Document |
contentDoc
DOM Document of content.xml. |
private java.lang.String |
documentName
|
private java.util.Map<java.lang.String,EmbeddedObject> |
embeddedObjects
Collection to keep track of the embedded objects in the document. |
private static javax.xml.parsers.DocumentBuilderFactory |
factory
Factory for DocumentBuilder objects. |
private java.lang.String |
fileName
|
private org.w3c.dom.Document |
manifestDoc
DOM Docuemtn of META-INF/manifest.xml. |
private org.w3c.dom.Document |
metaDoc
DOM Document of meta.xml. |
private org.w3c.dom.Document |
settingsDoc
DOM Document of settings.xml. |
private org.w3c.dom.Document |
styleDoc
DOM Document of content.xml. |
private OfficeZip |
zip
OfficeZip object to store zip contents from
read InputStream. |
| Constructor Summary | |
|---|---|
OfficeDocument(java.lang.String name)
Default constructor. |
|
OfficeDocument(java.lang.String name,
boolean namespaceAware,
boolean validating)
Constructor with arguments to set namespaceAware
and validating flags. |
|
| Method Summary | |
|---|---|
void |
addEmbeddedObject(EmbeddedObject embObj)
Adds a new embedded object to the document. |
private org.w3c.dom.Document |
createDOM(java.lang.String rootName)
Creates a new DOM Document containing minimum
OpenOffice XML tags. |
private org.w3c.dom.Document |
createSettingsDOM(java.lang.String rootName)
Creates a new DOM Document containing minimum
OpenOffice XML tags. |
(package private) static byte[] |
docToBytes(org.w3c.dom.Document doc)
Write out a org.w3c.dom.Document object into a
byte array. |
org.w3c.dom.Document |
getContentDOM()
Return a DOM Document object of the content.xml
file. |
protected java.lang.String |
getDocumentMimeType()
Method to return the MIME type of the document. |
EmbeddedObject |
getEmbeddedObject(java.lang.String name)
Returns the embedded object corresponding to the name provided. |
java.util.Iterator |
getEmbeddedObjects()
Returns all the embedded objects (graphics, formulae, etc.) present in this document. |
protected java.lang.String |
getFileExtension()
Returns the file extension for this type of Document. |
java.lang.String |
getFileName()
Return the file name of the Document, possibly
with the standard extension. |
org.w3c.dom.Document |
getMetaDOM()
Return a DOM Document object of the meta.xml
file. |
java.lang.String |
getName()
Return the name of the Document. |
protected java.lang.String |
getOfficeClassAttribute()
Return the office:class attribute value. |
org.w3c.dom.Document |
getSettingsDOM()
Return a DOM Document object of the settings.xml
file. |
org.w3c.dom.Document |
getStyleDOM()
Return a DOM Document object of the style.xml file. |
private static java.io.Reader |
hack(java.io.InputStream is)
Hacked code to filter |
void |
initContentDOM()
Initializes a new DOM Document with the content
containing minimum OpenOffice XML tags. |
private void |
initManifestDOM()
Method to create the initial entries in the manifest.xml file stored in an SX? |
void |
initSettingsDOM()
Initializes a new DOM Document with the content
containing minimum OpenOffice XML tags. |
void |
initStyleDOM()
Initializes a new DOM Document with styles containing minimum OpenOffice XML tags. |
boolean |
isPackageFormat()
Package or flat format? |
(package private) static org.w3c.dom.Document |
parse(javax.xml.parsers.DocumentBuilder builder,
byte[] bytes)
Parse given byte array into a DOM
Document object using the
DocumentBuilder object. |
void |
read(java.io.InputStream is)
Read the Office Document from the given
InputStream. |
void |
read(java.io.InputStream is,
boolean isZip)
Read the Office Document from the given
InputStream. |
private void |
readZip(java.io.InputStream is)
|
private static java.io.Reader |
secondHack(java.io.InputStream is)
Transform the InputStream to a Reader Stream. |
void |
setContentDOM(org.w3c.dom.Node newDom)
Sets the content tree of the document. |
void |
setMetaDOM(org.w3c.dom.Node newDom)
Sets the meta tree of the document. |
void |
setSettingsDOM(org.w3c.dom.Node newDom)
Sets the settings tree of the document. |
void |
setStyleDOM(org.w3c.dom.Node newDom)
Sets the style tree of the document. |
private java.lang.String |
trimDocumentName(java.lang.String name)
Removes the file extension from the Document
name. |
void |
write(java.io.OutputStream os)
Write out Office ZIP file format. |
void |
write(java.io.OutputStream os,
boolean isZip)
Write out Office ZIP file format. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private static javax.xml.parsers.DocumentBuilderFactory factory
DocumentBuilder objects.
private org.w3c.dom.Document contentDoc
Document of content.xml.
private org.w3c.dom.Document metaDoc
Document of meta.xml.
private org.w3c.dom.Document settingsDoc
Document of settings.xml.
private org.w3c.dom.Document styleDoc
Document of content.xml.
private org.w3c.dom.Document manifestDoc
Docuemtn of META-INF/manifest.xml.
private java.lang.String documentName
private java.lang.String fileName
private OfficeZip zip
OfficeZip object to store zip contents from
read InputStream. Note that this member
will still be null if it was initialized using a template
file instead of reading from a StarOffice zipped
XML file.
private java.util.Map<java.lang.String,EmbeddedObject> embeddedObjects
| Constructor Detail |
|---|
public OfficeDocument(java.lang.String name)
name - Document name.
public OfficeDocument(java.lang.String name,
boolean namespaceAware,
boolean validating)
namespaceAware
and validating flags.
name - Document name (may or may not
contain extension).namespaceAware - Value for namespaceAware flag.validating - Value for validating flag.| Method Detail |
|---|
private java.lang.String trimDocumentName(java.lang.String name)
Document
name.
name - Full Document name with extension.
Document without the extension.public boolean isPackageFormat()
public org.w3c.dom.Document getContentDOM()
Document object of the content.xml
file. Note that a content DOM is not created when the constructor
is called. So, either the read method or the
initContentDOM method will need to be called ahead
on this object before calling this method.
Document object.public org.w3c.dom.Document getMetaDOM()
Document object of the meta.xml
file. Note that a content DOM is not created when the constructor
is called. So, either the read method or the
initContentDOM method will need to be called ahead
on this object before calling this method.
Document object.public org.w3c.dom.Document getSettingsDOM()
Document object of the settings.xml
file. Note that a content DOM is not created when the constructor
is called. So, either the read method or the
initContentDOM method will need to be called ahead
on this object before calling this method.
Document object.public void setContentDOM(org.w3c.dom.Node newDom)
newDom - Node containing the new content tree.public void setMetaDOM(org.w3c.dom.Node newDom)
newDom - Node containing the new meta tree.public void setSettingsDOM(org.w3c.dom.Node newDom)
newDom - Node containing the new settings tree.public void setStyleDOM(org.w3c.dom.Node newDom)
newDom - Node containing the new style tree.public org.w3c.dom.Document getStyleDOM()
Document object of the style.xml file.
Note that this may return null if there is no style DOM.
Note that a style DOM is not created when the constructor
is called. Depending on the InputStream, a
read method may or may not build a style DOM. When
creating a new style DOM, call the initStyleDOM method
first.
Document object.public java.lang.String getName()
Document.
getName in interface DocumentDocument.public java.lang.String getFileName()
Document, possibly
with the standard extension.
getFileName in interface OutputFileDocument.protected java.lang.String getFileExtension()
Document.
Document.public java.util.Iterator getEmbeddedObjects()
Iterator of EmbeddedObject objects.public EmbeddedObject getEmbeddedObject(java.lang.String name)
name - The name of the embedded object to retrieve.
EmbeddedObject instance representing the named
object.public void addEmbeddedObject(EmbeddedObject embObj)
embObj - An instance of EmbeddedObject.
public void read(java.io.InputStream is)
throws java.io.IOException
Document from the given
InputStream.
FIX3 (HJ): Perform simple type detection to determine package or flat format
read in interface Documentis - Office document InputStream.
java.io.IOException - If any I/O error occurs.
private void readZip(java.io.InputStream is)
throws java.io.IOException
java.io.IOException
public void read(java.io.InputStream is,
boolean isZip)
throws java.io.IOException
Document from the given
InputStream.
is - Office document InputStream.isZip - boolean Identifies whether
a file is zipped or not
java.io.IOException - If any I/O error occurs.
static org.w3c.dom.Document parse(javax.xml.parsers.DocumentBuilder builder,
byte[] bytes)
throws org.xml.sax.SAXException,
java.io.IOException
byte array into a DOM
Document object using the
DocumentBuilder object.
builder - DocumentBuilder object for parsing.bytes - byte array for parsing.
Document object.
org.xml.sax.SAXException - If any parsing error occurs.
java.io.IOExceptionprotected java.lang.String getDocumentMimeType()
public void write(java.io.OutputStream os)
throws java.io.IOException
write in interface OutputFileos - XML OutputStream.
java.io.IOException - If any I/O error occurs.
public void write(java.io.OutputStream os,
boolean isZip)
throws java.io.IOException
os - XML OutputStream.isZip - boolean
java.io.IOException - If any I/O error occurs.
static byte[] docToBytes(org.w3c.dom.Document doc)
throws java.io.IOException
Write out a org.w3c.dom.Document object into a
byte array.
TODO: remove dependency on com.sun.xml.tree.XmlDocument package!
Document - DOM Document object.
byte array of DOM Document
object.
java.io.IOException - If any I/O error occurs.
public final void initContentDOM()
throws java.io.IOException
Document with the content
containing minimum OpenOffice XML tags.
java.io.IOException - If any I/O error occurs.
public final void initSettingsDOM()
throws java.io.IOException
Document with the content
containing minimum OpenOffice XML tags.
java.io.IOException - If any I/O error occurs.
public final void initStyleDOM()
throws java.io.IOException
java.io.IOException - If any I/O error occurs.
private final org.w3c.dom.Document createSettingsDOM(java.lang.String rootName)
throws java.io.IOException
Creates a new DOM Document containing minimum
OpenOffice XML tags.
This method uses the subclass
getOfficeClassAttribute method to get the
attribute for office:class.
rootName - root name of Document.
java.io.IOException - If any I/O error occurs.
private final org.w3c.dom.Document createDOM(java.lang.String rootName)
throws java.io.IOException
Creates a new DOM Document containing minimum
OpenOffice XML tags.
This method uses the subclass
getOfficeClassAttribute method to get the
attribute for office:class.
rootName - root name of Document.
java.io.IOException - If any I/O error occurs.protected java.lang.String getOfficeClassAttribute()
private static java.io.Reader hack(java.io.InputStream is)
throws java.io.IOException
Hacked code to filter tag before sending stream to parser.
This hacked code needs to be changed later on.
Issue: using current jaxp1.0 parser, there is no way to turn off processing of dtds. Current set of dtds have bugs, processing them will throw exceptions.
This is a simple hack that assumes the whole tag are all in the same line. This is sufficient for current StarOffice 6.0 generated XML files. Since this hack really needs to go away, I don't want to spend too much time in making it a perfect hack.
FIX (HJ): Removed requirement for DOCTYPE to be in one line FIX (HJ): No longer removes newlines
is - InputStream to be filtered.
java.io.IOException - If any I/O error occurs.
private static java.io.Reader secondHack(java.io.InputStream is)
throws java.io.IOException
Transform the InputStream to a Reader Stream.
This hacked code needs to be changed later on.
Issue: the new oasis input file stream means that the old input stream fails. see #i33702#
is - InputStream to be filtered.
java.io.IOException - If any I/O error occurs.
private void initManifestDOM()
throws java.io.IOException
java.io.IOException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||