org.firebirdsql.jdbc.parser

## Class StatementDetector

- java.lang.Object
- - org.firebirdsql.jdbc.parser.StatementDetector

All Implemented Interfaces:
  TokenVisitor

    @InternalApi
    public final class StatementDetector
    extends java.lang.Object
    implements TokenVisitor

Detects the type of statement, and - optionally - whether a DML statement has a `RETURNING` clause.

If the detected statement type is `UPDATE`, `DELETE`, `INSERT`, `UPDATE OR INSERT` and `MERGE`, it identifies the affected table and - optionally - whether or not a `RETURNING` clause is present (delegated to a `ReturningClauseDetector`).

The types of statements detected are informed by the needs of Jaybird, and may change between point releases.

Since:
  4.0.8
Author:
  Mark Rotteveel

### Constructor Summary

Constructors
Constructor and Description
`StatementDetector()` Detect statement type and returning clause.
`StatementDetector(boolean detectReturning)` Detect statement type and - optionally - returning clause.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `complete(VisitorRegistrar visitorRegistrar)` Signals that the last token was produced and the statement text was fully parsed.
`LocalStatementType` `getStatementType()`
`StatementIdentification` `toStatementIdentification()`
`void` `visitToken(Token token, VisitorRegistrar visitorRegistrar)` Notifies the visitor of a token.

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

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

### Constructor Detail

#### StatementDetector

    public StatementDetector()

Detect statement type and returning clause.

See Also:
  `StatementDetector(boolean)`

#### StatementDetector

    public StatementDetector(boolean detectReturning)

Detect statement type and - optionally - returning clause.

Parameters:
  `detectReturning` - `true` detect returning clause, `false` do not detect returning clause

### Method Detail

#### visitToken

    public void visitToken(Token token,
                           VisitorRegistrar visitorRegistrar)

Description copied from interface: `TokenVisitor`
Notifies the visitor of a token.

Specified by:
  `visitToken` in interface `TokenVisitor`
Parameters:
  `token` - Token
  `visitorRegistrar` - Visitor registrar (can be used to remove itself, or add other visitors)

#### complete

    public void complete(VisitorRegistrar visitorRegistrar)

Description copied from interface: `TokenVisitor`
Signals that the last token was produced and the statement text was fully parsed.

Specified by:
  `complete` in interface `TokenVisitor`
Parameters:
  `visitorRegistrar` - Visitor registrar (can be used to remove itself, or add other visitors)

#### toStatementIdentification

    public StatementIdentification toStatementIdentification()

#### getStatementType

    public LocalStatementType getStatementType()

Returns:
  detected statement type, `UNKNOWN` when no tokens have been received (nothing was parsed)