From 7e07780e8a1559bd1ae7939b071b89e2824366ad Mon Sep 17 00:00:00 2001 From: "Andrew C. Oliver" Date: Sat, 11 May 2002 14:47:24 +0000 Subject: [PATCH] surgery PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352612 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hpsf/DocumentSummaryInformation.java | 304 ++++---- .../org/apache/poi/hpsf/HPSFException.java | 156 +++-- .../apache/poi/hpsf/HPSFRuntimeException.java | 157 +++-- .../poi/hpsf/MarkUnsupportedException.java | 139 ++-- .../hpsf/NoPropertySetStreamException.java | 145 ++-- .../poi/hpsf/NoSingleSectionException.java | 154 +++-- src/java/org/apache/poi/hpsf/Property.java | 421 ++++++------ src/java/org/apache/poi/hpsf/PropertySet.java | 648 ++++++++++-------- .../apache/poi/hpsf/PropertySetFactory.java | 142 ++-- src/java/org/apache/poi/hpsf/Section.java | 383 ++++++----- .../apache/poi/hpsf/SpecialPropertySet.java | 223 +++--- .../apache/poi/hpsf/SummaryInformation.java | 363 +++++----- src/java/org/apache/poi/hpsf/Thumbnail.java | 447 ++++++------ .../UnexpectedPropertySetTypeException.java | 145 ++-- src/java/org/apache/poi/hpsf/Util.java | 232 ++++--- src/java/org/apache/poi/hpsf/Variant.java | 399 ++++++----- .../poi/hpsf/wellknown/PropertyIDMap.java | 462 ++++++++----- .../poi/hpsf/wellknown/SectionIDMap.java | 249 +++---- 18 files changed, 2908 insertions(+), 2261 deletions(-) diff --git a/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java b/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java index 3cc2499f79..c14aeadafb 100644 --- a/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java +++ b/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java @@ -1,57 +1,57 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; import java.io.*; @@ -59,207 +59,257 @@ import java.util.*; import org.apache.poi.hpsf.wellknown.*; /** - *

Convenience class representing a DocumentSummary Information - * stream in a Microsoft Office document.

- * - * @see SummaryInformation + *

* - * @author Rainer Klute (klute@rainer-klute.de) - * @author Drew Varner (Drew.Varner closeTo sc.edu) + * Convenience class representing a DocumentSummary Information stream in a + * Microsoft Office document.

* - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@author Drew Varner (Drew.Varner closeTo sc.edu) + *@created May 10, 2002 + *@see SummaryInformation + *@version $Id: DocumentSummaryInformation.java,v 1.6 2002/05/03 07:29:09 + * klute Exp $ + *@since 2002-02-09 */ -public class DocumentSummaryInformation extends SpecialPropertySet -{ +public class DocumentSummaryInformation extends SpecialPropertySet { /** - *

Creates a {@link DocumentSummaryInformation} from a given - * {@link PropertySet}.

+ *

* - * @param ps A property set which should be created from a - * document summary information stream. + * Creates a {@link DocumentSummaryInformation} from a given {@link + * PropertySet}.

* - * @throws UnexpectedPropertySetTypeException if ps - * does not contain a document summary information stream. + *@param ps A property set which + * should be created from a document summary information stream. + *@exception UnexpectedPropertySetTypeException Description of the + * Exception + *@throws UnexpectedPropertySetTypeException if ps does not + * contain a document summary information stream. */ public DocumentSummaryInformation(final PropertySet ps) - throws UnexpectedPropertySetTypeException - { + throws UnexpectedPropertySetTypeException { super(ps); - if (!isDocumentSummaryInformation()) + if (!isDocumentSummaryInformation()) { throw new UnexpectedPropertySetTypeException - ("Not a " + getClass().getName()); + ("Not a " + getClass().getName()); + } } /** - *

Returns the stream's category (or null).

+ *

+ * + * Returns the stream's category (or null).

+ * + *@return The category value */ - public String getCategory() - { + public String getCategory() { return (String) getProperty(PropertyIDMap.PID_CATEGORY); } /** - *

Returns the stream's presentation format (or - * null).

+ *

+ * + * Returns the stream's presentation format (or null).

+ * + *@return The presentationFormat value */ - public String getPresentationFormat() - { + public String getPresentationFormat() { return (String) getProperty(PropertyIDMap.PID_PRESFORMAT); } /** - *

Returns the stream's byte count or 0 if the {@link - * DocumentSummaryInformation} does not contain a byte count.

+ *

+ * + * Returns the stream's byte count or 0 if the {@link + * DocumentSummaryInformation} does not contain a byte count.

+ * + *@return The byteCount value */ - public int getByteCount() - { + public int getByteCount() { return getPropertyIntValue(PropertyIDMap.PID_BYTECOUNT); } /** - *

Returns the stream's line count or 0 if the {@link - * DocumentSummaryInformation} does not contain a line count.

+ *

+ * + * Returns the stream's line count or 0 if the {@link + * DocumentSummaryInformation} does not contain a line count.

+ * + *@return The lineCount value */ - public int getLineCount() - { + public int getLineCount() { return getPropertyIntValue(PropertyIDMap.PID_LINECOUNT); } /** - *

Returns the stream's par count or 0 if the {@link - * DocumentSummaryInformation} does not contain a par count.

+ *

+ * + * Returns the stream's par count or 0 if the {@link + * DocumentSummaryInformation} does not contain a par count.

+ * + *@return The parCount value */ - public int getParCount() - { + public int getParCount() { return getPropertyIntValue(PropertyIDMap.PID_PARCOUNT); } /** - *

Returns the stream's slide count or 0 if the {@link - * DocumentSummaryInformation} does not contain a slide count.

+ *

+ * + * Returns the stream's slide count or 0 if the {@link + * DocumentSummaryInformation} does not contain a slide count.

+ * + *@return The slideCount value */ - public int getSlideCount() - { + public int getSlideCount() { return getPropertyIntValue(PropertyIDMap.PID_SLIDECOUNT); } /** - *

Returns the stream's note count or 0 if the {@link - * DocumentSummaryInformation} does not contain a note count.

+ *

+ * + * Returns the stream's note count or 0 if the {@link + * DocumentSummaryInformation} does not contain a note count.

+ * + *@return The noteCount value */ - public int getNoteCount() - { + public int getNoteCount() { return getPropertyIntValue(PropertyIDMap.PID_NOTECOUNT); } /** - *

Returns the stream's hidden count or 0 if the {@link - * DocumentSummaryInformation} does not contain a hidden count.

+ *

+ * + * Returns the stream's hidden count or 0 if the {@link + * DocumentSummaryInformation} does not contain a hidden count.

+ * + *@return The hiddenCount value */ - public int getHiddenCount() - { + public int getHiddenCount() { return getPropertyIntValue(PropertyIDMap.PID_HIDDENCOUNT); } /** - *

Returns the stream's mmclip count or 0 if the {@link - * DocumentSummaryInformation} does not contain a mmclip count.

+ *

+ * + * Returns the stream's mmclip count or 0 if the {@link + * DocumentSummaryInformation} does not contain a mmclip count.

+ * + *@return The mMClipCount value */ - public int getMMClipCount() - { + public int getMMClipCount() { return getPropertyIntValue(PropertyIDMap.PID_MMCLIPCOUNT); } /** - *

Returns true when scaling of the thumbnail is - * desired, false if cropping is desired.

+ *

+ * + * Returns true when scaling of the thumbnail is desired, + * false if cropping is desired.

+ * + *@return The scale value */ - public boolean getScale() - { + public boolean getScale() { return getPropertyBooleanValue(PropertyIDMap.PID_SCALE); } /** - *

Returns the stream's heading pair (or null) - * when this method is implemented. Please note that the - * return type is likely to change! + *

+ * + * Returns the stream's heading pair (or null) when + * this method is implemented. Please note that the return type is likely + * to change! + * + *@return The headingPair value */ - public byte[] getHeadingPair() - { - if (true) + public byte[] getHeadingPair() { + if (true) { throw new UnsupportedOperationException("FIXME"); + } return (byte[]) getProperty(PropertyIDMap.PID_HEADINGPAIR); } /** - *

Returns the stream's doc parts (or null) - * when this method is implemented. Please note that the - * return type is likely to change! + *

+ * + * Returns the stream's doc parts (or null) when this + * method is implemented. Please note that the return type is likely to + * change! + * + *@return The docparts value */ - public byte[] getDocparts() - { - if (true) + public byte[] getDocparts() { + if (true) { throw new UnsupportedOperationException("FIXME"); + } return (byte[]) getProperty(PropertyIDMap.PID_DOCPARTS); } /** - *

Returns the stream's manager (or null).

+ *

+ * + * Returns the stream's manager (or null).

+ * + *@return The manager value */ - public String getManager() - { + public String getManager() { return (String) getProperty(PropertyIDMap.PID_MANAGER); } /** - *

Returns the stream's company (or null).

+ *

+ * + * Returns the stream's company (or null).

+ * + *@return The company value */ - public String getCompany() - { + public String getCompany() { return (String) getProperty(PropertyIDMap.PID_COMPANY); } /** - *

Returns true if the custom links are hampered - * by excessive noise, for all applications.

+ *

+ * + * Returns true if the custom links are hampered by excessive + * noise, for all applications.

+ * + * FIXME: Explain this some more! I (Rainer) don't + * understand it.

* - *

FIXME: Explain this some more! I (Rainer) - * don't understand it.

+ *@return The linksDirty value */ - public boolean getLinksDirty() - { + public boolean getLinksDirty() { return getPropertyBooleanValue(PropertyIDMap.PID_LINKSDIRTY); } diff --git a/src/java/org/apache/poi/hpsf/HPSFException.java b/src/java/org/apache/poi/hpsf/HPSFException.java index 2856579ac2..f2143ca158 100644 --- a/src/java/org/apache/poi/hpsf/HPSFException.java +++ b/src/java/org/apache/poi/hpsf/HPSFException.java @@ -1,101 +1,109 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; /** - *

This exception is the superclass of all other checked exceptions - * thrown in this package. It supports a nested "reason" throwable, - * i.e. an exception that caused this one to be thrown.

+ *

+ * + * This exception is the superclass of all other checked exceptions thrown in + * this package. It supports a nested "reason" throwable, i.e. an exception + * that caused this one to be thrown.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id$ + *@since 2002-02-09 */ -public class HPSFException extends Exception -{ +public class HPSFException extends Exception { private Throwable reason; /** - *

Creates a new {@link HPSFException}.

+ *

+ * + * Creates a new {@link HPSFException}.

*/ - public HPSFException() - { + public HPSFException() { super(); } /** - *

Creates a new {@link HPSFException} with a message - * string.

+ *

+ * + * Creates a new {@link HPSFException} with a message string.

+ * + *@param msg Description of the Parameter */ - public HPSFException(final String msg) - { + public HPSFException(final String msg) { super(msg); } /** - *

Creates a new {@link HPSFException} with a reason.

+ *

+ * + * Creates a new {@link HPSFException} with a reason.

+ * + *@param reason Description of the Parameter */ - public HPSFException(final Throwable reason) - { + public HPSFException(final Throwable reason) { super(); this.reason = reason; } @@ -103,11 +111,15 @@ public class HPSFException extends Exception /** - *

Creates a new {@link HPSFException} with a message string - * and a reason.

+ *

+ * + * Creates a new {@link HPSFException} with a message string and a reason. + *

+ * + *@param msg Description of the Parameter + *@param reason Description of the Parameter */ - public HPSFException(final String msg, final Throwable reason) - { + public HPSFException(final String msg, final Throwable reason) { super(msg); this.reason = reason; } @@ -115,12 +127,14 @@ public class HPSFException extends Exception /** - *

Returns the {@link Throwable} that caused this exception to - * be thrown or null if there was no such {@link - * Throwable}.

+ *

+ * + * Returns the {@link Throwable} that caused this exception to be thrown or + * null if there was no such {@link Throwable}.

+ * + *@return The reason value */ - public Throwable getReason() - { + public Throwable getReason() { return reason; } diff --git a/src/java/org/apache/poi/hpsf/HPSFRuntimeException.java b/src/java/org/apache/poi/hpsf/HPSFRuntimeException.java index 12bce3be02..64b01f10d7 100644 --- a/src/java/org/apache/poi/hpsf/HPSFRuntimeException.java +++ b/src/java/org/apache/poi/hpsf/HPSFRuntimeException.java @@ -1,101 +1,110 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; /** - *

This exception is the superclass of all other unchecked - * exceptions thrown in this package. It supports a nested "reason" - * throwable, i.e. an exception that caused this one to be thrown.

+ *

+ * + * This exception is the superclass of all other unchecked exceptions thrown in + * this package. It supports a nested "reason" throwable, i.e. an exception + * that caused this one to be thrown.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id: HPSFRuntimeException.java,v 1.3 2002/05/01 09:31:52 klute Exp + * $ + *@since 2002-02-09 */ -public class HPSFRuntimeException extends RuntimeException -{ +public class HPSFRuntimeException extends RuntimeException { private Throwable reason; /** - *

Creates a new {@link HPSFRuntimeException}.

+ *

+ * + * Creates a new {@link HPSFRuntimeException}.

*/ - public HPSFRuntimeException() - { + public HPSFRuntimeException() { super(); } /** - *

Creates a new {@link HPSFRuntimeException} with a message - * string.

+ *

+ * + * Creates a new {@link HPSFRuntimeException} with a message string.

+ * + *@param msg Description of the Parameter */ - public HPSFRuntimeException(final String msg) - { + public HPSFRuntimeException(final String msg) { super(msg); } /** - *

Creates a new {@link HPSFRuntimeException} with a reason.

+ *

+ * + * Creates a new {@link HPSFRuntimeException} with a reason.

+ * + *@param reason Description of the Parameter */ - public HPSFRuntimeException(final Throwable reason) - { + public HPSFRuntimeException(final Throwable reason) { super(); this.reason = reason; } @@ -103,11 +112,15 @@ public class HPSFRuntimeException extends RuntimeException /** - *

Creates a new {@link HPSFRuntimeException} with a message string - * and a reason.

+ *

+ * + * Creates a new {@link HPSFRuntimeException} with a message string and a + * reason.

+ * + *@param msg Description of the Parameter + *@param reason Description of the Parameter */ - public HPSFRuntimeException(final String msg, final Throwable reason) - { + public HPSFRuntimeException(final String msg, final Throwable reason) { super(msg); this.reason = reason; } @@ -115,12 +128,14 @@ public class HPSFRuntimeException extends RuntimeException /** - *

Returns the {@link Throwable} that caused this exception to - * be thrown or null if there was no such {@link - * Throwable}.

+ *

+ * + * Returns the {@link Throwable} that caused this exception to be thrown or + * null if there was no such {@link Throwable}.

+ * + *@return The reason value */ - public Throwable getReason() - { + public Throwable getReason() { return reason; } diff --git a/src/java/org/apache/poi/hpsf/MarkUnsupportedException.java b/src/java/org/apache/poi/hpsf/MarkUnsupportedException.java index 9695053d00..12b1ad74d1 100644 --- a/src/java/org/apache/poi/hpsf/MarkUnsupportedException.java +++ b/src/java/org/apache/poi/hpsf/MarkUnsupportedException.java @@ -1,87 +1,108 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; /** - *

This exception is thrown if an {@link java.io.InputStream} does - * not support the {@link java.io.InputStream#mark} operation.

+ *

+ * + * This exception is thrown if an {@link java.io.InputStream} does not support + * the {@link java.io.InputStream#mark} operation.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id: MarkUnsupportedException.java,v 1.3 2002/05/01 09:31:52 klute + * Exp $ + *@since 2002-02-09 */ -public class MarkUnsupportedException extends HPSFException -{ +public class MarkUnsupportedException extends HPSFException { - public MarkUnsupportedException() - { + /** + * Constructor for the MarkUnsupportedException object + */ + public MarkUnsupportedException() { super(); } - public MarkUnsupportedException(final String msg) - { + + /** + * Constructor for the MarkUnsupportedException object + * + *@param msg Description of the Parameter + */ + public MarkUnsupportedException(final String msg) { super(msg); } - public MarkUnsupportedException(final Throwable reason) - { + + /** + * Constructor for the MarkUnsupportedException object + * + *@param reason Description of the Parameter + */ + public MarkUnsupportedException(final Throwable reason) { super(reason); } - public MarkUnsupportedException(final String msg, final Throwable reason) - { + + /** + * Constructor for the MarkUnsupportedException object + * + *@param msg Description of the Parameter + *@param reason Description of the Parameter + */ + public MarkUnsupportedException(final String msg, final Throwable reason) { super(msg, reason); } diff --git a/src/java/org/apache/poi/hpsf/NoPropertySetStreamException.java b/src/java/org/apache/poi/hpsf/NoPropertySetStreamException.java index c1770897e1..6dad0a893b 100644 --- a/src/java/org/apache/poi/hpsf/NoPropertySetStreamException.java +++ b/src/java/org/apache/poi/hpsf/NoPropertySetStreamException.java @@ -1,92 +1,113 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; /** - *

This exception is thrown if a format error in a property set - * stream is detected or when the input data do not constitute a - * property set stream.

+ *

+ * + * This exception is thrown if a format error in a property set stream is + * detected or when the input data do not constitute a property set stream.

+ *

* - *

The constructors of this class are analogous to those of its - * superclass and documented there.

+ * The constructors of this class are analogous to those of its superclass and + * documented there.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id: NoPropertySetStreamException.java,v 1.3 2002/05/01 09:31:52 + * klute Exp $ + *@since 2002-02-09 */ -public class NoPropertySetStreamException extends HPSFException -{ +public class NoPropertySetStreamException extends HPSFException { - public NoPropertySetStreamException() - { + /** + * Constructor for the NoPropertySetStreamException object + */ + public NoPropertySetStreamException() { super(); } - public NoPropertySetStreamException(final String msg) - { + + /** + * Constructor for the NoPropertySetStreamException object + * + *@param msg Description of the Parameter + */ + public NoPropertySetStreamException(final String msg) { super(msg); } - public NoPropertySetStreamException(final Throwable reason) - { + + /** + * Constructor for the NoPropertySetStreamException object + * + *@param reason Description of the Parameter + */ + public NoPropertySetStreamException(final Throwable reason) { super(reason); } + + /** + * Constructor for the NoPropertySetStreamException object + * + *@param msg Description of the Parameter + *@param reason Description of the Parameter + */ public NoPropertySetStreamException(final String msg, - final Throwable reason) - { + final Throwable reason) { super(msg, reason); } diff --git a/src/java/org/apache/poi/hpsf/NoSingleSectionException.java b/src/java/org/apache/poi/hpsf/NoSingleSectionException.java index 7e97df7b4c..904353c52e 100644 --- a/src/java/org/apache/poi/hpsf/NoSingleSectionException.java +++ b/src/java/org/apache/poi/hpsf/NoSingleSectionException.java @@ -1,93 +1,113 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; /** - *

This exception is thrown if one of the {@link PropertySet}'s - * convenience methods that require a single {@link Section} is called - * and the {@link PropertySet} does not contain exactly one {@link - * Section}.

+ *

+ * + * This exception is thrown if one of the {@link PropertySet}'s convenience + * methods that require a single {@link Section} is called and the {@link + * PropertySet} does not contain exactly one {@link Section}.

* - *

The constructors of this class are analogous to those of its - * superclass and documented there.

+ * The constructors of this class are analogous to those of its superclass and + * documented there.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id: NoSingleSectionException.java,v 1.3 2002/05/01 09:31:52 klute + * Exp $ + *@since 2002-02-09 */ -public class NoSingleSectionException extends HPSFRuntimeException -{ +public class NoSingleSectionException extends HPSFRuntimeException { - public NoSingleSectionException() - { - super(); + /** + * Constructor for the NoSingleSectionException object + */ + public NoSingleSectionException() { + super(); } - public NoSingleSectionException(final String msg) - { - super(msg); + + /** + * Constructor for the NoSingleSectionException object + * + *@param msg Description of the Parameter + */ + public NoSingleSectionException(final String msg) { + super(msg); } - public NoSingleSectionException(final Throwable reason) - { - super(reason); + + /** + * Constructor for the NoSingleSectionException object + * + *@param reason Description of the Parameter + */ + public NoSingleSectionException(final Throwable reason) { + super(reason); } - public NoSingleSectionException(final String msg, final Throwable reason) - { - super(msg, reason); + + /** + * Constructor for the NoSingleSectionException object + * + *@param msg Description of the Parameter + *@param reason Description of the Parameter + */ + public NoSingleSectionException(final String msg, final Throwable reason) { + super(msg, reason); } } diff --git a/src/java/org/apache/poi/hpsf/Property.java b/src/java/org/apache/poi/hpsf/Property.java index 09d7a77a8d..10e83437bc 100644 --- a/src/java/org/apache/poi/hpsf/Property.java +++ b/src/java/org/apache/poi/hpsf/Property.java @@ -1,121 +1,127 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . -* -* Portions of this software are based upon public domain software -* originally written at the National Center for Supercomputing Applications, -* University of Illinois, Urbana-Champaign. + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . * - * Portions of this software are based upon public domain software - * originally written at the National Center for Supercomputing Applications, - * University of Illinois, Urbana-Champaign. + * Portions of this software are based upon public domain software + * originally written at the National Center for Supercomputing Applications, + * University of Illinois, Urbana-Champaign. + * + * Portions of this software are based upon public domain software + * originally written at the National Center for Supercomputing Applications, + * University of Illinois, Urbana-Champaign. */ - package org.apache.poi.hpsf; import java.util.*; -import org.apache.poi.hpsf.littleendian.*; +import org.apache.poi.util.LittleEndian; /** - *

A property in a {@link Section} of a {@link PropertySet}.

- * - *

The property's ID gives the property a meaning - * in the context of its {@link Section}. Each {@link Section} spans - * its own name space of property IDs.

+ *

* - *

The property's type determines how its - * value is interpreted. For example, if the type is - * {@link Variant#VT_LPSTR} (byte string), the value consists of a - * {@link DWord} telling how many bytes the string contains. The bytes - * follow immediately, including any null bytes that terminate the - * string. The type {@link Variant#VT_I4} denotes a four-byte integer - * value, {@link Variant#VT_FILETIME} some date and time (of a - * file).

+ * A property in a {@link Section} of a {@link PropertySet}.

* - *

FIXME: Reading of other types than those - * mentioned above and the dictionary property is not yet - * implemented.

+ * The property's ID gives the property a meaning in the + * context of its {@link Section}. Each {@link Section} spans its own name + * space of property IDs.

* - * @see Section - * @see Variant + * The property's type determines how its value + * is interpreted. For example, if the type is {@link + * Variant#VT_LPSTR} (byte string), the value consists of a {@link DWord} + * telling how many bytes the string contains. The bytes follow immediately, + * including any null bytes that terminate the string. The type {@link + * Variant#VT_I4} denotes a four-byte integer value, {@link + * Variant#VT_FILETIME} some date and time (of a file).

* - * @author Rainer Klute (klute@rainer-klute.de) - * @author Drew Varner (Drew.Varner InAndAround sc.edu) + * FIXME: Reading of other types than those mentioned above + * and the dictionary property is not yet implemented.

* - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@author Drew Varner (Drew.Varner InAndAround sc.edu) + *@created May 10, 2002 + *@see Section + *@see Variant + *@version $Id$ + *@since 2002-02-09 */ -public class Property -{ +public class Property { private int id; + /** - *

Returns the property's ID.

+ *

+ * + * Returns the property's ID.

+ * + *@return The iD value */ - public int getID() - { + public int getID() { return id; } - private int type; + private long type; + /** - *

Returns the property's type.

+ *

+ * + * Returns the property's type.

+ * + *@return The type value */ - public int getType() - { + public long getType() { return type; } @@ -123,44 +129,47 @@ public class Property private Object value; + /** - *

Returns the property value's.

+ *

+ * + * Returns the property value's.

+ * + *@return The value value */ - public Object getValue() - { + public Object getValue() { return value; } /** - *

Creates a {@link Property} instance by reading its bytes - * from the property set stream.

+ *

* - * @param id The property's ID. + * Creates a {@link Property} instance by reading its bytes from the + * property set stream.

* - * @param src The bytes the property set stream consists of. - * - * @param offset The property's type/value pair's offset in the - * section. - * - * @param length The property's type/value pair's length in bytes. - * list. + *@param id The property's ID. + *@param src The bytes the property set stream consists of. + *@param offset The property's type/value pair's offset in the section. + *@param length The property's type/value pair's length in bytes. list. */ - public Property(final int id, final byte[] src, final int offset, - int length) - { + public Property(final int id, final byte[] src, final long offset, + int length) { this.id = id; - /* ID 0 is a special case since it specifies a dictionary of - * property IDs and property names. */ - if (id == 0) - { + /* + * ID 0 is a special case since it specifies a dictionary of + * property IDs and property names. + */ + if (id == 0) { value = readDictionary(src, offset, length); return; } - /* FIXME: Support this! */ + /* + * FIXME: Support this! + */ // /* ID 1 is another special case: It denotes the code page of // * byte strings in this section. */ // if (id == 1) @@ -169,89 +178,103 @@ public class Property // return; // } - int o = offset; - type = new DWord(src, o).intValue(); - o += DWord.LENGTH; + int o = (int) offset; + type = LittleEndian.getUInt(src, o); + o += LittleEndian.INT_SIZE; - /* FIXME: Support reading more types! */ - switch (type) - { + /* + * FIXME: Support reading more types! + */ + switch ((int)type) { case Variant.VT_I4: { - /* Read a word. In Java it is represented as an - Integer object. */ - value = new Integer(new DWord(src, o).intValue()); + /* + * Read a word. In Java it is represented as an + * Integer object. + */ + value = new Long(LittleEndian.getUInt(src, o)); break; } case Variant.VT_FILETIME: { - /* Read a FILETIME object. In Java it is represented - as a Date. */ - final int low = new DWord(src, o).intValue(); - o += DWord.LENGTH; - final int high = new DWord(src, o).intValue(); - value = Util.filetimeToDate(high, low); + /* + * Read a FILETIME object. In Java it is represented + * as a Date. + */ + final long low = LittleEndian.getUInt(src, o); + o += LittleEndian.INT_SIZE; + final long high = LittleEndian.getUInt(src, o); + value = Util.filetimeToDate((int)high, (int)low); break; } case Variant.VT_LPSTR: { - /* Read a byte string. In Java it is represented as a - String. The null bytes at the end of the byte - strings must be stripped. */ - final int first = o + DWord.LENGTH; - int last = first + new DWord(src, o).intValue() - 1; - o += DWord.LENGTH; - while (src[last] == 0 && first <= last) + /* + * Read a byte string. In Java it is represented as a + * String. The null bytes at the end of the byte + * strings must be stripped. + */ + final int first = o + LittleEndian.INT_SIZE; + long last = first + LittleEndian.getUInt(src, o) - 1; + o += LittleEndian.INT_SIZE; + while (src[(int)last] == 0 && first <= last) { last--; - value = new String(src, first, last - first + 1); + } + value = new String(src, (int)first, (int)(last - first + 1)); break; } case Variant.VT_CF: { - /* The first four bytes in src, from rc[offset] to - * src[offset + 3] contain the DWord for VT_CF, so - * skip it, we don't need it. */ - - /* Truncate the length of the return array by a DWord - * length (4 bytes). */ - length = length - DWord.LENGTH; + /* + * The first four bytes in src, from rc[offset] to + * src[offset + 3] contain the DWord for VT_CF, so + * skip it, we don't need it. + */ + /* + * Truncate the length of the return array by a DWord + * length (4 bytes). + */ + length = length - LittleEndian.INT_SIZE; final byte[] v = new byte[length]; - for (int i = 0; i < length; i++) - v[i] = src[o + i]; + for (int i = 0; i < length; i++) { + v[i] = src[(int)(o + i)]; + } value = v; break; } case Variant.VT_BOOL: { - /* The first four bytes in src, from src[offset] to - * src[offset + 3] contain the DWord for VT_BOOL, so - * skip it, we don't need it. */ - final int first = o + DWord.LENGTH; - DWord bool = new DWord(src,o); - if (bool.intValue() == -1) - { + /* + * The first four bytes in src, from src[offset] to + * src[offset + 3] contain the DWord for VT_BOOL, so + * skip it, we don't need it. + */ + final int first = o + LittleEndian.INT_SIZE; + long bool = LittleEndian.getUInt(src, o); + if (bool == -1) { value = new Boolean(true); - } - else if (bool.intValue() == 0) - { + } else if (bool == 0) { value = new Boolean(false); - } - else - /* FIXME: Someone might invent a new - * HPSFRuntimeException subclass - * IllegalPropertySetDataException for this and - * similar cases. */ + } else { + /* + * FIXME: Someone might invent a new + * HPSFRuntimeException subclass + * IllegalPropertySetDataException for this and + * similar cases. + */ throw new HPSFRuntimeException - ("Illegal property set data: A boolean must be " + - "either -1 (true) or 0 (false)."); + ("Illegal property set data: A boolean must be " + + "either -1 (true) or 0 (false)."); + } break; } default: { final byte[] v = new byte[length]; - for (int i = 0; i < length; i++) - v[i] = src[offset + i]; + for (int i = 0; i < length; i++) { + v[i] = src[(int)(offset + i)]; + } value = v; break; } @@ -261,41 +284,51 @@ public class Property /** - *

Reads a dictionary.

+ *

* - * @param src The byte array containing the bytes making out the - * dictionary. + * Reads a dictionary.

* - * @param offset At this offset within src the - * dictionary starts. - * - * @param length The dictionary contains at most this many bytes. + *@param src The byte array containing the bytes making out the + * dictionary. + *@param offset At this offset within src the dictionary + * starts. + *@param length The dictionary contains at most this many bytes. + *@return Description of the Return Value */ - protected Map readDictionary(final byte[] src, final int offset, - final int length) - { - /* FIXME: Check the length! */ - int o = offset; - - /* Read the number of dictionary entries. */ - final int nrEntries = new DWord(src, o).intValue(); - o += DWord.LENGTH; - - final Map m = new HashMap(nrEntries, (float) 1.0); - for (int i = 0; i < nrEntries; i++) - { - /* The key */ - final Integer id = new Integer(new DWord(src, o).intValue()); - o += DWord.LENGTH; - - /* The value (a string) */ - final int sLength = new DWord(src, o).intValue(); - o += DWord.LENGTH; - /* Strip trailing 0x00 bytes. */ - int l = sLength; - while (src[o + l - 1] == 0x00) + protected Map readDictionary(final byte[] src, final long offset, + final int length) { + /* + * FIXME: Check the length! + */ + int o = (int)offset; + + /* + * Read the number of dictionary entries. + */ + final long nrEntries = LittleEndian.getUInt(src, o); + o += LittleEndian.INT_SIZE; + + final Map m = new HashMap((int)nrEntries, (float) 1.0); + for (int i = 0; i < nrEntries; i++) { + /* + * The key + */ + final Long id = new Long(LittleEndian.getUInt(src, o)); + o += LittleEndian.INT_SIZE; + + /* + * The value (a string) + */ + final long sLength = LittleEndian.getUInt(src, o); + o += LittleEndian.INT_SIZE; + /* + * Strip trailing 0x00 bytes. + */ + long l = sLength; + while (src[(int)(o + l - 1)] == 0x00) { l--; - final String s = new String(src, o, l); + } + final String s = new String(src, o, (int)l); o += sLength; m.put(id, s); } @@ -305,16 +338,16 @@ public class Property /** - *

Reads a code page.

+ *

* - * @param src The byte array containing the bytes making out the - * code page. + * Reads a code page.

* - * @param offset At this offset within src the code - * page starts. + *@param src The byte array containing the bytes making out the code + * page. + *@param offset At this offset within src the code page starts. + *@return Description of the Return Value */ - protected int readCodePage(final byte[] src, final int offset) - { + protected int readCodePage(final byte[] src, final long offset) { throw new UnsupportedOperationException("FIXME"); } diff --git a/src/java/org/apache/poi/hpsf/PropertySet.java b/src/java/org/apache/poi/hpsf/PropertySet.java index 0ac0e37835..80f94cf9f9 100644 --- a/src/java/org/apache/poi/hpsf/PropertySet.java +++ b/src/java/org/apache/poi/hpsf/PropertySet.java @@ -1,57 +1,57 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; import java.io.*; @@ -61,71 +61,77 @@ import org.apache.poi.hpsf.wellknown.*; import org.apache.poi.poifs.filesystem.*; /** - *

Represents a property set in the Horrible Property Set Format - * (HPSF). These are usually metadata of a Microsoft Office - * document.

- * - *

An application that wants to access these metadata should create - * an instance of this class or one of its subclasses by calling the - * factory method {@link PropertySetFactory#create} and then retrieve - * the information its needs by calling appropriate methods.

+ *

* - *

{@link PropertySetFactory#create} does its work by calling one - * of the constructors {@link PropertySet#PropertySet(InputStream)} or - * {@link PropertySet#PropertySet(byte[])}. If the constructor's - * argument is not in the Horrible Property Set Format, i.e. not a - * property set stream, or if any other error occurs, an appropriate - * exception is thrown.

+ * Represents a property set in the Horrible Property Set Format (HPSF). These + * are usually metadata of a Microsoft Office document.

* - *

A {@link PropertySet} has a list of {@link Section}s, and each - * {@link Section} has a {@link Property} array. Use {@link - * #getSections} to retrieve the {@link Section}s, then call {@link - * Section#getProperties} for each {@link Section} to get hold of the - * {@link Property} arrays.

+ * An application that wants to access these metadata should create an instance + * of this class or one of its subclasses by calling the factory method {@link + * PropertySetFactory#create} and then retrieve the information its needs by + * calling appropriate methods.

* - * Since the vast majority of {@link PropertySet}s contains only a - * single {@link Section}, the convenience method {@link - * #getProperties} returns the properties of a {@link PropertySet}'s - * {@link Section} (throwing a {@link NoSingleSectionException} if the - * {@link PropertySet} contains more (or less) than exactly one {@link - * Section}). + * {@link PropertySetFactory#create} does its work by calling one of the + * constructors {@link PropertySet#PropertySet(InputStream)} or {@link + * PropertySet#PropertySet(byte[])}. If the constructor's argument is not in + * the Horrible Property Set Format, i.e. not a property set stream, or if any + * other error occurs, an appropriate exception is thrown.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @author Drew Varner (Drew.Varner hanginIn sc.edu) + * A {@link PropertySet} has a list of {@link Section}s, and each {@link + * Section} has a {@link Property} array. Use {@link #getSections} to retrieve + * the {@link Section}s, then call {@link Section#getProperties} for each + * {@link Section} to get hold of the {@link Property} arrays.

Since the + * vast majority of {@link PropertySet}s contains only a single {@link + * Section}, the convenience method {@link #getProperties} returns the + * properties of a {@link PropertySet}'s {@link Section} (throwing a {@link + * NoSingleSectionException} if the {@link PropertySet} contains more (or less) + * than exactly one {@link Section}). * - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@author Drew Varner (Drew.Varner hanginIn sc.edu) + *@created May 10, 2002 + *@version $Id$ + *@since 2002-02-09 */ -public class PropertySet -{ - static final byte[] BYTE_ORDER_ASSERTION = - new byte[] {(byte) 0xFF, (byte) 0xFE}; - static final byte[] FORMAT_ASSERTION = - new byte[] {(byte) 0x00, (byte) 0x00}; +public class PropertySet { + final static byte[] BYTE_ORDER_ASSERTION = + new byte[]{(byte) 0xFF, (byte) 0xFE}; + final static byte[] FORMAT_ASSERTION = + new byte[]{(byte) 0x00, (byte) 0x00}; + private Word byteOrder; - private Word byteOrder; // Must equal BYTE_ORDER_ASSERTION + // Must equal BYTE_ORDER_ASSERTION /** - *

Returns the property set stream's low-level "byte order" - * field. It is always 0xFFFE.

+ *

+ * + * Returns the property set stream's low-level "byte order" field. It is + * always 0xFFFE .

+ * + *@return The byteOrder value */ - public Word getByteOrder() - { + public Word getByteOrder() { return byteOrder; } - private Word format; // Must equal FORMAT_ASSERTION + private Word format; + + + // Must equal FORMAT_ASSERTION /** - *

Returns the property set stream's low-level "format" - * field. It is always 0x0000.

+ *

+ * + * Returns the property set stream's low-level "format" field. It is always + * 0x0000 .

+ * + *@return The format value */ - public Word getFormat() - { + public Word getFormat() { return format; } @@ -133,12 +139,15 @@ public class PropertySet private DWord osVersion; + /** - *

Returns the property set stream's low-level "OS version" - * field.

+ *

+ * + * Returns the property set stream's low-level "OS version" field.

+ * + *@return The oSVersion value */ - public DWord getOSVersion() - { + public DWord getOSVersion() { return osVersion; } @@ -146,12 +155,15 @@ public class PropertySet private ClassID classID; + /** - *

Returns the property set stream's low-level "class ID" - * field.

+ *

+ * + * Returns the property set stream's low-level "class ID" field.

+ * + *@return The classID value */ - public ClassID getClassID() - { + public ClassID getClassID() { return classID; } @@ -159,12 +171,15 @@ public class PropertySet private int sectionCount; + /** - *

Returns the number of {@link Section}s in the property - * set.

+ *

+ * + * Returns the number of {@link Section}s in the property set.

+ * + *@return The sectionCount value */ - public int getSectionCount() - { + public int getSectionCount() { return sectionCount; } @@ -172,148 +187,161 @@ public class PropertySet private List sections; + /** - *

Returns the {@link Section}s in the property set.

+ *

+ * + * Returns the {@link Section}s in the property set.

+ * + *@return The sections value */ - public List getSections() - { + public List getSections() { return sections; } /** - *

Creates an empty (uninitialized) {@link PropertySet}.

+ *

* - *

Please note: For the time being this - * constructor is protected since it is used for internal purposes - * only, but expect it to become public once the property set - * writing functionality is implemented.

+ * Creates an empty (uninitialized) {@link PropertySet}.

+ * + * Please note: For the time being this constructor is + * protected since it is used for internal purposes only, but expect it to + * become public once the property set writing functionality is + * implemented.

*/ - protected PropertySet() - {} + protected PropertySet() { } /** - *

Creates a {@link PropertySet} instance from an {@link - * InputStream} in the Horrible Property Set Format.

- * - *

The constructor reads the first few bytes from the stream - * and determines whether it is really a property set stream. If - * it is, it parses the rest of the stream. If it is not, it - * resets the stream to its beginning in order to let other - * components mess around with the data and throws an - * exception.

+ *

* - * @throws NoPropertySetStreamException if the stream is not a - * property set stream. + * Creates a {@link PropertySet} instance from an {@link InputStream} in + * the Horrible Property Set Format.

* - * @throws MarkUnsupportedException if the stream does not support - * the {@link InputStream#markSupported} method. + * The constructor reads the first few bytes from the stream and determines + * whether it is really a property set stream. If it is, it parses the rest + * of the stream. If it is not, it resets the stream to its beginning in + * order to let other components mess around with the data and throws an + * exception.

* - * @throws IOException if the {@link InputStream} cannot not be - * accessed as needed. + *@param stream Description of the Parameter + *@exception NoPropertySetStreamException Description of the Exception + *@exception MarkUnsupportedException Description of the Exception + *@exception IOException Description of the Exception + *@throws NoPropertySetStreamException if the stream is not a property + * set stream. + *@throws MarkUnsupportedException if the stream does not support + * the {@link InputStream#markSupported} method. + *@throws IOException if the {@link InputStream} + * cannot not be accessed as needed. */ public PropertySet(final InputStream stream) - throws NoPropertySetStreamException, MarkUnsupportedException, - IOException - { - if (isPropertySetStream(stream)) - { + throws NoPropertySetStreamException, MarkUnsupportedException, + IOException { + if (isPropertySetStream(stream)) { final int avail = stream.available(); final byte[] buffer = new byte[avail]; stream.read(buffer, 0, buffer.length); init(buffer, 0, buffer.length); - } - else + } else { throw new NoPropertySetStreamException(); + } } /** - *

Creates a {@link PropertySet} instance from a byte array - * that represents a stream in the Horrible Property Set - * Format.

- * - * @param stream The byte array holding the stream data. - * - * @param offset The offset in stream where the stream - * data begin. If the stream data begin with the first byte in the - * array, the offset is 0. + *

* - * @param length The length of the stream data. + * Creates a {@link PropertySet} instance from a byte array that represents + * a stream in the Horrible Property Set Format.

* - * @throws NoPropertySetStreamException if the byte array is not a - * property set stream. + *@param stream The byte array holding the + * stream data. + *@param offset The offset in stream + * where the stream data begin. If the stream data begin with the first + * byte in the array, the offset is 0. + *@param length The length of the stream data. + *@exception NoPropertySetStreamException Description of the Exception + *@throws NoPropertySetStreamException if the byte array is not a + * property set stream. */ public PropertySet(final byte[] stream, final int offset, final int length) - throws NoPropertySetStreamException - { - if (isPropertySetStream(stream, offset, length)) + throws NoPropertySetStreamException { + if (isPropertySetStream(stream, offset, length)) { init(stream, offset, length); - else + } else { throw new NoPropertySetStreamException(); + } } /** - *

Creates a {@link PropertySet} instance from a byte array - * that represents a stream in the Horrible Property Set - * Format.

+ *

* - * @param stream The byte array holding the stream data. The - * complete byte array contents is the stream data. + * Creates a {@link PropertySet} instance from a byte array that represents + * a stream in the Horrible Property Set Format.

* - * @throws NoPropertySetStreamException if the byte array is not a - * property set stream. + *@param stream The byte array holding the + * stream data. The complete byte array contents is the stream data. + *@exception NoPropertySetStreamException Description of the Exception + *@throws NoPropertySetStreamException if the byte array is not a + * property set stream. */ public PropertySet(final byte[] stream) - throws NoPropertySetStreamException - { + throws NoPropertySetStreamException { this(stream, 0, stream.length); } /** - *

Checks whether an {@link InputStream} is in the Horrible - * Property Set Format.

- * - * @param stream The {@link InputStream} to check. In order to - * perform the check, the method reads the first bytes from the - * stream. After reading, the stream is reset to the position it - * had before reading. The {@link InputStream} must support the - * {@link InputStream#mark} method. + *

* - * @return true if the stream is a property set - * stream, else false. + * Checks whether an {@link InputStream} is in the Horrible Property Set + * Format.

* - * @throws MarkUnsupportedException if the {@link InputStream} - * does not support the {@link InputStream#mark} method. + *@param stream The {@link InputStream} to check. In + * order to perform the check, the method reads the first bytes from + * the stream. After reading, the stream is reset to the position it + * had before reading. The {@link InputStream} must support the {@link + * InputStream#mark} method. + *@return true if the stream is a + * property set stream, else false. + *@exception IOException Description of the Exception + *@throws MarkUnsupportedException if the {@link InputStream} does not + * support the {@link InputStream#mark} method. */ public static boolean isPropertySetStream(final InputStream stream) - throws MarkUnsupportedException, IOException - { - /* Read at most this many bytes. */ + throws MarkUnsupportedException, IOException { + /* + * Read at most this many bytes. + */ final int BUFFER_SIZE = 50; - /* Mark the current position in the stream so that we can - * reset to this position if the stream does not contain a - * property set. */ - if (!stream.markSupported()) + /* + * Mark the current position in the stream so that we can + * reset to this position if the stream does not contain a + * property set. + */ + if (!stream.markSupported()) { throw new MarkUnsupportedException(stream.getClass().getName()); + } stream.mark(BUFFER_SIZE); - /* Read a couple of bytes from the stream. */ + /* + * Read a couple of bytes from the stream. + */ final byte[] buffer = new byte[BUFFER_SIZE]; final int bytes = - stream.read(buffer, 0, - Math.min(buffer.length, stream.available())); + stream.read(buffer, 0, + Math.min(buffer.length, stream.available())); final boolean isPropertySetStream = - isPropertySetStream(buffer, 0, bytes); + isPropertySetStream(buffer, 0, bytes); stream.reset(); return isPropertySetStream; } @@ -321,54 +349,63 @@ public class PropertySet /** - *

Checks whether a byte array is in the Horrible Property Set - * Format.

- * - * @param src The byte array to check. + *

* - * @param offset The offset in the byte array. + * Checks whether a byte array is in the Horrible Property Set Format.

* - * @param length The significant number of bytes in the byte - * array. Only this number of bytes will be checked. - * - * @return true if the byte array is a property set - * stream, false if not. + *@param src The byte array to check. + *@param offset The offset in the byte array. + *@param length The significant number of bytes in the byte array. Only + * this number of bytes will be checked. + *@return true if the byte array is a property set + * stream, false if not. */ public static boolean isPropertySetStream(final byte[] src, int offset, - final int length) - { - /* Read the header fields of the stream. They must always be - * there. */ + final int length) { + /* + * Read the header fields of the stream. They must always be + * there. + */ final Word byteOrder = new Word(src, offset); offset += Word.LENGTH; - if (!Util.equal(byteOrder.getBytes(), BYTE_ORDER_ASSERTION)) + if (!Util.equal(byteOrder.getBytes(), BYTE_ORDER_ASSERTION)) { return false; + } final Word format = new Word(src, offset); offset += Word.LENGTH; - if (!Util.equal(format.getBytes(), FORMAT_ASSERTION)) + if (!Util.equal(format.getBytes(), FORMAT_ASSERTION)) { return false; + } final DWord osVersion = new DWord(src, offset); offset += DWord.LENGTH; final ClassID classID = new ClassID(src, offset); offset += ClassID.LENGTH; final DWord sectionCount = new DWord(src, offset); offset += DWord.LENGTH; - if (sectionCount.intValue() < 1) + if (sectionCount.intValue() < 1) { return false; + } return true; } /** - *

Initializes this {@link PropertySet} instance from a byte - * array. The method assumes that it has been checked already that - * the byte array indeed represents a property set stream. It does - * no more checks on its own.

+ *

+ * + * Initializes this {@link PropertySet} instance from a byte array. The + * method assumes that it has been checked already that the byte array + * indeed represents a property set stream. It does no more checks on its + * own.

+ * + *@param src Description of the Parameter + *@param offset Description of the Parameter + *@param length Description of the Parameter */ - private void init(final byte[] src, int offset, final int length) - { - /* Read the stream's header fields. */ + private void init(final byte[] src, int offset, final int length) { + /* + * Read the stream's header fields. + */ byteOrder = new Word(src, offset); offset += Word.LENGTH; format = new Word(src, offset); @@ -380,21 +417,26 @@ public class PropertySet sectionCount = new DWord(src, offset).intValue(); offset += DWord.LENGTH; - /* Read the sections, which are following the header. They - * start with an array of section descriptions. Each one - * consists of a format ID telling what the section contains - * and an offset telling how many bytes from the start of the - * stream the section begins. */ - /* Most property sets have only one section. The Document - * Summary Information stream has 2. Everything else is a rare - * exception and is no longer fostered by Microsoft. */ + /* + * Read the sections, which are following the header. They + * start with an array of section descriptions. Each one + * consists of a format ID telling what the section contains + * and an offset telling how many bytes from the start of the + * stream the section begins. + */ + /* + * Most property sets have only one section. The Document + * Summary Information stream has 2. Everything else is a rare + * exception and is no longer fostered by Microsoft. + */ sections = new ArrayList(2); - /* Loop over the section descriptor array. Each descriptor - * consists of a ClassID and a DWord, and we have to increment - * "offset" accordingly. */ - for (int i = 0; i < sectionCount; i++) - { + /* + * Loop over the section descriptor array. Each descriptor + * consists of a ClassID and a DWord, and we have to increment + * "offset" accordingly. + */ + for (int i = 0; i < sectionCount; i++) { final Section s = new Section(src, offset); offset += ClassID.LENGTH + DWord.LENGTH; sections.add(s); @@ -404,141 +446,155 @@ public class PropertySet /** - *

Checks whether this {@link PropertySet} represents a Summary - * Information.

+ *

+ * + * Checks whether this {@link PropertySet} represents a Summary + * Information.

+ * + *@return The summaryInformation value */ - public boolean isSummaryInformation() - { + public boolean isSummaryInformation() { return Util.equal(((Section) sections.get(0)).getFormatID().getBytes(), - SectionIDMap.SUMMARY_INFORMATION_ID); + SectionIDMap.SUMMARY_INFORMATION_ID); } /** - *

Checks whether this {@link PropertySet} is a Document - * Summary Information.

+ *

+ * + * Checks whether this {@link PropertySet} is a Document Summary + * Information.

+ * + *@return The documentSummaryInformation value */ - public boolean isDocumentSummaryInformation() - { + public boolean isDocumentSummaryInformation() { return Util.equal(((Section) sections.get(0)).getFormatID().getBytes(), - SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID); + SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID); } /** - *

Convenience method returning the {@link Property} array - * contained in this property set. It is a shortcut for getting - * the {@link PropertySet}'s {@link Section}s list and then - * getting the {@link Property} array from the first {@link - * Section}. However, it can only be used if the {@link - * PropertySet} contains exactly one {@link Section}, so check - * {@link #getSectionCount} first!

- * - * @return The properties of the only {@link Section} of this - * {@link PropertySet}. - * - * @throws NoSingleSectionException if the {@link PropertySet} has - * more or less than one {@link Section}. + *

+ * + * Convenience method returning the {@link Property} array contained in + * this property set. It is a shortcut for getting the {@link + * PropertySet}'s {@link Section}s list and then getting the {@link + * Property} array from the first {@link Section}. However, it can only be + * used if the {@link PropertySet} contains exactly one {@link Section}, so + * check {@link #getSectionCount} first!

+ * + *@return The properties of the only {@link + * Section} of this {@link PropertySet}. + *@throws NoSingleSectionException if the {@link PropertySet} has more or + * less than one {@link Section}. */ public Property[] getProperties() - throws NoSingleSectionException - { + throws NoSingleSectionException { return getSingleSection().getProperties(); } /** - *

Convenience method returning the value of the property with - * the specified ID. If the property is not available, - * null is returned and a subsequent call to {@link - * #wasNull} will return true.

+ *

* - * @throws NoSingleSectionException if the {@link PropertySet} has - * more or less than one {@link Section}. + * Convenience method returning the value of the property with the + * specified ID. If the property is not available, null is + * returned and a subsequent call to {@link #wasNull} will return true + * .

+ * + *@param id Description of the Parameter + *@return The property value + *@throws NoSingleSectionException if the {@link PropertySet} has more or + * less than one {@link Section}. */ protected Object getProperty(final int id) - throws NoSingleSectionException - { + throws NoSingleSectionException { return getSingleSection().getProperty(id); } /** - *

Convenience method returning the value of a boolean property - * with the specified ID. If the property is not available, - * false is returned. A subsequent call to {@link - * #wasNull} will return true to let the caller - * distinguish that case from a real property value of - * false.

- * - * @throws NoSingleSectionException if the {@link PropertySet} has - * more or less than one {@link Section}. + *

+ * + * Convenience method returning the value of a boolean property with the + * specified ID. If the property is not available, false is + * returned. A subsequent call to {@link #wasNull} will return true + * to let the caller distinguish that case from a real property value of + * false.

+ * + *@param id Description of the Parameter + *@return The propertyBooleanValue value + *@throws NoSingleSectionException if the {@link PropertySet} has more or + * less than one {@link Section}. */ protected boolean getPropertyBooleanValue(final int id) - throws NoSingleSectionException - { + throws NoSingleSectionException { return getSingleSection().getPropertyBooleanValue(id); } /** - *

Convenience method returning the value of the numeric - * property with the specified ID. If the property is not - * available, 0 is returned. A subsequent call to {@link #wasNull} - * will return true to let the caller distinguish - * that case from a real property value of 0.

- * - * @throws NoSingleSectionException if the {@link PropertySet} has - * more or less than one {@link Section}. + *

+ * + * Convenience method returning the value of the numeric property with the + * specified ID. If the property is not available, 0 is returned. A + * subsequent call to {@link #wasNull} will return true to let + * the caller distinguish that case from a real property value of 0.

+ * + *@param id Description of the Parameter + *@return The propertyIntValue value + *@throws NoSingleSectionException if the {@link PropertySet} has more or + * less than one {@link Section}. */ protected int getPropertyIntValue(final int id) - throws NoSingleSectionException - { + throws NoSingleSectionException { return getSingleSection().getPropertyIntValue(id); } /** - *

Checks whether the property which the last call to {@link - * #getPropertyIntValue} or {@link #getProperty} tried to access - * was available or not. This information might be important for - * callers of {@link #getPropertyIntValue} since the latter - * returns 0 if the property does not exist. Using {@link - * #wasNull}, the caller can distiguish this case from a - * property's real value of 0.

- * - * @return true if the last call to {@link - * #getPropertyIntValue} or {@link #getProperty} tried to access a - * property that was not available, else false. - * - * @throws NoSingleSectionException if the {@link PropertySet} has - * more than one {@link Section}. + *

+ * + * Checks whether the property which the last call to {@link + * #getPropertyIntValue} or {@link #getProperty} tried to access was + * available or not. This information might be important for callers of + * {@link #getPropertyIntValue} since the latter returns 0 if the property + * does not exist. Using {@link #wasNull}, the caller can distiguish this + * case from a property's real value of 0.

+ * + *@return true if the last call to + * {@link #getPropertyIntValue} or {@link #getProperty} tried to access + * a property that was not available, else false. + *@throws NoSingleSectionException if the {@link PropertySet} has more + * than one {@link Section}. */ - public boolean wasNull() throws NoSingleSectionException - { + public boolean wasNull() throws NoSingleSectionException { return getSingleSection().wasNull(); } /** - *

If the {@link PropertySet} has only a single section this - * method returns it.

+ *

+ * + * If the {@link PropertySet} has only a single section this method returns + * it.

* - * @throws NoSingleSectionException if the {@link PropertySet} has - * more or less than exactly one {@link Section}. + *@return The singleSection value + *@throws NoSingleSectionException if the {@link PropertySet} has more or + * less than exactly one {@link Section}. */ - public Section getSingleSection() - { - if (sectionCount != 1) + public Section getSingleSection() { + if (sectionCount != 1) { throw new NoSingleSectionException - ("Property set contains " + sectionCount + " sections."); + ("Property set contains " + sectionCount + " sections."); + } return ((Section) sections.get(0)); } diff --git a/src/java/org/apache/poi/hpsf/PropertySetFactory.java b/src/java/org/apache/poi/hpsf/PropertySetFactory.java index 10da676f6d..e6d9a518ee 100644 --- a/src/java/org/apache/poi/hpsf/PropertySetFactory.java +++ b/src/java/org/apache/poi/hpsf/PropertySetFactory.java @@ -1,93 +1,107 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; import java.io.*; /** - *

Factory class to create instances of {@link SummaryInformation}, - * {@link DocumentSummaryInformation} and {@link PropertySet}.

+ *

+ * + * Factory class to create instances of {@link SummaryInformation}, {@link + * DocumentSummaryInformation} and {@link PropertySet}.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id$ + *@since 2002-02-09 */ -public class PropertySetFactory -{ +public class PropertySetFactory { /** - *

Creates the most specific {@link PropertySet} from an {@link - * InputStream}. This is preferrably a {@link - * DocumentSummaryInformation} or a {@link SummaryInformation}. If - * the specified {@link InputStream} does not contain a property - * set stream, an exception is thrown and the {@link InputStream} - * is repositioned at its beginning.

+ *

+ * + * Creates the most specific {@link PropertySet} from an {@link + * InputStream}. This is preferrably a {@link DocumentSummaryInformation} + * or a {@link SummaryInformation}. If the specified {@link InputStream} + * does not contain a property set stream, an exception is thrown and the + * {@link InputStream} is repositioned at its beginning.

* - * @param stream Contains the property set stream's data. + *@param stream Contains the property set + * stream's data. + *@return Description of the Return + * Value + *@exception NoPropertySetStreamException Description of the + * Exception + *@exception MarkUnsupportedException Description of the + * Exception + *@exception UnexpectedPropertySetTypeException Description of the + * Exception + *@exception IOException Description of the + * Exception */ public static PropertySet create(final InputStream stream) - throws NoPropertySetStreamException, MarkUnsupportedException, - UnexpectedPropertySetTypeException, IOException - { + throws NoPropertySetStreamException, MarkUnsupportedException, + UnexpectedPropertySetTypeException, IOException { final PropertySet ps = new PropertySet(stream); - if (ps.isSummaryInformation()) + if (ps.isSummaryInformation()) { return new SummaryInformation(ps); - else if (ps.isDocumentSummaryInformation()) + } else if (ps.isDocumentSummaryInformation()) { return new DocumentSummaryInformation(ps); - else + } else { return ps; + } } } diff --git a/src/java/org/apache/poi/hpsf/Section.java b/src/java/org/apache/poi/hpsf/Section.java index 03072bfd05..d24a040f50 100644 --- a/src/java/org/apache/poi/hpsf/Section.java +++ b/src/java/org/apache/poi/hpsf/Section.java @@ -1,103 +1,111 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; import java.util.*; -import org.apache.poi.hpsf.littleendian.*; +import org.apache.poi.util.LittleEndian; import org.apache.poi.hpsf.wellknown.*; /** - *

Represents a section in a {@link PropertySet}.

+ *

* - * @author Rainer Klute (klute@rainer-klute.de) - * @author Drew Varner (Drew.Varner allUpIn sc.edu) + * Represents a section in a {@link PropertySet}.

* - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@author Drew Varner (Drew.Varner allUpIn sc.edu) + *@created May 10, 2002 + *@version $Id$ + *@since 2002-02-09 */ -public class Section -{ +public class Section { /** - *

Maps property IDs to section-private PID strings. These - * strings can be found in the property with ID 0.

+ *

+ * + * Maps property IDs to section-private PID strings. These strings can be + * found in the property with ID 0.

*/ protected Map dictionary; - - private ClassID formatID; + /** - *

Returns the format ID. The format ID is the "type" of the - * section.

+ *

+ * + * Returns the format ID. The format ID is the "type" of the section.

+ * + *@return The formatID value */ - public ClassID getFormatID() - { + public ClassID getFormatID() { return formatID; } - private int offset; + private long offset; + /** - *

Returns the offset of the section in the stream.

+ *

+ * + * Returns the offset of the section in the stream.

+ * + *@return The offset value */ - public int getOffset() - { + public int getOffset() { return offset; } @@ -105,11 +113,15 @@ public class Section private int size; + /** - *

Returns the section's size in bytes.

+ *

+ * + * Returns the section's size in bytes.

+ * + *@return The size value */ - public int getSize() - { + public int getSize() { return size; } @@ -117,11 +129,15 @@ public class Section private int propertyCount; + /** - *

Returns the number of properties in this section.

+ *

+ * + * Returns the number of properties in this section.

+ * + *@return The propertyCount value */ - public int getPropertyCount() - { + public int getPropertyCount() { return propertyCount; } @@ -129,86 +145,113 @@ public class Section private Property[] properties; + /** - *

Returns this section's properties.

+ *

+ * + * Returns this section's properties.

+ * + *@return The properties value */ - public Property[] getProperties() - { + public Property[] getProperties() { return properties; } /** - *

Creates a {@link Section} instance from a byte array.

+ *

* - * @param src Contains the complete property set stream. + * Creates a {@link Section} instance from a byte array.

* - * @param offset The position in the stream that points to the - * section's format ID. + *@param src Contains the complete property set stream. + *@param offset The position in the stream that points to the section's + * format ID. */ - public Section(final byte[] src, int offset) - { - /* Read the format ID. */ + public Section(final byte[] src, int offset) { + /* + * Read the format ID. + */ formatID = new ClassID(src, offset); offset += ClassID.LENGTH; - /* Read the offset from the stream's start and positions to - * the section header. */ - this.offset = new DWord(src, offset).intValue(); - offset = this.offset; - - /* Read the section length. */ - size = new DWord(src, offset).intValue(); - offset += DWord.LENGTH; - - /* Read the number of properties. */ - propertyCount = new DWord(src, offset).intValue(); - offset += DWord.LENGTH; - - /* Read the properties. The offset is positioned at the first - * entry of the property list. */ + /* + * Read the offset from the stream's start and positions to + * the section header. + */ + this.offset = LittleEndian.getUInt(src, offset); + offset = (int)this.offset; + + /* + * Read the section length. + */ + size = (int)LittleEndian.getUInt(src, offset); + offset += LittleEndian.INT_SIZE; + + /* + * Read the number of properties. + */ + propertyCount = (int)LittleEndian.getUInt(src, offset); + offset += LittleEndian.INT_SIZE; + + /* + * Read the properties. The offset is positioned at the first + * entry of the property list. + */ properties = new Property[propertyCount]; - for (int i = 0; i < properties.length; i++) - { - final int id = new DWord(src, offset).intValue(); - offset += DWord.LENGTH; - - /* Offset from the section. */ - final int sOffset = new DWord(src, offset).intValue(); - offset += DWord.LENGTH; - - /* Calculate the length of the property. */ + for (int i = 0; i < properties.length; i++) { + final int id = (int)LittleEndian.getUInt(src, offset); + offset += LittleEndian.INT_SIZE; + + /* + * Offset from the section. + */ + final int sOffset = (int)LittleEndian.getUInt(src, offset); + offset += LittleEndian.INT_SIZE; + + /* + * Calculate the length of the property. + */ int length; - if (i == properties.length - 1) - length = src.length - this.offset - sOffset; - else - length = - new DWord(src, offset + DWord.LENGTH).intValue() - sOffset; - - /* Create it. */ + if (i == properties.length - 1) { + length = (int)(src.length - this.offset - sOffset); + } else { + length = (int) + LittleEndian.getUInt(src, offset + LittleEndian.INT_SIZE) - sOffset; + } + + /* + * Create it. + */ properties[i] = - new Property(id, src, this.offset + sOffset, length); + new Property(id, src, this.offset + sOffset, length); } - /* Extract the dictionary (if available). */ + /* + * Extract the dictionary (if available). + */ dictionary = (Map) getProperty(0); } /** - *

Returns the value of the property with the specified ID. If - * the property is not available, null is returned - * and a subsequent call to {@link #wasNull} will return - * true.

+ *

+ * + * Returns the value of the property with the specified ID. If the property + * is not available, null is returned and a subsequent call to + * {@link #wasNull} will return true.

+ * + *@param id Description of the Parameter + *@return The property value */ - protected Object getProperty(final int id) - { + protected Object getProperty(final int id) { wasNull = false; - for (int i = 0; i < properties.length; i++) - if (id == properties[i].getID()) + for (int i = 0; i < properties.length; i++) { + if (id == properties[i].getID()) { return properties[i].getValue(); + } + } wasNull = true; return null; } @@ -216,78 +259,94 @@ public class Section /** - *

Returns the value of the numeric property with the specified - * ID. If the property is not available, 0 is returned. A - * subsequent call to {@link #wasNull} will return - * true to let the caller distinguish that case from - * a real property value of 0.

+ *

+ * + * Returns the value of the numeric property with the specified ID. If the + * property is not available, 0 is returned. A subsequent call to {@link + * #wasNull} will return true to let the caller distinguish + * that case from a real property value of 0.

+ * + *@param id Description of the Parameter + *@return The propertyIntValue value */ - protected int getPropertyIntValue(final int id) - { + protected int getPropertyIntValue(final int id) { final Integer i = (Integer) getProperty(id); - if (i != null) + if (i != null) { return i.intValue(); - else + } else { return 0; + } } /** - *

Returns the value of the boolean property with the specified - * ID. If the property is not available, false is - * returned. A subsequent call to {@link #wasNull} will return - * true to let the caller distinguish that case from - * a real property value of false.

+ *

+ * + * Returns the value of the boolean property with the specified ID. If the + * property is not available, false is returned. A subsequent + * call to {@link #wasNull} will return true to let the caller + * distinguish that case from a real property value of false. + *

+ * + *@param id Description of the Parameter + *@return The propertyBooleanValue value */ - protected boolean getPropertyBooleanValue(final int id) - { + protected boolean getPropertyBooleanValue(final int id) { final Boolean b = (Boolean) getProperty(id); - if (b != null) + if (b != null) { return b.booleanValue(); - else + } else { return false; + } } private boolean wasNull; + /** - *

Checks whether the property which the last call to {@link - * #getPropertyIntValue} or {@link #getProperty} tried to access - * was available or not. This information might be important for - * callers of {@link #getPropertyIntValue} since the latter - * returns 0 if the property does not exist. Using {@link - * #wasNull} the caller can distiguish this case from a property's - * real value of 0.

+ *

+ * + * Checks whether the property which the last call to {@link + * #getPropertyIntValue} or {@link #getProperty} tried to access was + * available or not. This information might be important for callers of + * {@link #getPropertyIntValue} since the latter returns 0 if the property + * does not exist. Using {@link #wasNull} the caller can distiguish this + * case from a property's real value of 0.

* - * @return true if the last call to {@link - * #getPropertyIntValue} or {@link #getProperty} tried to access a - * property that was not available, else false. + *@return true if the last call to {@link + * #getPropertyIntValue} or {@link #getProperty} tried to access a + * property that was not available, else false. */ - public boolean wasNull() - { + public boolean wasNull() { return wasNull; } /** - *

Returns the PID string associated with a property ID. The ID - * is first looked up in the {@link Section}'s private - * dictionary. If it is not found there, the method calls {@link - * SectionIDMap#getPIDString}.

+ *

+ * + * Returns the PID string associated with a property ID. The ID is first + * looked up in the {@link Section}'s private dictionary. If it is not + * found there, the method calls {@link SectionIDMap#getPIDString}.

+ * + *@param pid Description of the Parameter + *@return The pIDString value */ - public String getPIDString(final int pid) - { + public String getPIDString(final int pid) { String s = null; - if (dictionary != null) + if (dictionary != null) { s = (String) dictionary.get(new Integer(pid)); - if (s == null) - s = SectionIDMap.getPIDString(getFormatID().getBytes(), pid); - if (s == null) + } + if (s == null) { + s = SectionIDMap.getPIDString(getFormatID().getBytes(), pid); + } + if (s == null) { s = SectionIDMap.UNDEFINED; + } return s; } diff --git a/src/java/org/apache/poi/hpsf/SpecialPropertySet.java b/src/java/org/apache/poi/hpsf/SpecialPropertySet.java index 0d92e6fdba..9b8a7cd365 100644 --- a/src/java/org/apache/poi/hpsf/SpecialPropertySet.java +++ b/src/java/org/apache/poi/hpsf/SpecialPropertySet.java @@ -1,164 +1,205 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; import java.util.*; import org.apache.poi.hpsf.littleendian.*; /** - *

Abstract superclass for the convenience classes {@link - * SummaryInformation} and {@link DocumentSummaryInformation}.

+ *

+ * + * Abstract superclass for the convenience classes {@link SummaryInformation} + * and {@link DocumentSummaryInformation}.

* - *

The motivation behind this class is quite nasty if you look - * behind the scenes, but it serves the application programmer well by - * providing him with the easy-to-use {@link SummaryInformation} and - * {@link DocumentSummaryInformation} classes. When parsing the data a - * property set stream consists of (possibly coming from an {@link - * java.io.InputStream}) we want to read and process each byte only - * once. Since we don't know in advance which kind of property set we - * have, we can expect only the most general {@link - * PropertySet}. Creating a special subclass should be as easy as - * calling the special subclass' constructor and pass the general - * {@link PropertySet} in. To make things easy internally, the special - * class just holds a reference to the general {@link PropertySet} and - * delegates all method calls to it.

+ * The motivation behind this class is quite nasty if you look behind the + * scenes, but it serves the application programmer well by providing him with + * the easy-to-use {@link SummaryInformation} and {@link + * DocumentSummaryInformation} classes. When parsing the data a property set + * stream consists of (possibly coming from an {@link java.io.InputStream}) we + * want to read and process each byte only once. Since we don't know in advance + * which kind of property set we have, we can expect only the most general + * {@link PropertySet}. Creating a special subclass should be as easy as + * calling the special subclass' constructor and pass the general {@link + * PropertySet} in. To make things easy internally, the special class just + * holds a reference to the general {@link PropertySet} and delegates all + * method calls to it.

* - *

A cleaner implementation would have been like this: The {@link - * PropertySetFactory} parses the stream data into some internal - * object first. Then it finds out whether the stream is a {@link - * SummaryInformation}, a {@link DocumentSummaryInformation} or a - * general {@link PropertySet}. However, the current implementation - * went the other way round historically: the convenience classes came - * only late to my mind.

+ * A cleaner implementation would have been like this: The {@link + * PropertySetFactory} parses the stream data into some internal object first. + * Then it finds out whether the stream is a {@link SummaryInformation}, a + * {@link DocumentSummaryInformation} or a general {@link PropertySet}. + * However, the current implementation went the other way round historically: + * the convenience classes came only late to my mind.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id$ + *@since 2002-02-09 */ -public abstract class SpecialPropertySet extends PropertySet -{ +public abstract class SpecialPropertySet extends PropertySet { private PropertySet delegate; - public SpecialPropertySet(PropertySet ps) - { + /** + * Constructor for the SpecialPropertySet object + * + *@param ps Description of the Parameter + */ + public SpecialPropertySet(PropertySet ps) { delegate = ps; } - public Word getByteOrder() - { + /** + * Gets the byteOrder attribute of the SpecialPropertySet object + * + *@return The byteOrder value + */ + public Word getByteOrder() { return delegate.getByteOrder(); } - public Word getFormat() - { + /** + * Gets the format attribute of the SpecialPropertySet object + * + *@return The format value + */ + public Word getFormat() { return delegate.getFormat(); } - public DWord getOSVersion() - { + /** + * Gets the oSVersion attribute of the SpecialPropertySet object + * + *@return The oSVersion value + */ + public DWord getOSVersion() { return delegate.getOSVersion(); } - public ClassID getClassID() - { + /** + * Gets the classID attribute of the SpecialPropertySet object + * + *@return The classID value + */ + public ClassID getClassID() { return delegate.getClassID(); } - public int getSectionCount() - { + /** + * Gets the sectionCount attribute of the SpecialPropertySet object + * + *@return The sectionCount value + */ + public int getSectionCount() { return delegate.getSectionCount(); } - public List getSections() - { + /** + * Gets the sections attribute of the SpecialPropertySet object + * + *@return The sections value + */ + public List getSections() { return delegate.getSections(); } - public boolean isSummaryInformation() - { + /** + * Gets the summaryInformation attribute of the SpecialPropertySet object + * + *@return The summaryInformation value + */ + public boolean isSummaryInformation() { return delegate.isSummaryInformation(); } - public boolean isDocumentSummaryInformation() - { + /** + * Gets the documentSummaryInformation attribute of the SpecialPropertySet + * object + * + *@return The documentSummaryInformation value + */ + public boolean isDocumentSummaryInformation() { return delegate.isDocumentSummaryInformation(); } - public Section getSingleSection() - { + /** + * Gets the singleSection attribute of the SpecialPropertySet object + * + *@return The singleSection value + */ + public Section getSingleSection() { return delegate.getSingleSection(); } diff --git a/src/java/org/apache/poi/hpsf/SummaryInformation.java b/src/java/org/apache/poi/hpsf/SummaryInformation.java index 78402fbe51..64e04f53e2 100644 --- a/src/java/org/apache/poi/hpsf/SummaryInformation.java +++ b/src/java/org/apache/poi/hpsf/SummaryInformation.java @@ -1,61 +1,61 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . * - * Portions of this software are based upon public domain software - * originally written at the National Center for Supercomputing Applications, - * University of Illinois, Urbana-Champaign. + * Portions of this software are based upon public domain software + * originally written at the National Center for Supercomputing Applications, + * University of Illinois, Urbana-Champaign. */ - package org.apache.poi.hpsf; import java.io.*; @@ -63,256 +63,311 @@ import java.util.*; import org.apache.poi.hpsf.wellknown.*; /** - *

Convenience class representing a Summary Information stream in a - * Microsoft Office document.

+ *

* - *

See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/stgu_8910.asp - * for documentation from That Redmond Company. + * Convenience class representing a Summary Information stream in a Microsoft + * Office document.

* - * @see DocumentSummaryInformation + * See + * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/stgu_8910.asp + * for documentation from That Redmond Company. * - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@see DocumentSummaryInformation + *@version $Id$ + *@since 2002-02-09 */ -public class SummaryInformation extends SpecialPropertySet -{ +public class SummaryInformation extends SpecialPropertySet { /** - *

Creates a {@link SummaryInformation} from a given {@link - * PropertySet}.

+ *

* - * @param ps A property set which should be created from a summary - * information stream. + * Creates a {@link SummaryInformation} from a given {@link PropertySet}. + *

* - * @throws UnexpectedPropertySetTypeException if ps - * does not contain a summary information stream. + *@param ps A property set which + * should be created from a summary information stream. + *@exception UnexpectedPropertySetTypeException Description of the + * Exception + *@throws UnexpectedPropertySetTypeException if ps does not + * contain a summary information stream. */ public SummaryInformation(final PropertySet ps) - throws UnexpectedPropertySetTypeException - { + throws UnexpectedPropertySetTypeException { super(ps); - if (!isSummaryInformation()) + if (!isSummaryInformation()) { throw new UnexpectedPropertySetTypeException - ("Not a " + getClass().getName()); + ("Not a " + getClass().getName()); + } } /** - *

Returns the stream's title (or null).

+ *

+ * + * Returns the stream's title (or null).

+ * + *@return The title value */ - public String getTitle() - { + public String getTitle() { return (String) getProperty(PropertyIDMap.PID_TITLE); } /** - *

Returns the stream's subject (or null).

+ *

+ * + * Returns the stream's subject (or null).

+ * + *@return The subject value */ - public String getSubject() - { + public String getSubject() { return (String) getProperty(PropertyIDMap.PID_SUBJECT); } /** - *

Returns the stream's author (or null).

+ *

+ * + * Returns the stream's author (or null).

+ * + *@return The author value */ - public String getAuthor() - { + public String getAuthor() { return (String) getProperty(PropertyIDMap.PID_AUTHOR); } /** - *

Returns the stream's keywords (or null).

+ *

+ * + * Returns the stream's keywords (or null).

+ * + *@return The keywords value */ - public String getKeywords() - { + public String getKeywords() { return (String) getProperty(PropertyIDMap.PID_KEYWORDS); } /** - *

Returns the stream's comments (or null).

+ *

+ * + * Returns the stream's comments (or null).

+ * + *@return The comments value */ - public String getComments() - { + public String getComments() { return (String) getProperty(PropertyIDMap.PID_COMMENTS); } /** - *

Returns the stream's template (or null).

+ *

+ * + * Returns the stream's template (or null).

+ * + *@return The template value */ - public String getTemplate() - { + public String getTemplate() { return (String) getProperty(PropertyIDMap.PID_TEMPLATE); } /** - *

Returns the stream's last author (or null).

+ *

+ * + * Returns the stream's last author (or null).

+ * + *@return The lastAuthor value */ - public String getLastAuthor() - { + public String getLastAuthor() { return (String) getProperty(PropertyIDMap.PID_LASTAUTHOR); } /** - *

Returns the stream's revision number (or - * null). -

*/ - public String getRevNumber() - { + *

+ * + * Returns the stream's revision number (or null).

+ * + *@return The revNumber value + */ + public String getRevNumber() { return (String) getProperty(PropertyIDMap.PID_REVNUMBER); } /** - *

Returns the stream's edit time (or null).

+ *

+ * + * Returns the stream's edit time (or null).

+ * + *@return The editTime value */ - public Date getEditTime() - { + public Date getEditTime() { return (Date) getProperty(PropertyIDMap.PID_EDITTIME); } /** - *

Returns the stream's last printed time (or - * null).

+ *

+ * + * Returns the stream's last printed time (or null).

+ * + *@return The lastPrinted value */ - public Date getLastPrinted() - { + public Date getLastPrinted() { return (Date) getProperty(PropertyIDMap.PID_LASTPRINTED); } /** - *

Returns the stream's creation time (or - * null).

+ *

+ * + * Returns the stream's creation time (or null).

+ * + *@return The createDateTime value */ - public Date getCreateDateTime() - { + public Date getCreateDateTime() { return (Date) getProperty(PropertyIDMap.PID_CREATE_DTM); } /** - *

Returns the stream's last save time (or - * null).

+ *

+ * + * Returns the stream's last save time (or null).

+ * + *@return The lastSaveDateTime value */ - public Date getLastSaveDateTime() - { + public Date getLastSaveDateTime() { return (Date) getProperty(PropertyIDMap.PID_LASTSAVE_DTM); } /** - *

Returns the stream's page count or 0 if the {@link - * SummaryInformation} does not contain a page count.

+ *

+ * + * Returns the stream's page count or 0 if the {@link SummaryInformation} + * does not contain a page count.

+ * + *@return The pageCount value */ - public int getPageCount() - { + public int getPageCount() { return getPropertyIntValue(PropertyIDMap.PID_PAGECOUNT); } /** - *

Returns the stream's word count or 0 if the {@link - * SummaryInformation} does not contain a word count.

+ *

+ * + * Returns the stream's word count or 0 if the {@link SummaryInformation} + * does not contain a word count.

+ * + *@return The wordCount value */ - public int getWordCount() - { + public int getWordCount() { return getPropertyIntValue(PropertyIDMap.PID_WORDCOUNT); } /** - *

Returns the stream's char count or 0 if the {@link - * SummaryInformation} does not contain a char count.

+ *

+ * + * Returns the stream's char count or 0 if the {@link SummaryInformation} + * does not contain a char count.

+ * + *@return The charCount value */ - public int getCharCount() - { + public int getCharCount() { return getPropertyIntValue(PropertyIDMap.PID_CHARCOUNT); } /** - *

Returns the stream's thumbnail (or null) - * when this method is implemented. Please note that the - * return type is likely to change! - * - *

FIXME / Hint to developers: Drew Varner - * <Drew.Varner -at- sc.edu> said that this is an image in WMF - * or Clipboard (BMP?) format. He also provided two links that - * might be helpful: http://www.csn.ul.ie/~caolan/publink/file/OLE2SummaryAgainst_file-3.27.patch - * and http://msdn.microsoft.com/library/en-us/dno97ta/html/msdn_docprop.asp. - * However, we won't do any conversion into any image type but - * instead just return a byte array.

+ *

+ * + * Returns the stream's thumbnail (or null) when this + * method is implemented. Please note that the return type is likely to + * change!

+ * + * FIXME / Hint to developers: Drew Varner <Drew.Varner + * -at- sc.edu> said that this is an image in WMF or Clipboard (BMP?) + * format. He also provided two links that might be helpful: http://www.csn.ul.ie/~caolan/publink/file/OLE2SummaryAgainst_file-3.27.patch + * and http://msdn.microsoft.com/library/en-us/dno97ta/html/msdn_docprop.asp + * . However, we won't do any conversion into any image type but + * instead just return a byte array.

+ * + *@return The thumbnail value */ - public byte[] getThumbnail() - { + public byte[] getThumbnail() { return (byte[]) getProperty(PropertyIDMap.PID_THUMBNAIL); } /** - *

Returns the stream's application name (or - * null).

+ *

+ * + * Returns the stream's application name (or null).

+ * + *@return The applicationName value */ - public String getApplicationName() - { + public String getApplicationName() { return (String) getProperty(PropertyIDMap.PID_APPNAME); } /** - *

Returns one of the following values:

+ *

+ * + * Returns one of the following values:

+ *
    + *
  • * - *

      + * 0 if the {@link SummaryInformation} does not contain a security field + * or if there is no security on the document. Use {@link #wasNull} to + * distinguish between the two cases!

      + *
    • * - *

    • 0 if the {@link SummaryInformation} does not contain a - * security field or if there is no security on the document. Use - * {@link #wasNull} to distinguish between the two cases!

    • + * 1 if the document is password protected

      + *
    • * - *

    • 1 if the document is password protected

    • + * 2 if the document is read-only recommended

      + *
    • * - *

    • 2 if the document is read-only recommended

    • + * 4 if the document is read-only enforced

      + *
    • * - *

    • 4 if the document is read-only enforced

    • + * 8 if the document is locked for annotations

      + *
    * - *
  • 8 if the document is locked for annotations

  • * - *
+ *@return The security value */ - public int getSecurity() - { + public int getSecurity() { return getPropertyIntValue(PropertyIDMap.PID_SECURITY); } diff --git a/src/java/org/apache/poi/hpsf/Thumbnail.java b/src/java/org/apache/poi/hpsf/Thumbnail.java index 006d7d1665..19c3fa9892 100644 --- a/src/java/org/apache/poi/hpsf/Thumbnail.java +++ b/src/java/org/apache/poi/hpsf/Thumbnail.java @@ -1,247 +1,248 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; import org.apache.poi.hpsf.littleendian.DWord; /** - *

Class to manipulate data in the Clipboard Variant - * ({@link Variant#VT_CF VT_CF}) format.

+ *

* - * @see SummaryInformation#getThumbnail() + * Class to manipulate data in the Clipboard Variant ({@link Variant#VT_CF + * VT_CF}) format.

* - * @author Drew Varner (Drew.Varner inOrAround sc.edu) - * @version $Id$ - * @since 2002-04-29 + *@author Drew Varner (Drew.Varner inOrAround sc.edu) + *@created May 10, 2002 + *@see SummaryInformation#getThumbnail() + *@version $Id$ + *@since 2002-04-29 */ -public class Thumbnail -{ - - +public class Thumbnail { /** - *

Offset in bytes where the Clipboard Format Tag - * starts in the byte[] returned by - * {@link SummaryInformation#getThumbnail()}

+ *

+ * + * Offset in bytes where the Clipboard Format Tag starts in the byte[] + * returned by {@link SummaryInformation#getThumbnail()}

*/ public static int OFFSET_CFTAG = 4; - - /** - *

Offset in bytes where the Clipboard Format - * starts in the byte[] returned by - * {@link SummaryInformation#getThumbnail()}

+ *

+ * + * Offset in bytes where the Clipboard Format starts in the byte[] + * returned by {@link SummaryInformation#getThumbnail()}

* - *

This is only valid if the Clipboard Format Tag - * is {@link #CFTAG_WINDOWS}

+ * This is only valid if the Clipboard Format Tag is {@link #CFTAG_WINDOWS} + *

*/ public static int OFFSET_CF = 8; - - /** - *

Offset in bytes where the Windows Metafile - * (WMF) image data starts in the byte[] - * returned by {@link SummaryInformation#getThumbnail()}

- * - *

There is only WMF data at this point in the - * byte[] if the Clipboard Format Tag is - * {@link #CFTAG_WINDOWS} and the Clipboard Format is - * {@link #CF_METAFILEPICT}.

- * - *

Note: The byte[] that starts at - * OFFSET_WMFDATA and ends at - * getThumbnail().length - 1 forms a - * complete WMF image. It can be saved to disk with a - * .wmf file type and read using a WMF-capable - * image viewer.

+ *

+ * + * Offset in bytes where the Windows Metafile (WMF) image data starts in + * the byte[] returned by {@link + * SummaryInformation#getThumbnail()}

+ * + * There is only WMF data at this point in the byte[] if the + * Clipboard Format Tag is {@link #CFTAG_WINDOWS} and the Clipboard Format + * is {@link #CF_METAFILEPICT}.

+ * + * Note: The byte[] that starts at OFFSET_WMFDATA + * and ends at getThumbnail().length - 1 forms a complete WMF + * image. It can be saved to disk with a .wmf file type and + * read using a WMF-capable image viewer.

*/ public static int OFFSET_WMFDATA = 20; - - /** - *

Clipboard Format Tag - Windows clipboard format

- *

A DWORD indicating a built-in Windows clipboard - * format value

- * - *

See: - * - * http://msdn.microsoft.com/library/en-us/dnolegen/html/msdn_propset.asp + *

+ * + * Clipboard Format Tag - Windows clipboard format

+ * + * A DWORD indicating a built-in Windows clipboard format + * value

+ * + * See: http://msdn.microsoft.com/library/en-us/dnolegen/html/msdn_propset.asp + * */ public static int CFTAG_WINDOWS = -1; - - /** - *

Clipboard Format Tag - Macintosh clipboard format

- *

A DWORD indicating a Macintosh clipboard format value

+ *

+ * + * Clipboard Format Tag - Macintosh clipboard format

+ * + * A DWORD indicating a Macintosh clipboard format value

+ *

* - *

See: - * - * http://msdn.microsoft.com/library/en-us/dnolegen/html/msdn_propset.asp + * See: http://msdn.microsoft.com/library/en-us/dnolegen/html/msdn_propset.asp + * */ public static int CFTAG_MACINTOSH = -2; - - /** - *

Clipboard Format Tag - Format ID

- *

A GUID containing a format identifier (FMTID). This is rarely used.

+ *

+ * + * Clipboard Format Tag - Format ID

+ * + * A GUID containing a format identifier (FMTID). This is rarely used.

+ *

* - *

See: - * - * http://msdn.microsoft.com/library/en-us/dnolegen/html/msdn_propset.asp + * See: http://msdn.microsoft.com/library/en-us/dnolegen/html/msdn_propset.asp + * */ public static int CFTAG_FMTID = -3; - - /** - *

Clipboard Format Tag - No Data

- *

a DWORD indicating No data. This is rarely used.

+ *

+ * + * Clipboard Format Tag - No Data

* - *

See: - * - * http://msdn.microsoft.com/library/en-us/dnolegen/html/msdn_propset.asp + * a DWORD indicating No data. This is rarely used.

+ * + * See: http://msdn.microsoft.com/library/en-us/dnolegen/html/msdn_propset.asp + * */ public static int CFTAG_NODATA = 0; - - /** - *

Clipboard Format - Windows metafile format. - * This is the recommended way to store thumbnails - * in Property Streams.

- *

Note: this is not the same - * format used in regular WMF images. The clipboard - * version of this format has an extra clipboard-specific - * header

+ *

+ * + * Clipboard Format - Windows metafile format. This is the recommended way + * to store thumbnails in Property Streams.

+ * + * Note: this is not the same format used in regular WMF + * images. The clipboard version of this format has an extra + * clipboard-specific header

*/ public static int CF_METAFILEPICT = 3; - - /** - *

Clipboard Format - Device Independent Bitmap

+ *

+ * + * Clipboard Format - Device Independent Bitmap

*/ public static int CF_DIB = 8; - - /** - *

Clipboard Format - Enhanced Windows metafile format

+ *

+ * + * Clipboard Format - Enhanced Windows metafile format

*/ public static int CF_ENHMETAFILE = 14; - - /** - *

Clipboard Format - Bitmap

- *

Obsolete, See: - * - * msdn.microsoft.com/library/en-us/dnw98bk/html/clipboardoperations.asp - * - *

+ *

+ * + * Clipboard Format - Bitmap

+ * + * Obsolete, See: msdn.microsoft.com/library/en-us/dnw98bk/html/clipboardoperations.asp + *

*/ public static int CF_BITMAP = 2; - - /** - *

A byte[] to hold a thumbnail image in - * ({@link Variant#VT_CF VT_CF}) format.

+ *

+ * + * A byte[] to hold a thumbnail image in ({@link Variant#VT_CF + * VT_CF}) format.

*/ private byte[] thumbnailData = null; /** - *

Default Constructor. If you use then one you'll have to add - * the thumbnail byte[] from {@link - * SummaryInformation#getThumbnail()} to do any useful - * manipulations, otherwise you'll get a - * NullPointerException.

+ *

+ * + * Default Constructor. If you use then one you'll have to add the + * thumbnail byte[] from {@link + * SummaryInformation#getThumbnail()} to do any useful manipulations, + * otherwise you'll get a NullPointerException.

*/ - public Thumbnail() - { + public Thumbnail() { super(); } /** - *

+ *

+ * + *

+ * + *@param thumbnailData Description of the Parameter */ - public Thumbnail(byte[] thumbnailData) - { + public Thumbnail(byte[] thumbnailData) { this.thumbnailData = thumbnailData; } /** - *

Returns the thumbnail as a byte[] in - * {@link Variant#VT_CF VT_CF} format.

+ *

* - * @see SummaryInformation#getThumbnail() + * Returns the thumbnail as a byte[] in {@link Variant#VT_CF + * VT_CF} format.

+ * + *@return The thumbnail value + *@see SummaryInformation#getThumbnail() */ public byte[] getThumbnail() { return thumbnailData; @@ -250,10 +251,13 @@ public class Thumbnail /** - *

Sets the Thumbnail's underlying byte[] in - * {@link Variant#VT_CF VT_CF} format.

+ *

+ * + * Sets the Thumbnail's underlying byte[] in {@link + * Variant#VT_CF VT_CF} format.

* - * @see SummaryInformation#getThumbnail() + *@param thumbnail The new thumbnail value + *@see SummaryInformation#getThumbnail() */ public void setThumbnail(byte[] thumbnail) { this.thumbnailData = thumbnail; @@ -262,106 +266,97 @@ public class Thumbnail /** - *

Returns an int representing the Clipboard - * Format Tag

- *

Possible return values are: - *

    - *
  • {@link #CFTAG_WINDOWS CFTAG_WINDOWS}
  • - *
  • {@link #CFTAG_MACINTOSH CFTAG_MACINTOSH}
  • - *
  • {@link #CFTAG_FMTID CFTAG_FMTID}
  • - *
  • {@link #CFTAG_NODATA CFTAG_NODATA}
  • - *
- *

- * - * @return a flag indicating the Clipboard Format Tag + *

+ * + * Returns an int representing the Clipboard Format Tag

+ *

+ * + * Possible return values are: + *

    + *
  • {@link #CFTAG_WINDOWS CFTAG_WINDOWS}
  • + *
  • {@link #CFTAG_MACINTOSH CFTAG_MACINTOSH}
  • + *
  • {@link #CFTAG_FMTID CFTAG_FMTID}
  • + *
  • {@link #CFTAG_NODATA CFTAG_NODATA}
  • + *
+ *

+ * + *@return a flag indicating the Clipboard Format Tag */ - public int getClipboardFormatTag() - { - DWord clipboardFormatTag = new DWord(getThumbnail(),OFFSET_CFTAG); + public int getClipboardFormatTag() { + DWord clipboardFormatTag = new DWord(getThumbnail(), OFFSET_CFTAG); return clipboardFormatTag.intValue(); } /** - *

Returns an int representing the Clipboard - * Format

- * - *

Will throw an exceptionif the Thumbnail's Clipboard - * Format Tag is not - * {@link Thumbnail#CFTAG_WINDOWS CFTAG_WINDOWS} - *

+ *

* - *

Possible return values are: - *

    - *
  • {@link #CF_METAFILEPICT CF_METAFILEPICT}
  • - *
  • {@link #CF_DIB CF_DIB}
  • - *
  • {@link #CF_ENHMETAFILE CF_ENHMETAFILE}
  • - *
  • {@link #CF_BITMAP CF_BITMAP}
  • - *
- *

+ * Returns an int representing the Clipboard Format

* - * @return a flag indicating the Clipboard Format + * Will throw an exceptionif the Thumbnail's Clipboard Format Tag is not + * {@link Thumbnail#CFTAG_WINDOWS CFTAG_WINDOWS}

* - * @throws HPSFException if the Thumbnail isn't CFTAG_WINDOWS + * Possible return values are: + *

    + *
  • {@link #CF_METAFILEPICT CF_METAFILEPICT}
  • + *
  • {@link #CF_DIB CF_DIB}
  • + *
  • {@link #CF_ENHMETAFILE CF_ENHMETAFILE}
  • + *
  • {@link #CF_BITMAP CF_BITMAP}
  • + *
+ *

* + *@return a flag indicating the Clipboard Format + *@throws HPSFException if the Thumbnail isn't CFTAG_WINDOWS */ - public int getClipboardFormat() throws HPSFException - { - if ( !(getClipboardFormatTag() == CFTAG_WINDOWS) ) - { + public int getClipboardFormat() throws HPSFException { + if (!(getClipboardFormatTag() == CFTAG_WINDOWS)) { throw new HPSFException("Clipboard Format Tag of Thumbnail must " + - "be CFTAG_WINDOWS."); + "be CFTAG_WINDOWS."); } - DWord clipboardFormat = new DWord(getThumbnail(),OFFSET_CF); + DWord clipboardFormat = new DWord(getThumbnail(), OFFSET_CF); return clipboardFormat.intValue(); } /** - *

Returns the Thumbnail as a byte[] - * of WMF data if the Thumbnail's Clipboard Format Tag - * is {@link #CFTAG_WINDOWS CFTAG_WINDOWS} - * and its Clipboard Format is - * {@link #CF_METAFILEPICT CF_METAFILEPICT}

+ *

* - *

This byte[] is in the traditional WMF file, - * not the clipboard-specific version with special headers.

+ * Returns the Thumbnail as a byte[] of WMF data if the + * Thumbnail's Clipboard Format Tag is {@link #CFTAG_WINDOWS CFTAG_WINDOWS} + * and its Clipboard Format is {@link #CF_METAFILEPICT CF_METAFILEPICT}

+ *

* - *

See - * http://www.wvware.com/caolan/ora-wmf.html - * for more information on the WMF image format.

+ * This byte[] is in the traditional WMF file, not the + * clipboard-specific version with special headers.

* - * @throws HPSFException if the Thumbnail isn't CFTAG_WINDOWS - * and CF_METAFILEPICT + * See + * http://www.wvware.com/caolan/ora-wmf.html for more information on + * the WMF image format.

* - * @return a WMF image of the Thumbnail + *@return a WMF image of the Thumbnail + *@throws HPSFException if the Thumbnail isn't CFTAG_WINDOWS and + * CF_METAFILEPICT */ - public byte[] getThumbnailAsWMF() throws HPSFException - { - if ( !(getClipboardFormatTag() == CFTAG_WINDOWS) ) - { + public byte[] getThumbnailAsWMF() throws HPSFException { + if (!(getClipboardFormatTag() == CFTAG_WINDOWS)) { throw new HPSFException("Clipboard Format Tag of Thumbnail must " + - "be CFTAG_WINDOWS."); + "be CFTAG_WINDOWS."); } - if ( !(getClipboardFormat() == CF_METAFILEPICT) ) - { + if (!(getClipboardFormat() == CF_METAFILEPICT)) { throw new HPSFException("Clipboard Format of Thumbnail must " + - "be CF_METAFILEPICT."); - } - else - { + "be CF_METAFILEPICT."); + } else { byte[] thumbnail = getThumbnail(); int wmfImageLength = thumbnail.length - OFFSET_WMFDATA; byte[] wmfImage = new byte[wmfImageLength]; System.arraycopy(thumbnail, - OFFSET_WMFDATA, - wmfImage, - 0, - wmfImageLength); + OFFSET_WMFDATA, + wmfImage, + 0, + wmfImageLength); return wmfImage; } } diff --git a/src/java/org/apache/poi/hpsf/UnexpectedPropertySetTypeException.java b/src/java/org/apache/poi/hpsf/UnexpectedPropertySetTypeException.java index d9da7d8f42..c80633b45a 100644 --- a/src/java/org/apache/poi/hpsf/UnexpectedPropertySetTypeException.java +++ b/src/java/org/apache/poi/hpsf/UnexpectedPropertySetTypeException.java @@ -1,92 +1,113 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; /** - *

This exception is thrown if a certain type of property set is - * expected (e.g. a Document Summary Information) but the provided - * property set is not of that type.

+ *

+ * + * This exception is thrown if a certain type of property set is expected (e.g. + * a Document Summary Information) but the provided property set is not of that + * type.

* - *

The constructors of this class are analogous to those of its - * superclass and documented there.

+ * The constructors of this class are analogous to those of its superclass and + * documented there.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id: UnexpectedPropertySetTypeException.java,v 1.3 2002/05/01 + * 09:31:52 klute Exp $ + *@since 2002-02-09 */ -public class UnexpectedPropertySetTypeException extends HPSFException -{ +public class UnexpectedPropertySetTypeException extends HPSFException { - public UnexpectedPropertySetTypeException() - { + /** + * Constructor for the UnexpectedPropertySetTypeException object + */ + public UnexpectedPropertySetTypeException() { super(); } - public UnexpectedPropertySetTypeException(final String msg) - { + + /** + * Constructor for the UnexpectedPropertySetTypeException object + * + *@param msg Description of the Parameter + */ + public UnexpectedPropertySetTypeException(final String msg) { super(msg); } - public UnexpectedPropertySetTypeException(final Throwable reason) - { + + /** + * Constructor for the UnexpectedPropertySetTypeException object + * + *@param reason Description of the Parameter + */ + public UnexpectedPropertySetTypeException(final Throwable reason) { super(reason); } + + /** + * Constructor for the UnexpectedPropertySetTypeException object + * + *@param msg Description of the Parameter + *@param reason Description of the Parameter + */ public UnexpectedPropertySetTypeException(final String msg, - final Throwable reason) - { + final Throwable reason) { super(msg, reason); } diff --git a/src/java/org/apache/poi/hpsf/Util.java b/src/java/org/apache/poi/hpsf/Util.java index 7ea6911cff..5cb56e9635 100644 --- a/src/java/org/apache/poi/hpsf/Util.java +++ b/src/java/org/apache/poi/hpsf/Util.java @@ -1,148 +1,168 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; import java.util.*; /** - *

Provides various static utility methods.

+ *

+ * + * Provides various static utility methods.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id$ + *@since 2002-02-09 */ -public class Util -{ +public class Util { /** - *

Checks whether two byte arrays a and b - * are equal. They are equal

+ *

+ * + * Checks whether two byte arrays a and b are equal. + * They are equal

+ *
    + *
  • + * + * if they have the same length and

  • + *
  • + * + * if for each i with i  >= 0 and + * i  < a.length holds a [ + * i ] == b [i ].

  • + * + *
* - *
    - *
  • if they have the same length and

  • * - *
  • if for each i with - * i >= 0 and - * i < a.length holds - * a[i] == b[i].

  • - *
+ *@param a Description of the Parameter + *@param b Description of the Parameter + *@return Description of the Return Value */ - public static boolean equal(final byte[] a, final byte[] b) - { - if (a.length != b.length) + public static boolean equal(final byte[] a, final byte[] b) { + if (a.length != b.length) { return false; - for (int i = 0; i < a.length; i++) - if (a[i] != b[i]) + } + for (int i = 0; i < a.length; i++) { + if (a[i] != b[i]) { return false; + } + } return true; } /** - *

Copies a part of a byte array into another byte array.

+ *

+ * + * Copies a part of a byte array into another byte array.

+ * + *@param src Description of the Parameter + *@param srcOffset Description of the Parameter + *@param length Description of the Parameter + *@param dst Description of the Parameter + *@param dstOffset Description of the Parameter */ public static void copy(final byte[] src, final int srcOffset, - final int length, - final byte[] dst, final int dstOffset) - { - for (int i = 0; i < length; i++) + final int length, + final byte[] dst, final int dstOffset) { + for (int i = 0; i < length; i++) { dst[dstOffset + i] = src[srcOffset + i]; + } } /** - *

Concatenates the contents of several byte arrays into a - * single one.

+ *

* - * @param byteArrays The byte arrays to be concatened. + * Concatenates the contents of several byte arrays into a single one.

* - * @return A new byte array containing the concatenated byte - * arrays. + *@param byteArrays The byte arrays to be concatened. + *@return A new byte array containing the concatenated byte + * arrays. */ - public static byte[] cat(final byte[][] byteArrays) - { + public static byte[] cat(final byte[][] byteArrays) { int capacity = 0; - for (int i = 0; i < byteArrays.length; i++) + for (int i = 0; i < byteArrays.length; i++) { capacity += byteArrays[i].length; + } final byte[] result = new byte[capacity]; int r = 0; - for (int i = 0; i < byteArrays.length; i++) - for (int j = 0; j < byteArrays[i].length; j++) + for (int i = 0; i < byteArrays.length; i++) { + for (int j = 0; j < byteArrays[i].length; j++) { result[r++] = byteArrays[i][j]; + } + } return result; } /** - *

Copies bytes from a source byte array into a new byte - * array.

- * - * @param src Copy from this byte array. + *

* - * @param offset Start copying here. + * Copies bytes from a source byte array into a new byte array.

* - * @param length Copy this many bytes. - * - * @return The new byte array. Its length is number of copied bytes. + *@param src Copy from this byte array. + *@param offset Start copying here. + *@param length Copy this many bytes. + *@return The new byte array. Its length is number of copied bytes. */ public static byte[] copy(final byte[] src, final int offset, - final int length) - { + final int length) { final byte[] result = new byte[length]; copy(src, offset, length, result, 0); return result; @@ -151,29 +171,31 @@ public class Util /** - *

The difference between the Windows epoch (1601-01-01 - * 00:00:00) and the Unix epoch (1970-01-01 00:00:00) in - * milliseconds: 11644473600000L. (Use your favorite spreadsheet - * program to verify the correctness of this value. By the way, - * did you notice that you can tell from the epochs which - * operating system is the modern one? :-))

+ *

+ * + * The difference between the Windows epoch (1601-01-01 00:00:00) and the + * Unix epoch (1970-01-01 00:00:00) in milliseconds: 11644473600000L. (Use + * your favorite spreadsheet program to verify the correctness of this + * value. By the way, did you notice that you can tell from the epochs + * which operating system is the modern one? :-))

*/ public final static long EPOCH_DIFF = 11644473600000L; + /** - *

Converts a Windows FILETIME into a {@link Date}. The Windows - * FILETIME structure holds a date and time associated with a - * file. The structure identifies a 64-bit integer specifying the - * number of 100-nanosecond intervals which have passed since - * January 1, 1601. This 64-bit value is split into the two double - * word stored in the structure.

+ *

* - * @param high The higher double word of the FILETIME structure. + * Converts a Windows FILETIME into a {@link Date}. The Windows FILETIME + * structure holds a date and time associated with a file. The structure + * identifies a 64-bit integer specifying the number of 100-nanosecond + * intervals which have passed since January 1, 1601. This 64-bit value is + * split into the two double word stored in the structure.

* - * @param low The lower double word of the FILETIME structure. + *@param high The higher double word of the FILETIME structure. + *@param low The lower double word of the FILETIME structure. + *@return Description of the Return Value */ - public static Date filetimeToDate(final int high, final int low) - { + public static Date filetimeToDate(final int high, final int low) { final long filetime = ((long) high) << 32 | ((long) low); final long ms_since_16010101 = filetime / (1000 * 10); final long ms_since_19700101 = ms_since_16010101 - EPOCH_DIFF; diff --git a/src/java/org/apache/poi/hpsf/Variant.java b/src/java/org/apache/poi/hpsf/Variant.java index 29de83917d..2866117296 100644 --- a/src/java/org/apache/poi/hpsf/Variant.java +++ b/src/java/org/apache/poi/hpsf/Variant.java @@ -1,362 +1,443 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf; /** - *

The Variant types as defined by Microsoft's COM. I - * found this information in http://www.marin.clara.net/COM/variant_type_definitions.htm.

+ *

+ * + * The Variant types as defined by Microsoft's COM. I found this + * information in + * http://www.marin.clara.net/COM/variant_type_definitions.htm .

* - *

In the variant types descriptions the following shortcuts are - * used: [V] - may appear in a VARIANT, - * [T] - may appear in a TYPEDESC, - * [P] - may appear in an OLE property set, - * [S] - may appear in a Safe Array.

+ * In the variant types descriptions the following shortcuts are used: + * [V] - may appear in a VARIANT, [T] - may appear in + * a TYPEDESC, [P] - may appear in an OLE property set, + * [S] - may appear in a Safe Array.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id$ + *@since 2002-02-09 */ -public class Variant -{ +public class Variant { /** - *

[V][P] Nothing.

+ *

+ * + * [V][P] Nothing.

*/ public final static int VT_EMPTY = 0; /** - *

[V][P] SQL style Null.

+ *

+ * + * [V][P] SQL style Null.

*/ public final static int VT_NULL = 1; /** - *

[V][T][P][S] 2 byte signed int.

+ *

+ * + * [V][T][P][S] 2 byte signed int.

*/ public final static int VT_I2 = 2; /** - *

[V][T][P][S] 4 byte signed int.

+ *

+ * + * [V][T][P][S] 4 byte signed int.

*/ public final static int VT_I4 = 3; /** - *

[V][T][P][S] 4 byte real.

+ *

+ * + * [V][T][P][S] 4 byte real.

*/ public final static int VT_R4 = 4; /** - *

[V][T][P][S] 8 byte real.

+ *

+ * + * [V][T][P][S] 8 byte real.

*/ public final static int VT_R8 = 5; /** - *

[V][T][P][S] currency. How long is this? How is it to be - * interpreted?

+ *

+ * + * [V][T][P][S] currency. How long + * is this? How is it to be interpreted?

*/ public final static int VT_CY = 6; /** - *

[V][T][P][S] date. How long is this? How is it to be - * interpreted?

+ *

+ * + * [V][T][P][S] date. How long is + * this? How is it to be interpreted?

*/ public final static int VT_DATE = 7; /** - *

[V][T][P][S] OLE Automation string. How long is this? How is it - * to be interpreted?

+ *

+ * + * [V][T][P][S] OLE Automation string. How long is this? How is it to be interpreted?

*/ public final static int VT_BSTR = 8; /** - *

[V][T][P][S] IDispatch *. How long is this? How is it to be - * interpreted?

+ *

+ * + * [V][T][P][S] IDispatch *. How + * long is this? How is it to be interpreted?

*/ public final static int VT_DISPATCH = 9; /** - *

[V][T][S] SCODE. How long is this? How is it to be - * interpreted?

+ *

+ * + * [V][T][S] SCODE. How long is + * this? How is it to be interpreted?

*/ public final static int VT_ERROR = 10; /** - *

[V][T][P][S] True=-1, False=0.

+ *

+ * + * [V][T][P][S] True=-1, False=0.

*/ public final static int VT_BOOL = 11; /** - *

[V][T][P][S] VARIANT *. How long is this? How is it to be - * interpreted?

+ *

+ * + * [V][T][P][S] VARIANT *. How long + * is this? How is it to be interpreted?

*/ public final static int VT_VARIANT = 12; /** - *

[V][T][S] IUnknown *. How long is this? How is it to be - * interpreted?

+ *

+ * + * [V][T][S] IUnknown *. How long + * is this? How is it to be interpreted?

*/ public final static int VT_UNKNOWN = 13; /** - *

[V][T][S] 16 byte fixed point.

+ *

+ * + * [V][T][S] 16 byte fixed point.

*/ public final static int VT_DECIMAL = 14; /** - *

[T] signed char.

+ *

+ * + * [T] signed char.

*/ public final static int VT_I1 = 16; /** - *

[V][T][P][S] unsigned char.

+ *

+ * + * [V][T][P][S] unsigned char.

*/ public final static int VT_UI1 = 17; /** - *

[T][P] unsigned short.

+ *

+ * + * [T][P] unsigned short.

*/ public final static int VT_UI2 = 18; /** - *

[T][P] unsigned int.

+ *

+ * + * [T][P] unsigned int.

*/ public final static int VT_UI4 = 19; /** - *

[T][P] signed 64-bit int.

+ *

+ * + * [T][P] signed 64-bit int.

*/ public final static int VT_I8 = 20; /** - *

[T][P] unsigned 64-bit int.

+ *

+ * + * [T][P] unsigned 64-bit int.

*/ public final static int VT_UI8 = 21; /** - *

[T] signed machine int.

+ *

+ * + * [T] signed machine int.

*/ public final static int VT_INT = 22; /** - *

[T] unsigned machine int.

+ *

+ * + * [T] unsigned machine int.

*/ public final static int VT_UINT = 23; /** - *

[T] C style void.

+ *

+ * + * [T] C style void.

*/ public final static int VT_VOID = 24; /** - *

[T] Standard return type. How long is this? How is it to be - * interpreted?

+ *

+ * + * [T] Standard return type. How + * long is this? How is it to be interpreted?

*/ public final static int VT_HRESULT = 25; /** - *

[T] pointer type. How long is this? How is it to be - * interpreted?

*/ + *

+ * + * [T] pointer type. How long is + * this? How is it to be interpreted?

+ */ public final static int VT_PTR = 26; /** - *

[T] (use VT_ARRAY in VARIANT).

*/ + *

+ * + * [T] (use VT_ARRAY in VARIANT).

+ */ public final static int VT_SAFEARRAY = 27; /** - *

[T] C style array. How long is this? How is it to be - * interpreted?

+ *

+ * + * [T] C style array. How long is + * this? How is it to be interpreted?

*/ public final static int VT_CARRAY = 28; /** - *

[T] user defined type. How long is this? How is it to be - * interpreted?

+ *

+ * + * [T] user defined type. How long + * is this? How is it to be interpreted?

*/ public final static int VT_USERDEFINED = 29; /** - *

[T][P] null terminated string.

+ *

+ * + * [T][P] null terminated string.

*/ public final static int VT_LPSTR = 30; /** - *

[T][P] wide (Unicode) null terminated string.

+ *

+ * + * [T][P] wide (Unicode) null terminated string.

*/ public final static int VT_LPWSTR = 31; /** - *

[P] FILETIME. The FILETIME structure holds a date and time - * associated with a file. The structure identifies a 64-bit - * integer specifying the number of 100-nanosecond intervals which - * have passed since January 1, 1601. This 64-bit value is split - * into the two dwords stored in the structure.

+ *

+ * + * [P] FILETIME. The FILETIME structure holds a date and time associated + * with a file. The structure identifies a 64-bit integer specifying the + * number of 100-nanosecond intervals which have passed since January 1, + * 1601. This 64-bit value is split into the two dwords stored in the + * structure.

*/ public final static int VT_FILETIME = 64; /** - *

[P] Length prefixed bytes.

+ *

+ * + * [P] Length prefixed bytes.

*/ public final static int VT_BLOB = 65; /** - *

[P] Name of the stream follows.

+ *

+ * + * [P] Name of the stream follows.

*/ public final static int VT_STREAM = 66; /** - *

[P] Name of the storage follows.

+ *

+ * + * [P] Name of the storage follows.

*/ public final static int VT_STORAGE = 67; /** - *

[P] Stream contains an object. How long is this? How is it to be - * interpreted?

+ *

+ * + * [P] Stream contains an object. + * How long is this? How is it to be interpreted?

*/ public final static int VT_STREAMED_OBJECT = 68; /** - *

[P] Storage contains an object. How long is this? How is it to be - * interpreted?

+ *

+ * + * [P] Storage contains an object. + * How long is this? How is it to be interpreted?

*/ public final static int VT_STORED_OBJECT = 69; /** - *

[P] Blob contains an object. How long is this? How is it to be - * interpreted?

+ *

+ * + * [P] Blob contains an object. How + * long is this? How is it to be interpreted?

*/ public final static int VT_BLOB_OBJECT = 70; /** - *

[P] Clipboard format. How long is this? How is it to be - * interpreted?

+ *

+ * + * [P] Clipboard format. How long + * is this? How is it to be interpreted?

*/ public final static int VT_CF = 71; /** - *

[P] A Class ID.

- *

It consists of a 32 bit unsigned integer indicating the size - * of the structure, a 32 bit signed integer indicating (Clipboard - * Format Tag) indicating the type of data that it contains, and - * then a byte array containing the data.

+ *

+ * + * [P] A Class ID.

* - *

The valid Clipboard Format Tags are: - *

    - *
  • {@link Thumbnail#CFTAG_WINDOWS}
  • - *
  • {@link Thumbnail#CFTAG_MACINTOSH}
  • - *
  • {@link Thumbnail#CFTAG_NODATA}
  • - *
  • {@link Thumbnail#CFTAG_FMTID}
  • - *

+ * It consists of a 32 bit unsigned integer indicating the size of the + * structure, a 32 bit signed integer indicating (Clipboard Format Tag) + * indicating the type of data that it contains, and then a byte array + * containing the data.

* - *

- *

typedef struct  tagCLIPDATA {
+     *  The valid Clipboard Format Tags are:
+     *  
    + *
  • {@link Thumbnail#CFTAG_WINDOWS}
  • + *
  • {@link Thumbnail#CFTAG_MACINTOSH}
  • + *
  • {@link Thumbnail#CFTAG_NODATA}
  • + *
  • {@link Thumbnail#CFTAG_FMTID}
  • + *
+ *

+ * + *

typedef struct  tagCLIPDATA {
      * // cbSize is the size of the buffer pointed to
      * // by pClipData, plus sizeof(ulClipFmt)
      * ULONG              cbSize;
      * long               ulClipFmt;
      * BYTE*              pClipData;
-     * } CLIPDATA;
- * See - * - * msdn.microsoft.com/library/en-us/com/stgrstrc_0uwk.asp - * - *

+ * } CLIPDATA;
See msdn.microsoft.com/library/en-us/com/stgrstrc_0uwk.asp + *

*/ public final static int VT_CLSID = 72; /** - *

[P] simple counted array. How long is this? How is it to be - * interpreted?

+ *

+ * + * [P] simple counted array. How + * long is this? How is it to be interpreted?

*/ public final static int VT_VECTOR = 0x1000; /** - *

[V] SAFEARRAY*. How long is this? How is it to be - * interpreted?

+ *

+ * + * [V] SAFEARRAY*. How long is + * this? How is it to be interpreted?

*/ public final static int VT_ARRAY = 0x2000; /** - *

[V] void* for local use. How long is this? How is it to be - * interpreted?

+ *

+ * + * [V] void* for local use. How + * long is this? How is it to be interpreted?

*/ public final static int VT_BYREF = 0x4000; + /** + * Description of the Field + */ public final static int VT_RESERVED = 0x8000; + /** + * Description of the Field + */ public final static int VT_ILLEGAL = 0xFFFF; + /** + * Description of the Field + */ public final static int VT_ILLEGALMASKED = 0xFFF; + /** + * Description of the Field + */ public final static int VT_TYPEMASK = 0xFFF; } diff --git a/src/java/org/apache/poi/hpsf/wellknown/PropertyIDMap.java b/src/java/org/apache/poi/hpsf/wellknown/PropertyIDMap.java index 4c0ca18934..217a635734 100644 --- a/src/java/org/apache/poi/hpsf/wellknown/PropertyIDMap.java +++ b/src/java/org/apache/poi/hpsf/wellknown/PropertyIDMap.java @@ -1,230 +1,346 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf.wellknown; import java.util.*; /** - *

This is a dictionary mapping property IDs to property ID - * strings.

+ *

+ * + * This is a dictionary mapping property IDs to property ID strings.

* - *

The methods {@link #getSummaryInformationProperties} and {@link - * #getDocumentSummaryInformationProperties} return singleton {@link - * PropertyIDMap}s. An application that wants to extend these maps - * should treat them as unmodifiable, copy them and modifiy the - * copies.

+ * The methods {@link #getSummaryInformationProperties} and {@link + * #getDocumentSummaryInformationProperties} return singleton {@link + * PropertyIDMap}s. An application that wants to extend these maps should treat + * them as unmodifiable, copy them and modifiy the copies.

* - *

FIXME: Make the singletons - * unmodifiable. However, since this requires use a {@link HashMap} - * delegate instead of extending {@link HashMap} and would require a - * lot of stupid typing, I won't do it for the time being.

+ * FIXME: Make the singletons unmodifiable. However, since + * this requires use a {@link HashMap} delegate instead of extending {@link + * HashMap} and would require a lot of stupid typing, I won't do it for the + * time being.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id$ + *@since 2002-02-09 */ -public class PropertyIDMap extends HashMap -{ - - /* The following definitions are for the Summary Information. */ - public static final int PID_TITLE = 2; - public static final int PID_SUBJECT = 3; - public static final int PID_AUTHOR = 4; - public static final int PID_KEYWORDS = 5; - public static final int PID_COMMENTS = 6; - public static final int PID_TEMPLATE = 7; - public static final int PID_LASTAUTHOR = 8; - public static final int PID_REVNUMBER = 9; - public static final int PID_EDITTIME = 10; - public static final int PID_LASTPRINTED = 11; - public static final int PID_CREATE_DTM = 12; - public static final int PID_LASTSAVE_DTM = 13; - public static final int PID_PAGECOUNT = 14; - public static final int PID_WORDCOUNT = 15; - public static final int PID_CHARCOUNT = 16; - public static final int PID_THUMBNAIL = 17; - public static final int PID_APPNAME = 18; - public static final int PID_SECURITY = 19; - - /* The following definitions are for the Document Summary Information. */ - public static final int PID_CATEGORY = 2; - public static final int PID_PRESFORMAT = 3; - public static final int PID_BYTECOUNT = 4; - public static final int PID_LINECOUNT = 5; - public static final int PID_PARCOUNT = 6; - public static final int PID_SLIDECOUNT = 7; - public static final int PID_NOTECOUNT = 8; - public static final int PID_HIDDENCOUNT = 9; - public static final int PID_MMCLIPCOUNT = 10; - public static final int PID_SCALE = 11; - public static final int PID_HEADINGPAIR = 12; - public static final int PID_DOCPARTS = 13; - public static final int PID_MANAGER = 14; - public static final int PID_COMPANY = 15; - public static final int PID_LINKSDIRTY = 16; +public class PropertyIDMap extends HashMap { + + /* + * The following definitions are for the Summary Information. + */ + /** + * Description of the Field + */ + public final static int PID_TITLE = 2; + /** + * Description of the Field + */ + public final static int PID_SUBJECT = 3; + /** + * Description of the Field + */ + public final static int PID_AUTHOR = 4; + /** + * Description of the Field + */ + public final static int PID_KEYWORDS = 5; + /** + * Description of the Field + */ + public final static int PID_COMMENTS = 6; + /** + * Description of the Field + */ + public final static int PID_TEMPLATE = 7; + /** + * Description of the Field + */ + public final static int PID_LASTAUTHOR = 8; + /** + * Description of the Field + */ + public final static int PID_REVNUMBER = 9; + /** + * Description of the Field + */ + public final static int PID_EDITTIME = 10; + /** + * Description of the Field + */ + public final static int PID_LASTPRINTED = 11; + /** + * Description of the Field + */ + public final static int PID_CREATE_DTM = 12; + /** + * Description of the Field + */ + public final static int PID_LASTSAVE_DTM = 13; + /** + * Description of the Field + */ + public final static int PID_PAGECOUNT = 14; + /** + * Description of the Field + */ + public final static int PID_WORDCOUNT = 15; + /** + * Description of the Field + */ + public final static int PID_CHARCOUNT = 16; + /** + * Description of the Field + */ + public final static int PID_THUMBNAIL = 17; + /** + * Description of the Field + */ + public final static int PID_APPNAME = 18; + /** + * Description of the Field + */ + public final static int PID_SECURITY = 19; + + /* + * The following definitions are for the Document Summary Information. + */ + /** + * Description of the Field + */ + public final static int PID_CATEGORY = 2; + /** + * Description of the Field + */ + public final static int PID_PRESFORMAT = 3; + /** + * Description of the Field + */ + public final static int PID_BYTECOUNT = 4; + /** + * Description of the Field + */ + public final static int PID_LINECOUNT = 5; + /** + * Description of the Field + */ + public final static int PID_PARCOUNT = 6; + /** + * Description of the Field + */ + public final static int PID_SLIDECOUNT = 7; + /** + * Description of the Field + */ + public final static int PID_NOTECOUNT = 8; + /** + * Description of the Field + */ + public final static int PID_HIDDENCOUNT = 9; + /** + * Description of the Field + */ + public final static int PID_MMCLIPCOUNT = 10; + /** + * Description of the Field + */ + public final static int PID_SCALE = 11; + /** + * Description of the Field + */ + public final static int PID_HEADINGPAIR = 12; + /** + * Description of the Field + */ + public final static int PID_DOCPARTS = 13; + /** + * Description of the Field + */ + public final static int PID_MANAGER = 14; + /** + * Description of the Field + */ + public final static int PID_COMPANY = 15; + /** + * Description of the Field + */ + public final static int PID_LINKSDIRTY = 16; private static PropertyIDMap summaryInformationProperties; private static PropertyIDMap documentSummaryInformationProperties; - public PropertyIDMap(int initialCapacity, float loadFactor) - { - super(initialCapacity, loadFactor); + /** + * Constructor for the PropertyIDMap object + * + *@param initialCapacity Description of the Parameter + *@param loadFactor Description of the Parameter + */ + public PropertyIDMap(int initialCapacity, float loadFactor) { + super(initialCapacity, loadFactor); } /** - *

Puts a ID string for an ID into the {@link - * PropertyIDMap}.

+ *

* - * @param id The ID. + * Puts a ID string for an ID into the {@link PropertyIDMap}.

* - * @param idString The ID string. + *@param id The ID. + *@param idString The ID string. + *@return Description of the Return Value */ - public Object put(int id, String idString) - { - return put(new Integer(id), idString); + public Object put(int id, String idString) { + return put(new Integer(id), idString); } /** - *

Gets the ID string for an ID from the {@link - * PropertyIDMap}.

+ *

+ * + * Gets the ID string for an ID from the {@link PropertyIDMap}.

* - * @param id The ID. + *@param id The ID. + *@return Description of the Return Value */ - public Object get(int id) - { - return get(new Integer(id)); + public Object get(int id) { + return get(new Integer(id)); } /** - *

Returns the Summary Information properties singleton.

- */ - public static PropertyIDMap getSummaryInformationProperties() - { - if (summaryInformationProperties == null) - { - PropertyIDMap m = new PropertyIDMap(17, (float) 1.0); - m.put(PID_TITLE, "PID_TITLE"); - m.put(PID_SUBJECT, "PID_SUBJECT"); - m.put(PID_AUTHOR, "PID_AUTHOR"); - m.put(PID_KEYWORDS, "PID_KEYWORDS"); - m.put(PID_COMMENTS, "PID_COMMENTS"); - m.put(PID_TEMPLATE, "PID_TEMPLATE"); - m.put(PID_LASTAUTHOR, "PID_LASTAUTHOR"); - m.put(PID_REVNUMBER, "PID_REVNUMBER"); - m.put(PID_EDITTIME, "PID_EDITTIME"); - m.put(PID_LASTPRINTED, "PID_LASTPRINTED"); - m.put(PID_CREATE_DTM, "PID_CREATE_DTM"); - m.put(PID_LASTSAVE_DTM, "PID_LASTSAVE_DTM"); - m.put(PID_PAGECOUNT, "PID_PAGECOUNT"); - m.put(PID_WORDCOUNT, "PID_WORDCOUNT"); - m.put(PID_CHARCOUNT, "PID_CHARCOUNT"); - m.put(PID_THUMBNAIL, "PID_THUMBNAIL"); - m.put(PID_APPNAME, "PID_APPNAME"); - m.put(PID_SECURITY, "PID_SECURITY"); - summaryInformationProperties = m; - } - return summaryInformationProperties; + *

+ * + * Returns the Summary Information properties singleton.

+ * + *@return The summaryInformationProperties value + */ + public static PropertyIDMap getSummaryInformationProperties() { + if (summaryInformationProperties == null) { + PropertyIDMap m = new PropertyIDMap(17, (float) 1.0); + m.put(PID_TITLE, "PID_TITLE"); + m.put(PID_SUBJECT, "PID_SUBJECT"); + m.put(PID_AUTHOR, "PID_AUTHOR"); + m.put(PID_KEYWORDS, "PID_KEYWORDS"); + m.put(PID_COMMENTS, "PID_COMMENTS"); + m.put(PID_TEMPLATE, "PID_TEMPLATE"); + m.put(PID_LASTAUTHOR, "PID_LASTAUTHOR"); + m.put(PID_REVNUMBER, "PID_REVNUMBER"); + m.put(PID_EDITTIME, "PID_EDITTIME"); + m.put(PID_LASTPRINTED, "PID_LASTPRINTED"); + m.put(PID_CREATE_DTM, "PID_CREATE_DTM"); + m.put(PID_LASTSAVE_DTM, "PID_LASTSAVE_DTM"); + m.put(PID_PAGECOUNT, "PID_PAGECOUNT"); + m.put(PID_WORDCOUNT, "PID_WORDCOUNT"); + m.put(PID_CHARCOUNT, "PID_CHARCOUNT"); + m.put(PID_THUMBNAIL, "PID_THUMBNAIL"); + m.put(PID_APPNAME, "PID_APPNAME"); + m.put(PID_SECURITY, "PID_SECURITY"); + summaryInformationProperties = m; + } + return summaryInformationProperties; } /** - *

Returns the Summary Information properties singleton.

- */ - public static PropertyIDMap getDocumentSummaryInformationProperties() - { - if (documentSummaryInformationProperties == null) - { - PropertyIDMap m = new PropertyIDMap(17, (float) 1.0); - m.put(PID_CATEGORY, "PID_CATEGORY"); - m.put(PID_PRESFORMAT, "PID_PRESFORMAT"); - m.put(PID_BYTECOUNT, "PID_BYTECOUNT"); - m.put(PID_LINECOUNT, "PID_LINECOUNT"); - m.put(PID_PARCOUNT, "PID_PARCOUNT"); - m.put(PID_SLIDECOUNT, "PID_SLIDECOUNT"); - m.put(PID_NOTECOUNT, "PID_NOTECOUNT"); - m.put(PID_HIDDENCOUNT, "PID_HIDDENCOUNT"); - m.put(PID_MMCLIPCOUNT, "PID_MMCLIPCOUNT"); - m.put(PID_SCALE, "PID_SCALE"); - m.put(PID_HEADINGPAIR, "PID_HEADINGPAIR"); - m.put(PID_DOCPARTS, "PID_DOCPARTS"); - m.put(PID_MANAGER, "PID_MANAGER"); - m.put(PID_COMPANY, "PID_COMPANY"); - m.put(PID_LINKSDIRTY, "PID_LINKSDIRTY"); - documentSummaryInformationProperties = m; - } - return documentSummaryInformationProperties; - + *

+ * + * Returns the Summary Information properties singleton.

+ * + *@return The documentSummaryInformationProperties value + */ + public static PropertyIDMap getDocumentSummaryInformationProperties() { + if (documentSummaryInformationProperties == null) { + PropertyIDMap m = new PropertyIDMap(17, (float) 1.0); + m.put(PID_CATEGORY, "PID_CATEGORY"); + m.put(PID_PRESFORMAT, "PID_PRESFORMAT"); + m.put(PID_BYTECOUNT, "PID_BYTECOUNT"); + m.put(PID_LINECOUNT, "PID_LINECOUNT"); + m.put(PID_PARCOUNT, "PID_PARCOUNT"); + m.put(PID_SLIDECOUNT, "PID_SLIDECOUNT"); + m.put(PID_NOTECOUNT, "PID_NOTECOUNT"); + m.put(PID_HIDDENCOUNT, "PID_HIDDENCOUNT"); + m.put(PID_MMCLIPCOUNT, "PID_MMCLIPCOUNT"); + m.put(PID_SCALE, "PID_SCALE"); + m.put(PID_HEADINGPAIR, "PID_HEADINGPAIR"); + m.put(PID_DOCPARTS, "PID_DOCPARTS"); + m.put(PID_MANAGER, "PID_MANAGER"); + m.put(PID_COMPANY, "PID_COMPANY"); + m.put(PID_LINKSDIRTY, "PID_LINKSDIRTY"); + documentSummaryInformationProperties = m; + } + return documentSummaryInformationProperties; } - public static void main(String args[]) - { - PropertyIDMap s1 = getSummaryInformationProperties(); - PropertyIDMap s2 = getDocumentSummaryInformationProperties(); - System.out.println("s1: " + s1); - System.out.println("s2: " + s2); + /** + * Description of the Method + * + *@param args Description of the Parameter + */ + public static void main(String args[]) { + PropertyIDMap s1 = getSummaryInformationProperties(); + PropertyIDMap s2 = getDocumentSummaryInformationProperties(); + System.out.println("s1: " + s1); + System.out.println("s2: " + s2); } } diff --git a/src/java/org/apache/poi/hpsf/wellknown/SectionIDMap.java b/src/java/org/apache/poi/hpsf/wellknown/SectionIDMap.java index ae90f9071d..13579c8caf 100644 --- a/src/java/org/apache/poi/hpsf/wellknown/SectionIDMap.java +++ b/src/java/org/apache/poi/hpsf/wellknown/SectionIDMap.java @@ -1,124 +1,130 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 +/* + * ==================================================================== + * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights - * reserved. + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. + * 4. The names "Apache" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . */ - package org.apache.poi.hpsf.wellknown; import java.util.*; /** - *

Maps section format IDs to {@link PropertyIDMap}s. It is - * initialized with two well-known section format IDs: those of the - * \005SummaryInformation stream and the - * \005DocumentSummaryInformation stream.

+ *

+ * + * Maps section format IDs to {@link PropertyIDMap}s. It is initialized with + * two well-known section format IDs: those of the \005SummaryInformation + * stream and the \005DocumentSummaryInformation stream.

* - *

If you have a section format ID you can use it as a key to query - * this map. If you get a {@link PropertyIDMap} returned your section - * is well-known and you can query the {@link PropertyIDMap} for PID - * strings. If you get back null you are on your own.

+ * If you have a section format ID you can use it as a key to query this map. + * If you get a {@link PropertyIDMap} returned your section is well-known and + * you can query the {@link PropertyIDMap} for PID strings. If you get back + * null you are on your own.

* - *

This {@link Map} expects the byte arrays of section format IDs - * as keys. A key maps to a {@link PropertyIDMap} describing the - * property IDs in sections with the specified section format ID.

+ * This {@link Map} expects the byte arrays of section format IDs as keys. A + * key maps to a {@link PropertyIDMap} describing the property IDs in sections + * with the specified section format ID.

* - * @author Rainer Klute (klute@rainer-klute.de) - * @version $Id$ - * @since 2002-02-09 + *@author Rainer Klute (klute@rainer-klute.de) + *@created May 10, 2002 + *@version $Id$ + *@since 2002-02-09 */ -public class SectionIDMap extends HashMap -{ +public class SectionIDMap extends HashMap { /** - *

The SummaryInformation's section's format ID.

+ *

+ * + * The SummaryInformation's section's format ID.

*/ public final static byte[] SUMMARY_INFORMATION_ID = - new byte[]{(byte) 0xF2, (byte) 0x9F, (byte) 0x85, (byte) 0xE0, - (byte) 0x4F, (byte) 0xF9, (byte) 0x10, (byte) 0x68, - (byte) 0xAB, (byte) 0x91, (byte) 0x08, (byte) 0x00, - (byte) 0x2B, (byte) 0x27, (byte) 0xB3, (byte) 0xD9}; + new byte[]{(byte) 0xF2, (byte) 0x9F, (byte) 0x85, (byte) 0xE0, + (byte) 0x4F, (byte) 0xF9, (byte) 0x10, (byte) 0x68, + (byte) 0xAB, (byte) 0x91, (byte) 0x08, (byte) 0x00, + (byte) 0x2B, (byte) 0x27, (byte) 0xB3, (byte) 0xD9}; /** - *

The DocumentSummaryInformation's first section's format - * ID. The second section has a different format ID which is not - * well-known.

+ *

+ * + * The DocumentSummaryInformation's first section's format ID. The second + * section has a different format ID which is not well-known.

*/ public final static byte[] DOCUMENT_SUMMARY_INFORMATION_ID = - new byte[]{(byte) 0xD5, (byte) 0xCD, (byte) 0xD5, (byte) 0x02, - (byte) 0x2E, (byte) 0x9C, (byte) 0x10, (byte) 0x1B, - (byte) 0x93, (byte) 0x97, (byte) 0x08, (byte) 0x00, - (byte) 0x2B, (byte) 0x2C, (byte) 0xF9, (byte) 0xAE}; + new byte[]{(byte) 0xD5, (byte) 0xCD, (byte) 0xD5, (byte) 0x02, + (byte) 0x2E, (byte) 0x9C, (byte) 0x10, (byte) 0x1B, + (byte) 0x93, (byte) 0x97, (byte) 0x08, (byte) 0x00, + (byte) 0x2B, (byte) 0x2C, (byte) 0xF9, (byte) 0xAE}; + /** + * Description of the Field + */ public final static String UNDEFINED = "[undefined]"; - - private static SectionIDMap defaultMap; /** - *

Returns the singleton instance of the default {@link - * SectionIDMap}.

+ *

+ * + * Returns the singleton instance of the default {@link SectionIDMap}.

+ * + *@return The instance value */ - public static SectionIDMap getInstance() - { - if (defaultMap == null) - { + public static SectionIDMap getInstance() { + if (defaultMap == null) { final SectionIDMap m = new SectionIDMap(); m.put(SUMMARY_INFORMATION_ID, - PropertyIDMap.getSummaryInformationProperties()); + PropertyIDMap.getSummaryInformationProperties()); m.put(DOCUMENT_SUMMARY_INFORMATION_ID, - PropertyIDMap.getDocumentSummaryInformationProperties()); + PropertyIDMap.getDocumentSummaryInformationProperties()); defaultMap = m; } return defaultMap; @@ -127,32 +133,31 @@ public class SectionIDMap extends HashMap /** - *

Returns the property ID string that is associated with a - * given property ID in a section format ID's namespace.

+ *

* - * @param sectionFormatID Each section format ID has its own name - * space of property ID strings and thus must be specified. + * Returns the property ID string that is associated with a given property + * ID in a section format ID's namespace.

* - * @param pid The property ID - * - * @return The well-known property ID string associated with the - * property ID pid in the name space spanned by - * sectionFormatID. If the - * pid/sectionFormatID combination is not - * well-known, the string "[undefined]" is returned. + *@param sectionFormatID Each section format ID has its own name space of + * property ID strings and thus must be specified. + *@param pid The property ID + *@return The well-known property ID string associated with + * the property ID pid in the name space spanned by + * sectionFormatID . If the pid /sectionFormatID + * combination is not well-known, the string "[undefined]" is + * returned. */ public static String getPIDString(final byte[] sectionFormatID, - final int pid) - { + final int pid) { final PropertyIDMap m = - (PropertyIDMap) getInstance().get(sectionFormatID); - if (m == null) + (PropertyIDMap) getInstance().get(sectionFormatID); + if (m == null) { return UNDEFINED; - else - { + } else { final String s = (String) m.get(pid); - if (s == null) + if (s == null) { return UNDEFINED; + } return s; } } @@ -160,49 +165,57 @@ public class SectionIDMap extends HashMap /** - *

Returns the {@link PropertyIDMap} for a given section format - * ID.

+ *

+ * + * Returns the {@link PropertyIDMap} for a given section format ID.

+ * + *@param sectionFormatID Description of the Parameter + *@return Description of the Return Value */ - public PropertyIDMap get(final byte[] sectionFormatID) - { + public PropertyIDMap get(final byte[] sectionFormatID) { return (PropertyIDMap) super.get(new String(sectionFormatID)); } /** - *

Returns the {@link PropertyIDMap} for a given section format - * ID.

+ *

* - * @param sectionFormatID A section format ID as a - * byte[]. + * Returns the {@link PropertyIDMap} for a given section format ID.

* - * @deprecated Use {@link #get(byte[])} instead! + *@param sectionFormatID A section format ID as a byte[] . + *@return Description of the Return Value + *@deprecated Use {@link #get(byte[])} instead! */ - public Object get(final Object sectionFormatID) - { + public Object get(final Object sectionFormatID) { return get((byte[]) sectionFormatID); } /** - *

Associates a section format ID with a {@link - * PropertyIDMap}.

+ *

+ * + * Associates a section format ID with a {@link PropertyIDMap}.

+ * + *@param sectionFormatID Description of the Parameter + *@param propertyIDMap Description of the Parameter + *@return Description of the Return Value */ public Object put(final byte[] sectionFormatID, - final PropertyIDMap propertyIDMap) - { + final PropertyIDMap propertyIDMap) { return super.put(new String(sectionFormatID), propertyIDMap); } /** - * @deprecated Use {@link #put(byte[], PropertyIDMap)} instead! + *@param key Description of the Parameter + *@param value Description of the Parameter + *@return Description of the Return Value + *@deprecated Use {@link #put(byte[], PropertyIDMap)} instead! */ - public Object put(final Object key, final Object value) - { + public Object put(final Object key, final Object value) { return put((byte[]) key, (PropertyIDMap) value); } -- 2.39.5