com.healthmarketscience.jackcess.impl
Class ColumnImpl

java.lang.Object
  extended by com.healthmarketscience.jackcess.impl.ColumnImpl
All Implemented Interfaces:
Column, Comparable<ColumnImpl>

public class ColumnImpl
extends Object
implements Column, Comparable<ColumnImpl>

Access database column definition

Author:
Tim McCune
Usage:
General: This class is general use.

Nested Class Summary
 class ColumnImpl.AutoNumberGenerator
          Base class for the supported autonumber types.
static class ColumnImpl.SortOrder
          Information about the sort order (collation) for a textual column.
 
Field Summary
static byte AUTO_NUMBER_FLAG_MASK
          mask for the auto number bit
static byte AUTO_NUMBER_GUID_FLAG_MASK
          mask for the auto number guid bit
static byte FIXED_LEN_FLAG_MASK
          mask for the fixed len bit
static ColumnImpl.SortOrder GENERAL_LEGACY_SORT_ORDER
          the "general" text sort order, legacy version (access 2000-2007)
static ColumnImpl.SortOrder GENERAL_SORT_ORDER
          the "general" text sort order, latest version (access 2010+)
static byte HYPERLINK_FLAG_MASK
          mask for the hyperlink bit (on memo types)
static Object RETURN_ROW_ID
          Placeholder object for adding rows which indicates that the caller wants the RowId of the new row.
static byte UNKNOWN_FLAG_MASK
          mask for the unknown bit (possible "can be null"?)
 
Fields inherited from interface com.healthmarketscience.jackcess.Column
AUTO_NUMBER, KEEP_VALUE
 
Constructor Summary
ColumnImpl(TableImpl table, ByteBuffer buffer, int offset, int displayIndex)
          Read a column definition in from a buffer
 
Method Summary
 int compareTo(ColumnImpl other)
          Orders Columns by column number.
static short countNonLongVariableLength(List<ColumnBuilder> columns)
           
static short countVariableLength(List<ColumnBuilder> columns)
           
static String decodeUncompressedText(byte[] textBytes, Charset charset)
           
static ByteBuffer encodeUncompressedText(CharSequence text, Charset charset)
           
 long fromDateDouble(double value)
          Returns a java long time value converted from an access date double.
 ColumnImpl.AutoNumberGenerator getAutoNumberGenerator()
          Returns the AutoNumberGenerator for this column if this is an autonumber column, null otherwise.
 int getColumnIndex()
           
 short getColumnNumber()
           
 ComplexColumnInfo<? extends ComplexValue> getComplexInfo()
          Returns extended functionality for "complex" columns.
 DatabaseImpl getDatabase()
           
 int getDisplayIndex()
           
 int getFixedDataOffset()
           
 JetFormat getFormat()
           
 short getLength()
           
 short getLengthInUnits()
           
 String getName()
           
 int getOwnedPageCount()
          Returns the number of database pages owned by this column.
 PageChannel getPageChannel()
           
 byte getPrecision()
           
 PropertyMap getProperties()
           
 Object getRowValue(Map<String,?> rowMap)
           
 Object getRowValue(Object[] rowArray)
           
 byte getScale()
           
 int getSQLType()
           
 TableImpl getTable()
           
 short getTextCodePage()
           
 ColumnImpl.SortOrder getTextSortOrder()
           
 DataType getType()
           
 int getVarLenTableIndex()
           
 ColumnImpl getVersionHistoryColumn()
          Returns the column which tracks the version history for an "append only" column.
 boolean isAppendOnly()
          Whether or not this column is "append only" (its history is tracked by a separate version history column).
 boolean isAutoNumber()
           
 boolean isCompressedUnicode()
           
 boolean isHyperlink()
          Returns whether or not this is a hyperlink column (only possible for columns of type MEMO).
static boolean isRawData(Object value)
          Returs true if the given value is "raw" column data, false otherwise.
 boolean isVariableLength()
           
 Object read(byte[] data)
          Deserialize a raw byte value for this column into an Object
 Object read(byte[] data, ByteOrder order)
          Deserialize a raw byte value for this column into an Object
 void setColumnIndex(int newColumnIndex)
           
 void setName(String name)
           
 Object setRowValue(Map<String,Object> rowMap, Object value)
           
 Object setRowValue(Object[] rowArray, Object value)
           
 void setVersionHistoryColumn(ColumnImpl versionHistoryCol)
           
static boolean toBooleanValue(Object obj)
          Interpret a boolean value (null == false)
static byte[] toByteArray(Object value)
           
static CharSequence toCharSequence(Object value)
           
 double toDateDouble(Object value)
          Returns an access date double converted from a java Date/Calendar/Number time value.
 String toString()
           
 ByteBuffer write(Object obj, int remainingRowLength)
          Serialize an Object into a raw byte value for this column in little endian order
 ByteBuffer write(Object obj, int remainingRowLength, ByteOrder order)
          Serialize an Object into a raw byte value for this column
 ByteBuffer writeFixedLengthField(Object obj, ByteOrder order)
          Serialize an Object into a raw byte value for this column
 ByteBuffer writeLongValue(byte[] value, int remainingRowLength)
          Write an LVAL column into a ByteBuffer inline if it fits, otherwise in other data page(s).
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

RETURN_ROW_ID

public static final Object RETURN_ROW_ID
Placeholder object for adding rows which indicates that the caller wants the RowId of the new row. Must be added as an extra value at the end of the row values array.

See Also:
TableImpl.asRowWithRowId(java.util.Map)
Usage:
Intermediate: This field requires moderate API knowledge.

FIXED_LEN_FLAG_MASK

public static final byte FIXED_LEN_FLAG_MASK
mask for the fixed len bit

See Also:
Constant Field Values
Usage:
Advanced: This field is for advanced/internal use.

AUTO_NUMBER_FLAG_MASK

public static final byte AUTO_NUMBER_FLAG_MASK
mask for the auto number bit

See Also:
Constant Field Values
Usage:
Advanced: This field is for advanced/internal use.

AUTO_NUMBER_GUID_FLAG_MASK

public static final byte AUTO_NUMBER_GUID_FLAG_MASK
mask for the auto number guid bit

See Also:
Constant Field Values
Usage:
Advanced: This field is for advanced/internal use.

HYPERLINK_FLAG_MASK

public static final byte HYPERLINK_FLAG_MASK
mask for the hyperlink bit (on memo types)

See Also:
Constant Field Values
Usage:
Advanced: This field is for advanced/internal use.

UNKNOWN_FLAG_MASK

public static final byte UNKNOWN_FLAG_MASK
mask for the unknown bit (possible "can be null"?)

See Also:
Constant Field Values
Usage:
Advanced: This field is for advanced/internal use.

GENERAL_LEGACY_SORT_ORDER

public static final ColumnImpl.SortOrder GENERAL_LEGACY_SORT_ORDER
the "general" text sort order, legacy version (access 2000-2007)

Usage:
Intermediate: This field requires moderate API knowledge.

GENERAL_SORT_ORDER

public static final ColumnImpl.SortOrder GENERAL_SORT_ORDER
the "general" text sort order, latest version (access 2010+)

Usage:
Intermediate: This field requires moderate API knowledge.
Constructor Detail

ColumnImpl

public ColumnImpl(TableImpl table,
                  ByteBuffer buffer,
                  int offset,
                  int displayIndex)
           throws IOException
Read a column definition in from a buffer

Parameters:
table - owning table
buffer - Buffer containing column definition
offset - Offset in the buffer at which the column definition starts
Throws:
IOException
Usage:
Advanced: This method is for advanced/internal use.
Method Detail

getTable

public TableImpl getTable()
Specified by:
getTable in interface Column

getDatabase

public DatabaseImpl getDatabase()
Specified by:
getDatabase in interface Column

getFormat

public JetFormat getFormat()
Usage:
Advanced: This method is for advanced/internal use.

getPageChannel

public PageChannel getPageChannel()
Usage:
Advanced: This method is for advanced/internal use.

getName

public String getName()
Specified by:
getName in interface Column

setName

public void setName(String name)
Usage:
Advanced: This method is for advanced/internal use.

isVariableLength

public boolean isVariableLength()
Specified by:
isVariableLength in interface Column

isAutoNumber

public boolean isAutoNumber()
Specified by:
isAutoNumber in interface Column

getColumnNumber

public short getColumnNumber()
Usage:
Advanced: This method is for advanced/internal use.

getColumnIndex

public int getColumnIndex()
Specified by:
getColumnIndex in interface Column

setColumnIndex

public void setColumnIndex(int newColumnIndex)
Usage:
Advanced: This method is for advanced/internal use.

getDisplayIndex

public int getDisplayIndex()
Usage:
Advanced: This method is for advanced/internal use.

getType

public DataType getType()
Specified by:
getType in interface Column

getSQLType

public int getSQLType()
               throws SQLException
Specified by:
getSQLType in interface Column
Throws:
SQLException

isCompressedUnicode

public boolean isCompressedUnicode()
Specified by:
isCompressedUnicode in interface Column

getPrecision

public byte getPrecision()
Specified by:
getPrecision in interface Column

getScale

public byte getScale()
Specified by:
getScale in interface Column

getTextSortOrder

public ColumnImpl.SortOrder getTextSortOrder()
Usage:
Intermediate: This method requires moderate API knowledge.

getTextCodePage

public short getTextCodePage()
Usage:
Intermediate: This method requires moderate API knowledge.

getLength

public short getLength()
Specified by:
getLength in interface Column

getLengthInUnits

public short getLengthInUnits()
Specified by:
getLengthInUnits in interface Column

getVarLenTableIndex

public int getVarLenTableIndex()
Usage:
Advanced: This method is for advanced/internal use.

getFixedDataOffset

public int getFixedDataOffset()
Usage:
Advanced: This method is for advanced/internal use.

isAppendOnly

public boolean isAppendOnly()
Description copied from interface: Column
Whether or not this column is "append only" (its history is tracked by a separate version history column).

Specified by:
isAppendOnly in interface Column

getVersionHistoryColumn

public ColumnImpl getVersionHistoryColumn()
Description copied from interface: Column
Returns the column which tracks the version history for an "append only" column.

Specified by:
getVersionHistoryColumn in interface Column

getOwnedPageCount

public int getOwnedPageCount()
Returns the number of database pages owned by this column.

Usage:
Intermediate: This method requires moderate API knowledge.

setVersionHistoryColumn

public void setVersionHistoryColumn(ColumnImpl versionHistoryCol)
Usage:
Advanced: This method is for advanced/internal use.

isHyperlink

public boolean isHyperlink()
Description copied from interface: Column
Returns whether or not this is a hyperlink column (only possible for columns of type MEMO).

Specified by:
isHyperlink in interface Column

getComplexInfo

public ComplexColumnInfo<? extends ComplexValue> getComplexInfo()
Description copied from interface: Column
Returns extended functionality for "complex" columns.

Specified by:
getComplexInfo in interface Column

getAutoNumberGenerator

public ColumnImpl.AutoNumberGenerator getAutoNumberGenerator()
Returns the AutoNumberGenerator for this column if this is an autonumber column, null otherwise.

Usage:
Advanced: This method is for advanced/internal use.

getProperties

public PropertyMap getProperties()
                          throws IOException
Specified by:
getProperties in interface Column
Returns:
the properties for this column
Throws:
IOException

setRowValue

public Object setRowValue(Object[] rowArray,
                          Object value)
Specified by:
setRowValue in interface Column

setRowValue

public Object setRowValue(Map<String,Object> rowMap,
                          Object value)
Specified by:
setRowValue in interface Column

getRowValue

public Object getRowValue(Object[] rowArray)
Specified by:
getRowValue in interface Column

getRowValue

public Object getRowValue(Map<String,?> rowMap)
Specified by:
getRowValue in interface Column

read

public Object read(byte[] data)
            throws IOException
Deserialize a raw byte value for this column into an Object

Parameters:
data - The raw byte value
Returns:
The deserialized Object
Throws:
IOException
Usage:
Advanced: This method is for advanced/internal use.

read

public Object read(byte[] data,
                   ByteOrder order)
            throws IOException
Deserialize a raw byte value for this column into an Object

Parameters:
data - The raw byte value
order - Byte order in which the raw value is stored
Returns:
The deserialized Object
Throws:
IOException
Usage:
Advanced: This method is for advanced/internal use.

fromDateDouble

public long fromDateDouble(double value)
Returns a java long time value converted from an access date double.

Usage:
Advanced: This method is for advanced/internal use.

toDateDouble

public double toDateDouble(Object value)
Returns an access date double converted from a java Date/Calendar/Number time value.

Usage:
Advanced: This method is for advanced/internal use.

writeLongValue

public ByteBuffer writeLongValue(byte[] value,
                                 int remainingRowLength)
                          throws IOException
Write an LVAL column into a ByteBuffer inline if it fits, otherwise in other data page(s).

Parameters:
value - Value of the LVAL column
Returns:
A buffer containing the LVAL definition and (possibly) the column value (unless written to other pages)
Throws:
IOException
Usage:
Advanced: This method is for advanced/internal use.

write

public ByteBuffer write(Object obj,
                        int remainingRowLength)
                 throws IOException
Serialize an Object into a raw byte value for this column in little endian order

Parameters:
obj - Object to serialize
Returns:
A buffer containing the bytes
Throws:
IOException
Usage:
Advanced: This method is for advanced/internal use.

write

public ByteBuffer write(Object obj,
                        int remainingRowLength,
                        ByteOrder order)
                 throws IOException
Serialize an Object into a raw byte value for this column

Parameters:
obj - Object to serialize
order - Order in which to serialize
Returns:
A buffer containing the bytes
Throws:
IOException
Usage:
Advanced: This method is for advanced/internal use.

writeFixedLengthField

public ByteBuffer writeFixedLengthField(Object obj,
                                        ByteOrder order)
                                 throws IOException
Serialize an Object into a raw byte value for this column

Parameters:
obj - Object to serialize
order - Order in which to serialize
Returns:
A buffer containing the bytes
Throws:
IOException
Usage:
Advanced: This method is for advanced/internal use.

toString

public String toString()
Overrides:
toString in class Object

decodeUncompressedText

public static String decodeUncompressedText(byte[] textBytes,
                                            Charset charset)
Parameters:
textBytes - bytes of text to decode
charset - relevant charset
Returns:
the decoded string
Usage:
Advanced: This method is for advanced/internal use.

encodeUncompressedText

public static ByteBuffer encodeUncompressedText(CharSequence text,
                                                Charset charset)
Parameters:
text - Text to encode
charset - database charset
Returns:
A buffer with the text encoded
Usage:
Advanced: This method is for advanced/internal use.

compareTo

public int compareTo(ColumnImpl other)
Orders Columns by column number.

Specified by:
compareTo in interface Comparable<ColumnImpl>
Usage:
General: This method is general use.

countVariableLength

public static short countVariableLength(List<ColumnBuilder> columns)
Parameters:
columns - A list of columns in a table definition
Returns:
The number of variable length columns found in the list
Usage:
Advanced: This method is for advanced/internal use.

countNonLongVariableLength

public static short countNonLongVariableLength(List<ColumnBuilder> columns)
Parameters:
columns - A list of columns in a table definition
Returns:
The number of variable length columns which are not long values found in the list
Usage:
Advanced: This method is for advanced/internal use.

toCharSequence

public static CharSequence toCharSequence(Object value)
                                   throws IOException
Returns:
an appropriate CharSequence representation of the given object.
Throws:
IOException
Usage:
Advanced: This method is for advanced/internal use.

toByteArray

public static byte[] toByteArray(Object value)
                          throws IOException
Returns:
an appropriate byte[] representation of the given object.
Throws:
IOException
Usage:
Advanced: This method is for advanced/internal use.

toBooleanValue

public static boolean toBooleanValue(Object obj)
Interpret a boolean value (null == false)

Usage:
Advanced: This method is for advanced/internal use.

isRawData

public static boolean isRawData(Object value)
Returs true if the given value is "raw" column data, false otherwise.

Usage:
Advanced: This method is for advanced/internal use.


Copyright © 2005-2013 Health Market Science. All Rights Reserved.