Class TablePlanRead
- All Implemented Interfaces:
TablePlan
TableColumnar.
Example:
StreamSource streamSource = StreamSources.fromString("Code,Amount\nabc,10.5\n", "values.csv");
RowSource rowSource = RowSourceCsv.builder().withStreamSource(streamSource).withSeparator(',').build();
TableColumnar table = new TablePlanRead().withTableName(TableName.of("Trades")).execute(rowSource);
There are two useful layers for column typing when reading:
- source-side types from RowCursor.columns() choose the low-level
builder before rows are consumed and are therefore the best place to avoid
intermediate string materialization when that direct parser is genuinely
worthwhile
- plan-side types configured on this class describe the desired output type and can override the source-side type when appropriate
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionExecutes this plan against an already-open row supplier.Executes this plan against a configured row source.execute(TableColumnar table) execute(TableName tableName, TableDescription tableDescription, Column... columns) getColumnType(ColumnName columnName) protected TablePlanReadself()withColumnType(ColumnName columnName, Column.Type columnType) Specifies the desired output type for a column in the resulting table.withColumnTypes(Column.Type columnType, ColumnName... columnNames) withIncludeResourceName(ColumnName resourceName) withLocalDateFormat(DateFormat localDateFormat) withTransform(Transform transform) withTransforms(Transform... transforms) Methods inherited from class app.babylon.table.plans.TablePlanCommon
getTableDescription, getTableName, withTableDescription, withTableName
-
Constructor Details
-
TablePlanRead
public TablePlanRead()
-
-
Method Details
-
withIncludeResourceName
-
getResourceName
-
withLocalDateFormat
-
getLocalDateFormat
-
withTransform
-
withTransforms
-
getTransforms
-
withColumnType
Specifies the desired output type for a column in the resulting table.This is best thought of as plan-side type intent. If the source cursor also exposes a type for the same column, that source-side type can still matter earlier because it may choose the low-level builder before rows are read.
In other words:
- source-side types are the right place to request direct builder parsing and bypass intermediate strings when the parser has a real advantage
- plan-side types are the right place to describe the desired result schema or override the source metadata
- Parameters:
columnName- the output column namecolumnType- the desired output type- Returns:
- this plan
-
withColumnTypes
-
getColumnType
-
getColumnTypes
-
execute
-
execute
public TableColumnar execute(TableName tableName, TableDescription tableDescription, Column... columns) -
execute
-
execute
Description copied from interface:TablePlanExecutes this plan against an already-open row supplier.Use this lower-level entry point when the caller already owns the live source resource and wants to control its lifetime explicitly.
CSV example:
JDBC example:StreamSource streamSource = ...; TablePlanRead plan = new TablePlanRead(); try (InputStream inputStream = streamSource.openStream(); RowCursor rowCursor = RowCursorCsv.builder() .withSeparator(';') .build(inputStream)) { TableColumnar table = plan.execute(rowCursor); }PreparedStatement preparedStatement = ...; TablePlanRead plan = new TablePlanRead(); try (ResultSet resultSet = preparedStatement.executeQuery(); RowCursor rowCursor = new RowCursorResultSet(resultSet)) { TableColumnar table = plan.execute(rowCursor); }- Parameters:
rowCursor- open row supplier to consume- Returns:
- the resulting table
-
execute
Description copied from interface:TablePlanExecutes this plan against a configured row source.This is the simplest high-level entry point when the source should handle opening and closing its own row supplier internally.
CSV example:
JDBC example:StreamSource streamSource = ...; TablePlanRead plan = new TablePlanRead(); TableColumnar table = plan.execute(RowSourceCsv.builder() .withStreamSource(streamSource) .withSeparator(';') .build());PreparedStatement preparedStatement = ...; TablePlanRead plan = new TablePlanRead(); TableColumnar table = plan.execute(RowSourceResultSet.builder() .withPreparedStatement(preparedStatement) .build());- Parameters:
rowSource- configured source that opens rows for this execution- Returns:
- the resulting table
-
self
- Specified by:
selfin classTablePlanCommon<TablePlanRead>
-