org.apache.cassandra.io.sstable

## Class AbstractSSTableSimpleWriter

- java.lang.Object
- - org.apache.cassandra.io.sstable.AbstractSSTableSimpleWriter

Direct Known Subclasses:
  SSTableSimpleUnsortedWriter, SSTableSimpleWriter

    public abstract class AbstractSSTableSimpleWriter
    extends java.lang.Object

### Field Summary

Fields
`protected ColumnFamily` `columnFamily`
`protected CounterId` `counterid`
`protected DecoratedKey` `currentKey`
`protected java.nio.ByteBuffer` `currentSuperColumn`
`protected java.io.File` `directory`
`protected CFMetaData` `metadata`

### Constructor Summary

Constructors
Constructor and Description
`AbstractSSTableSimpleWriter(java.io.File directory, CFMetaData metadata, IPartitioner partitioner)`

### Method Summary

Methods
`void` `addColumn(java.nio.ByteBuffer name, java.nio.ByteBuffer value, long timestamp)` Insert a new "regular" column to the current row (and super column if applicable).
`void` `addCounterColumn(java.nio.ByteBuffer name, long value)` Insert a new counter column to the current row (and super column if applicable).
`void` `addExpiringColumn(java.nio.ByteBuffer name, java.nio.ByteBuffer value, long timestamp, int ttl, long expirationTimestampMS)` Insert a new expiring column to the current row (and super column if applicable).
`abstract void` `close()` Close this writer.
`protected abstract ColumnFamily` `getColumnFamily()`
`protected SSTableWriter` `getWriter()`
`protected static java.lang.String` `makeFilename(java.io.File directory, java.lang.String keyspace, java.lang.String columnFamily)`
`void` `newRow(java.nio.ByteBuffer key)` Start a new row whose key is `key`.
`void` `newSuperColumn(java.nio.ByteBuffer name)` Start a new super column with name `name`.
`protected abstract void` `writeRow(DecoratedKey key, ColumnFamily columnFamily)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### directory

    protected final java.io.File directory

#### metadata

    protected final CFMetaData metadata

#### currentKey

    protected DecoratedKey currentKey

#### columnFamily

    protected ColumnFamily columnFamily

#### currentSuperColumn

    protected java.nio.ByteBuffer currentSuperColumn

#### counterid

    protected final CounterId counterid

### Constructor Detail

#### AbstractSSTableSimpleWriter

    public AbstractSSTableSimpleWriter(java.io.File directory,
                               CFMetaData metadata,
                               IPartitioner partitioner)

### Method Detail

#### getWriter

    protected SSTableWriter getWriter()

#### makeFilename

    protected static java.lang.String makeFilename(java.io.File directory,
                                java.lang.String keyspace,
                                java.lang.String columnFamily)

#### newRow

    public void newRow(java.nio.ByteBuffer key)
                throws java.io.IOException

Start a new row whose key is `key`.

Parameters:
  `key` - the row key
Throws:
  `java.io.IOException`

#### newSuperColumn

    public void newSuperColumn(java.nio.ByteBuffer name)

Start a new super column with name `name`.

Parameters:
  `name` - the name for the super column

#### addColumn

    public void addColumn(java.nio.ByteBuffer name,
                 java.nio.ByteBuffer value,
                 long timestamp)

Insert a new "regular" column to the current row (and super column if applicable).

Parameters:
  `name` - the column name
  `value` - the column value
  `timestamp` - the column timestamp

#### addExpiringColumn

    public void addExpiringColumn(java.nio.ByteBuffer name,
                         java.nio.ByteBuffer value,
                         long timestamp,
                         int ttl,
                         long expirationTimestampMS)

Insert a new expiring column to the current row (and super column if applicable).

Parameters:
  `name` - the column name
  `value` - the column value
  `timestamp` - the column timestamp
  `ttl` - the column time to live in seconds
  `expirationTimestampMS` - the local expiration timestamp in milliseconds. This is the server time timestamp used for actually expiring the column, and as a consequence should be synchronized with the cassandra servers time. If `timestamp` represents the insertion time in microseconds (which is not required), this should be `(timestamp / 1000) + (ttl * 1000)`.

#### addCounterColumn

    public void addCounterColumn(java.nio.ByteBuffer name,
                        long value)

Insert a new counter column to the current row (and super column if applicable).

Parameters:
  `name` - the column name
  `value` - the value of the counter

#### close

    public abstract void close()
                        throws java.io.IOException

Close this writer. This method should be called, otherwise the produced sstables are not guaranteed to be complete (and won't be in practice).

Throws:
  `java.io.IOException`

#### writeRow

    protected abstract void writeRow(DecoratedKey key,
                ColumnFamily columnFamily)
                              throws java.io.IOException

Throws:
  `java.io.IOException`

#### getColumnFamily

    protected abstract ColumnFamily getColumnFamily()