Package org.apache.poi.hpsf
Class VariantSupport
- java.lang.Object
-
- org.apache.poi.hpsf.Variant
-
- org.apache.poi.hpsf.VariantSupport
-
public class VariantSupport extends Variant
Supports reading and writing of variant data.FIXME (3): Reading and writing should be made more uniform than it is now. The following items should be resolved:
- Reading requires a length parameter that is 4 byte greater than the actual data, because the variant type field is included.
- Reading reads from a byte array while writing writes to an byte array output stream.
-
-
Field Summary
Fields Modifier and Type Field Description static int[]
SUPPORTED_TYPES
HPSF is able to read theseVariant
types.-
Fields inherited from class org.apache.poi.hpsf.Variant
LENGTH_0, LENGTH_2, LENGTH_4, LENGTH_8, LENGTH_UNKNOWN, LENGTH_VARIABLE, VT_ARRAY, VT_BLOB, VT_BLOB_OBJECT, VT_BOOL, VT_BSTR, VT_BYREF, VT_CARRAY, VT_CF, VT_CLSID, VT_CY, VT_DATE, VT_DECIMAL, VT_DISPATCH, VT_EMPTY, VT_ERROR, VT_FILETIME, VT_HRESULT, VT_I1, VT_I2, VT_I4, VT_I8, VT_ILLEGAL, VT_ILLEGALMASKED, VT_INT, VT_LPSTR, VT_LPWSTR, VT_NULL, VT_PTR, VT_R4, VT_R8, VT_RESERVED, VT_SAFEARRAY, VT_STORAGE, VT_STORED_OBJECT, VT_STREAM, VT_STREAMED_OBJECT, VT_TYPEMASK, VT_UI1, VT_UI2, VT_UI4, VT_UI8, VT_UINT, VT_UNKNOWN, VT_USERDEFINED, VT_VARIANT, VT_VECTOR, VT_VERSIONED_STREAM, VT_VOID
-
-
Constructor Summary
Constructors Constructor Description VariantSupport()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static boolean
isLogUnsupportedTypes()
Checks whether logging of unsupported variant types warning is turned on or off.boolean
isSupportedType(int variantType)
Checks whether HPSF supports the specified variant type.static Object
read(byte[] src, int offset, int length, long type, int codepage)
Reads a variant type from a byte array.static Object
read(LittleEndianByteArrayInputStream lei, int length, long type, int codepage)
static void
setLogUnsupportedTypes(boolean logUnsupportedTypes)
Specifies whether warnings about unsupported variant types are to be written toSystem.err
or not.static int
write(OutputStream out, long type, Object value, int codepage)
Writes a variant value to an output stream.protected static void
writeUnsupportedTypeMessage(UnsupportedVariantTypeException ex)
Writes a warning toSystem.err
that a variant type is unsupported by HPSF.-
Methods inherited from class org.apache.poi.hpsf.Variant
getVariantLength, getVariantName
-
-
-
-
Field Detail
-
SUPPORTED_TYPES
public static final int[] SUPPORTED_TYPES
HPSF is able to read theseVariant
types.
-
-
Method Detail
-
setLogUnsupportedTypes
public static void setLogUnsupportedTypes(boolean logUnsupportedTypes)
Specifies whether warnings about unsupported variant types are to be written toSystem.err
or not.- Parameters:
logUnsupportedTypes
- Iftrue
warnings will be written, iffalse
they won't.
-
isLogUnsupportedTypes
public static boolean isLogUnsupportedTypes()
Checks whether logging of unsupported variant types warning is turned on or off.- Returns:
true
if logging is turned on, elsefalse
.
-
writeUnsupportedTypeMessage
protected static void writeUnsupportedTypeMessage(UnsupportedVariantTypeException ex)
Writes a warning toSystem.err
that a variant type is unsupported by HPSF. Such a warning is written only once for each variant type. Log messages can be turned on or off by- Parameters:
ex
- The exception to log
-
isSupportedType
public boolean isSupportedType(int variantType)
Checks whether HPSF supports the specified variant type. Unsupported types should be implemented included in theSUPPORTED_TYPES
array.- Parameters:
variantType
- the variant type to check- Returns:
true
if HPFS supports this type, elsefalse
- See Also:
Variant
-
read
public static Object read(byte[] src, int offset, int length, long type, int codepage) throws ReadingNotSupportedException, UnsupportedEncodingException
Reads a variant type from a byte array.- Parameters:
src
- The byte arrayoffset
- The offset in the byte array where the variant startslength
- The length of the variant including the variant type fieldtype
- The variant type to readcodepage
- The codepage to use for non-wide strings- Returns:
- A Java object that corresponds best to the variant field. For
example, a VT_I4 is returned as a
Long
, a VT_LPSTR as aString
. - Throws:
ReadingNotSupportedException
- if a property is to be written who's variant type HPSF does not yet supportUnsupportedEncodingException
- if the specified codepage is not supported.- See Also:
Variant
-
read
public static Object read(LittleEndianByteArrayInputStream lei, int length, long type, int codepage) throws ReadingNotSupportedException, UnsupportedEncodingException
-
write
public static int write(OutputStream out, long type, Object value, int codepage) throws IOException, WritingNotSupportedException
Writes a variant value to an output stream. This method ensures that always a multiple of 4 bytes is written.- Parameters:
out
- The stream to write the value to.type
- The variant's type.value
- The variant's value.codepage
- The codepage to use to write non-wide strings- Returns:
- The number of entities that have been written. In many cases an "entity" is a byte but this is not always the case.
- Throws:
IOException
- if an I/O exceptions occursWritingNotSupportedException
- if a property is to be written who's variant type HPSF does not yet support
-
-