Create files of different types (CSV, XLSX, GZIP) containing data (RANDOM_ID, FILE_TYPE). RANDOM_ID is a random integer, FILE_TYPE is the type of file in which the data will be stored (CSV, XLSX, GZIP). To create a GZIP file, create a CSV file with data and compress it using GZIP.
When reading data from GZIP, it is not necessary to unpack the archive beforehand.

Using any means (frameworks or your own implementation), develop a program for reading and sorting data stored in CSV, XLSX, GZIP files.

To implement this, it is necessary to create a base class in which the received (extracted) text strings will be processed (a method that will accept data and write it to the SQLITE database).

To extract data from different formats, it is necessary to use implementation through interfaces and extension of the base class mentioned in point 3 (Interface, extend).

The file reading implementation should be multi-threaded (simultaneous parallel reading of all files) using the ExecutorService class.

It is necessary to parallelly read all the data from CSV, XLSX, GZIP files and write them to the SQLITE database.

After all the data has been written to the SQLITE database and sorted, it will need to be saved in a single CSV file in one thread.
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence