Module org.firebirdsql.jaybird
Package org.firebirdsql.jaybird.parser

# Class StatementDetector

java.lang.Object
org.firebirdsql.jaybird.parser.StatementDetector

All Implemented Interfaces:
  `TokenVisitor`

@InternalApi public final class StatementDetector extends 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:
  5
Author:
  Mark Rotteveel

## Constructor Summary

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

## Method Summary

Modifier and Type
Method
Description
`void`
`complete(VisitorRegistrar visitorRegistrar)`
Signals that the last token was produced and the statement text was fully parsed.
`static LocalStatementType`
`determineLocalStatementType(String sql)`
Determines the local statement type of `sql`.
`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 Details

### 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 Details

### determineLocalStatementType

public static LocalStatementType determineLocalStatementType(String sql)
Determines the local statement type of `sql`.

The return values of this method are decided by the needs of Jaybird, and do not necessarily cover all statement types, and they may change between point releases.

Parameters:
  `sql` - statement text
Returns:
  local statement type
Since:
  6

### 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)