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_TYPESHPSF is able to read theseVarianttypes.-
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 booleanisLogUnsupportedTypes()Checks whether logging of unsupported variant types warning is turned on or off.booleanisSupportedType(int variantType)Checks whether HPSF supports the specified variant type.static Objectread(byte[] src, int offset, int length, long type, int codepage)Reads a variant type from a byte array.static Objectread(LittleEndianByteArrayInputStream lei, int length, long type, int codepage)static voidsetLogUnsupportedTypes(boolean logUnsupportedTypes)Specifies whether warnings about unsupported variant types are to be written toSystem.error not.static intwrite(OutputStream out, long type, Object value, int codepage)Writes a variant value to an output stream.protected static voidwriteUnsupportedTypeMessage(UnsupportedVariantTypeException ex)Writes a warning toSystem.errthat 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 theseVarianttypes.
-
-
Method Detail
-
setLogUnsupportedTypes
public static void setLogUnsupportedTypes(boolean logUnsupportedTypes)
Specifies whether warnings about unsupported variant types are to be written toSystem.error not.- Parameters:
logUnsupportedTypes- Iftruewarnings will be written, iffalsethey won't.
-
isLogUnsupportedTypes
public static boolean isLogUnsupportedTypes()
Checks whether logging of unsupported variant types warning is turned on or off.- Returns:
trueif logging is turned on, elsefalse.
-
writeUnsupportedTypeMessage
protected static void writeUnsupportedTypeMessage(UnsupportedVariantTypeException ex)
Writes a warning toSystem.errthat 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_TYPESarray.- Parameters:
variantType- the variant type to check- Returns:
trueif 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
-
-