|
||||||||||
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 Document
Document
.public java.lang.String getFileName()
Document
, possibly
with the standard extension.
getFileName
in interface OutputFile
Document
.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 Document
is
- 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.IOException
protected java.lang.String getDocumentMimeType()
public void write(java.io.OutputStream os) throws java.io.IOException
write
in interface OutputFile
os
- 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 |