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.
Modifier and Type | Field and Description |
---|---|
static int[] |
SUPPORTED_TYPES
HPSF is able to read these
Variant types. |
protected static List<Long> |
unsupportedMessage
Keeps a list of the variant types an "unsupported" message has already
been issued for.
|
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 and Description |
---|
VariantSupport() |
Modifier and Type | Method and Description |
---|---|
static String |
codepageToEncoding(int codepage)
Turns a codepage number into the equivalent character encoding's
name.
|
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 void |
setLogUnsupportedTypes(boolean logUnsupportedTypes)
Specifies whether warnings about unsupported variant types are to be
written to
System.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 to
System.err that a variant type is
unsupported by HPSF. |
getVariantLength, getVariantName
protected static List<Long> unsupportedMessage
Keeps a list of the variant types an "unsupported" message has already been issued for.
public static final int[] SUPPORTED_TYPES
HPSF is able to read these Variant
types.
public static void setLogUnsupportedTypes(boolean logUnsupportedTypes)
Specifies whether warnings about unsupported variant types are to be
written to System.err
or not.
logUnsupportedTypes
- If true
warnings will be written,
if false
they won't.public static boolean isLogUnsupportedTypes()
Checks whether logging of unsupported variant types warning is turned on or off.
true
if logging is turned on, else
false
.protected static void writeUnsupportedTypeMessage(UnsupportedVariantTypeException ex)
Writes a warning to System.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
ex
- The exception to logpublic boolean isSupportedType(int variantType)
Checks whether HPSF supports the specified variant type. Unsupported
types should be implemented included in the SUPPORTED_TYPES
array.
variantType
- the variant type to checktrue
if HPFS supports this type, else
false
Variant
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.
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 stringsLong
, a VT_LPSTR as a
String
.ReadingNotSupportedException
- if a property is to be written
who's variant type HPSF does not yet supportUnsupportedEncodingException
- if the specified codepage is not
supported.Variant
public static String codepageToEncoding(int codepage) throws UnsupportedEncodingException
Turns a codepage number into the equivalent character encoding's name.
codepage
- The codepage numberUnsupportedEncodingException
- if the specified codepage is
less than zero.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.
If the codepage is UTF-16, which is encouraged, strings
must always be written as Variant.VT_LPWSTR
strings, not as Variant.VT_LPSTR
strings. This method ensure this
by converting strings appropriately, if needed.
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 stringsIOException
- if an I/O exceptions occursWritingNotSupportedException
- if a property is to be written
who's variant type HPSF does not yet supportCopyright © 2020. All rights reserved.