> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Prepare Next Version

To ease the migration to the next version of Atoti, we deprecated some classes and methods in the current version.
You can already adopt the new way of doing things in the current version to make the future migration smoother and to have an opportunity to provide feedback on the changes.
For a more complete list of deprecations, please read the [changelog](changelog).

## Composer

### Vectors

-`ZeroVector` is deprecated. Use the methods in `SameValueVectorUtils` to create such a vector, for example: `SameValueVectorUtils#doubleVector(10, 0.0)`.

## Sources

The general direction of the source API is the following:

* keep the same concepts and abstractions
* remove some useless interfaces and rely directly on POJOs
* rely more on builders to create configurations
* make the API immutable (POJOs without any setters)

### CSV Source

* To configure the CSV parser, use directly the POJO `CsvParserConfiguration` instead of the interface `ICsvParserConfiguration`.
  Everywhere a method take as input/returns an `ICsvParserConfiguration`, it will return a `CsvParserConfiguration` in 6.2 instead.
  In order to create such configuration, a builder has been added and will be the only way to create such a configuration (see `CsvParserConfiguration#builder()`).

* To configure the CSV source, use directly the POJO `CsvSourceConfiguration` instead of the interface `ICsvSourceConfiguration`.
  Everywhere a method take as input/returns an `ICsvSourceConfiguration`, it will return a `CsvSourceConfiguration` in 6.2 instead.
  In order to create such configuration, a builder has been added and will be the only way to create such a configuration (see `CsvSourceConfiguration#builder()` and `CsvSourceConfiguration#builderForLocalFiles()`).

* Do not use the properties `ActiveViamProperties.PARSING_REPORT_ENABLED` ("activeviam.msg.csv.reporting.enabled") and `ActiveViamProperties.CSV_PARSING_REPORT_MAX_ANOMALIES` ("activeviam.msg.csv.reporting.maxAnomalies") anymore.
  Instead, use the `CsvSourceConfiguration.builder().parsingReportEnabled(boolean)` and `CsvSourceConfiguration.builder().maxParsingAnomalies(int)` methods.

* Do not use `CsvFactory#create`. Use instead `ICsvSource#builder` and `ICsvSource#builderForLocalFiles`.

### JDBC Source

* To create a CSV topic, use the fluent builder `JdbcTopic#builder()` instead of the constructors of `JdbcTopic`.

* The interface `IJdbcTopic` has been deprecated.
  All methods accepting as argument/returning an `IJdbcTopic` in 6.1 will only accept/return a `JdbcTopic` in 6.2.

* The parameter `JdbcSourceBuilder#withAppendBatchSize()` is configurable at the topic level form now on `JdbcTopic#builder().batchSize()`.

* Do not use the properties `ActiveViamProperties.PARSING_REPORT_ENABLED` ("activeviam.msg.csv.reporting.enabled") anymore.
  Instead, use the `IJdbSource.builder().parsingReportEnabled(boolean)` method.

## Cloud sources

* To configure `CloudFetchingConfig`, use the builder `CloudFetchingConfig.builder()` instead of the constructors and the setters.

* `ICloudEntity` and `ICloudEntityPath` utility methods for modifying content in cloud storage are deprecated. There is no direct replacement, but similar functionality can be implemented using the cloud provider SDK.

## DirectQuery

### Snowflake

* `SnowflakeDialectSettings#arrayAggWrapperFunctionName()` will be removed.
  It's better not to set it, so the queries use the SQL built-in function `ARRAY_AGG` (which has been improved by Snowflake).

## Cube

### Definition

* Alias on the measures contributors.COUNT and update.TIMESTAMP. Their captions can still be defined with MdxContext.setMeasureAliases.

### Queries

* `DrillthroughQuery` will become immutable, and the object should be built via its builder.
* `GetAggregatesQuery` will become immutable, and the object should be built via its builder.

## Distribution

* Concealed measures are deprecated because their value has not been demonstrated. They will be removed in a future minor release.

* The term "distributing levels" should be used in place of "distributing fields" as they are indeed levels and not selection fields.
  The methods defining the distributing levels as String (like `IClusterDefinitionBuilder#withDistributingFields`) are
  deprecated in favor of methods using LevelIdentifier (like `IClusterDefinitionBuilder#withDistributingLevels`).
  This allows the user to define a distributing level that do not have the same name as its underlying selection field.
