org.apache.cassandra.db.view

## Class TableViews

- java.lang.Object
- - java.util.AbstractCollection<View>
  - - org.apache.cassandra.db.view.TableViews

All Implemented Interfaces:
  java.lang.Iterable<View>, java.util.Collection<View>

    public class TableViews
    extends java.util.AbstractCollection<View>

Groups all the views for a given table.

### Constructor Summary

Constructors
Constructor and Description
`TableViews(CFMetaData baseTableMetadata)`

### Method Summary

All Methods Instance Methods Concrete Methods
`boolean` `add(View view)`
`java.lang.Iterable<ColumnFamilyStore>` `allViewsCfs()`
`boolean` `contains(java.lang.String viewName)`
`void` `dumpMemtables()`
`void` `forceBlockingFlush()`
`java.util.Iterator<java.util.Collection<Mutation>>` `generateViewUpdates(java.util.Collection<View> views, UnfilteredRowIterator updates, UnfilteredRowIterator existings, int nowInSec, boolean separateUpdates)` Given some updates on the base table of this object and the existing values for the rows affected by that update, generates the mutation to be applied to the provided views.
`java.util.Iterator<View>` `iterator()`
`void` `pushViewReplicaUpdates(PartitionUpdate update, boolean writeCommitLog, java.util.concurrent.atomic.AtomicLong baseComplete)` Calculates and pushes updates to the views replicas.
`void` `removeByName(java.lang.String viewName)`
`int` `size()`
`void` `truncateBlocking(CommitLogPosition replayAfter, long truncatedAt)`
`java.util.Collection<View>` `updatedViews(PartitionUpdate updates)` Return the views that are potentially updated by the provided updates.

### Methods inherited from class java.util.AbstractCollection

`addAll, clear, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString`

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

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

### Methods inherited from interface java.util.Collection

`equals, hashCode, parallelStream, removeIf, spliterator, stream`

### Methods inherited from interface java.lang.Iterable

`forEach`

### Constructor Detail

#### TableViews

    public TableViews(CFMetaData baseTableMetadata)

### Method Detail

#### size

    public int size()

Specified by:
  `size` in interface `java.util.Collection<View>`
Specified by:
  `size` in class `java.util.AbstractCollection<View>`

#### iterator

    public java.util.Iterator<View> iterator()

Specified by:
  `iterator` in interface `java.lang.Iterable<View>`
Specified by:
  `iterator` in interface `java.util.Collection<View>`
Specified by:
  `iterator` in class `java.util.AbstractCollection<View>`

#### contains

    public boolean contains(java.lang.String viewName)

#### add

    public boolean add(View view)

Specified by:
  `add` in interface `java.util.Collection<View>`
Overrides:
  `add` in class `java.util.AbstractCollection<View>`

#### allViewsCfs

    public java.lang.Iterable<ColumnFamilyStore> allViewsCfs()

#### forceBlockingFlush

    public void forceBlockingFlush()

#### dumpMemtables

    public void dumpMemtables()

#### truncateBlocking

    public void truncateBlocking(CommitLogPosition replayAfter,
                                 long truncatedAt)

#### removeByName

    public void removeByName(java.lang.String viewName)

#### pushViewReplicaUpdates

    public void pushViewReplicaUpdates(PartitionUpdate update,
                                       boolean writeCommitLog,
                                       java.util.concurrent.atomic.AtomicLong baseComplete)

Calculates and pushes updates to the views replicas. The replicas are determined by `ViewUtils.getViewNaturalEndpoint(String, Token, Token)`.

Parameters:
  `update` - an update on the base table represented by this object.
  `writeCommitLog` - whether we should write the commit log for the view updates.
  `baseComplete` - time from epoch in ms that the local base mutation was (or will be) completed

#### generateViewUpdates

    public java.util.Iterator<java.util.Collection<Mutation>> generateViewUpdates(java.util.Collection<View> views,
                                                                                  UnfilteredRowIterator updates,
                                                                                  UnfilteredRowIterator existings,
                                                                                  int nowInSec,
                                                                                  boolean separateUpdates)

Given some updates on the base table of this object and the existing values for the rows affected by that update, generates the mutation to be applied to the provided views.

Parameters:
  `views` - the views potentially affected by `updates`.
  `updates` - the base table updates being applied.
  `existings` - the existing values for the rows affected by `updates`. This is used to decide if a view is obsoleted by the update and should be removed, gather the values for columns that may not be part of the update if a new view entry needs to be created, and compute the minimal updates to be applied if the view entry isn't changed but has simply some updated values. This will be empty for view building as we want to assume anything we'll pass to `updates` is new.
  `nowInSec` - the current time in seconds.
  `separateUpdates,` - if false, mutation is per partition.
Returns:
  the mutations to apply to the `views`. This can be empty.

#### updatedViews

    public java.util.Collection<View> updatedViews(PartitionUpdate updates)

Return the views that are potentially updated by the provided updates.

Parameters:
  `updates` - the updates applied to the base table.
Returns:
  the views affected by `updates`.