private String toString(Object value, DataType type) {
        if (value == null) {
            return "";
        }
        if (type == null) {
            //this shouldn't happen
            return value.toString();
        }
        switch (type) {
            case LONG:
                return Integer.toString((Integer) value);
            case TEXT:
                return (String) value;
            case MONEY:
                //TODO: consider getting parsing "Format" field from
                //field properties.
                return formatCurrency(((BigDecimal) value).doubleValue(), type);
            case SHORT_DATE_TIME:
                return formatShortDateTime((Date) value);
            case BOOLEAN:
                return Boolean.toString((Boolean) value);
            case MEMO:
                return (String) value;
            case INT:
                return Short.toString((Short) value);
            case DOUBLE:
                return Double.toString((Double) value);
            case FLOAT:
                return Float.toString((Float) value);
            case NUMERIC:
                return value.toString();
            case BYTE:
                return Byte.toString((Byte) value);
            case GUID:
                return value.toString();
            case COMPLEX_TYPE: //skip all these
            case UNKNOWN_0D:
            case UNKNOWN_11:
            case UNSUPPORTED_FIXEDLEN:
            case UNSUPPORTED_VARLEN:
            default:
                return "";

        }
    }
Internal class.  Needs to be instantiated for each parse because of
the lack of thread safety with the dateTimeFormatter
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/JackcessExtractor.java