class JSONToSQLConverter extends SQLConverterBase

This class allows the conversion of a json-schema.org compliant JSON database and exported from G6K to a SQL database

Traits

This class implements common functions needed in G6KBundle controllers.

Properties

protected array $datatypes from DatasourcesTrait
protected array $parameters from SQLConverterBase
protected string $databasesDir from SQLConverterBase
protected SimpleXMLElement $datasources from SQLConverterBase
protected Database $database from SQLConverterBase

Methods

getDatabase(int $dsid, SimpleXMLElement $datasources, string|null $databasesDir = null, bool $withDbName = true)

Constructs a Database object

array|string|bool|null
tablesList(Database $database)

Returns the list of tables of a database

array|string|bool|null
tableInfos(Database $database, string $table)

Returns informations about a table of a database

array
infosColumns(SimpleXMLElement $datasources, Database $database, string $table)

Returns informations about the columns of a table

array
infosColumnsToForm(string $table, array $infosColumns)

Constructs a form fields with informations about the columns of a table

array
getChoicesFromSource(SimpleXMLElement $source, array|null $result)

Retrieves the choice values of a data in the result list of a query on a data source

array|string|null
executeSource(SimpleXMLElement $source, SimpleXMLElement $datasources, string|null $databasesDir = null)

Executes the query from a source

array|null
filterResult(array|string $result, SimpleXMLElement $source)

Filters the result set of a query on the source return path

array
filterResultByLines(array $result, string $filter)

Filters the result set of a query on the source return path

string|bool
insertRowIntoTable(array $row, string $table, array $infosColumns, Database $database, TranslatorInterface $translator = null, bool $restore = false, bool $fromOtherTable = false)

Inserts a row into a table

bool|string
updateRowInTable(array $row, string $table, SimpleXMLElement $datasources, Database $database, TranslatorInterface $translator = null, bool $fromOtherTable = false)

Updates a table row

string|true
deleteRowFromTable(array $row, string $table, Database $database, TranslatorInterface $translator = null)

Deletes a row from a table

string|bool
checkColumnValue(array $info, string|null $value, TranslatorInterface $translator = null, bool $fromOtherTable = false)

Checks the value of a column

string|true
migrateDatabase(int $dsid, string $dbtype, SimpleXMLElement $datasources, SimpleXMLElement $fromDatasources, Database $fromDatabase, string|null $databasesDir = null, TranslatorInterface $translator = null, callable|null $fprogress = null)

Does the migration of data from a database to another.

string|true
createDatabase(int $dsid, string $dbtype, SimpleXMLElement $datasources, string|null $databasesDir = null, TranslatorInterface $translator = null)

Creates a database

string|true
createDatabaseTable(array $form, Database $database, TranslatorInterface $translator = null)

Creates a database table

string|true
dropDatabaseTable(string $table, Database $database, TranslatorInterface $translator = null)

Drops a table

string|true
editTableStructure(array $form, string $table, Database $database, SimpleXMLElement $datasources, TranslatorInterface $translator = null)

Edits a table structure

bool
alterSQLiteTable(string $table, string $alterdefs, Database $database, TranslatorInterface $translator = null)

Emulates a 'ALTER TABLE' for columns of a SQLite database.

void
__construct(array $fparameters, string $databasesDir)

Constructor of class JSONToSQLConverter

bool
hasConfigParameter(string $parameter)

Checks if a parameter exists.

string|null
getConfigParameter(string $parameter)

Gets a parameter with its name.

string
getType(stdClass $coldef)

Returns the data type of a database column

string
getValue(string $type, string $value)

Prepares a value according to its type for its insertion in a SQL database

properties(string $arg)

Decodes a properties list from JSON schema

void
connectDatabase(string $dbschema, string $dbtype)

Connects to the database

array
convert(array $inputs, TranslatorInterface|null $translator = null, callable|null $fprogress = null)

Imports a JSON database to a SQL database and returns an array descriptor of the database for the update of DataSources.xml

Details

in DatasourcesTrait at line 192
protected Database getDatabase(int $dsid, SimpleXMLElement $datasources, string|null $databasesDir = null, bool $withDbName = true)

Constructs a Database object

Parameters

int $dsid The datasource ID
SimpleXMLElement $datasources DataSources.xml content
string|null $databasesDir The database directory ID
bool $withDbName (default: true) if false, the name of the database will not be inserted in the dsn string.

Return Value

Database The Database object

in DatasourcesTrait at line 211
protected array|string|bool|null tablesList(Database $database)

Returns the list of tables of a database

Parameters

Database $database The Database object

Return Value

array|string|bool|null The list of tables

in DatasourcesTrait at line 249
protected array|string|bool|null tableInfos(Database $database, string $table)

Returns informations about a table of a database

Parameters

Database $database The Database object
string $table The table name

Return Value

array|string|bool|null Informations about a table

in DatasourcesTrait at line 302
protected array infosColumns(SimpleXMLElement $datasources, Database $database, string $table)

Returns informations about the columns of a table

Parameters

SimpleXMLElement $datasources The DataSources.xml content
Database $database The Database object
string $table The table name

Return Value

array Informations about the columns

in DatasourcesTrait at line 361
protected array infosColumnsToForm(string $table, array $infosColumns)

Constructs a form fields with informations about the columns of a table

Parameters

string $table The table name
array $infosColumns Informations about the columns

Return Value

array

in DatasourcesTrait at line 398
protected array getChoicesFromSource(SimpleXMLElement $source, array|null $result)

Retrieves the choice values of a data in the result list of a query on a data source

Parameters

SimpleXMLElement $source The source definition extracted from DataSources.xml
array|null $result The result list of a query

Return Value

array The choices list

in DatasourcesTrait at line 461
protected array|string|null executeSource(SimpleXMLElement $source, SimpleXMLElement $datasources, string|null $databasesDir = null)

Executes the query from a source

Parameters

SimpleXMLElement $source The source definition extracted from DataSources.xml
SimpleXMLElement $datasources The DataSources.xml content
string|null $databasesDir The database directory

Return Value

array|string|null The result set of the query

in DatasourcesTrait at line 523
protected array|null filterResult(array|string $result, SimpleXMLElement $source)

Filters the result set of a query on the source return path

Parameters

array|string $result The result set of a query
SimpleXMLElement $source The source definition extracted from DataSources.xml

Return Value

array|null The filtered result set

in DatasourcesTrait at line 548
protected array filterResultByLines(array $result, string $filter)

Filters the result set of a query on the source return path

Parameters

array $result The result set of a query
string $filter The filter

Return Value

array The filtered result set

in DatasourcesTrait at line 589
protected string|bool insertRowIntoTable(array $row, string $table, array $infosColumns, Database $database, TranslatorInterface $translator = null, bool $restore = false, bool $fromOtherTable = false)

Inserts a row into a table

Parameters

array $row The row to insert
string $table The table name
array $infosColumns The informations about the columns
Database $database The Database object
TranslatorInterface $translator (default: null) true if the row is to be restored, false otherwise
bool $restore (default: false) true if the row is to be restored, false otherwise
bool $fromOtherTable (default: false) true if the row comes from another table

Return Value

string|bool

in DatasourcesTrait at line 638
protected bool|string updateRowInTable(array $row, string $table, SimpleXMLElement $datasources, Database $database, TranslatorInterface $translator = null, bool $fromOtherTable = false)

Updates a table row

Parameters

array $row The row
string $table The table name
SimpleXMLElement $datasources The DataSources.xml content
Database $database The Database object
TranslatorInterface $translator (default: null) true if the row is to be restored, false otherwise
bool $fromOtherTable (default: false) true if the row comes from another table

Return Value

bool|string

in DatasourcesTrait at line 685
protected string|true deleteRowFromTable(array $row, string $table, Database $database, TranslatorInterface $translator = null)

Deletes a row from a table

Parameters

array $row The row
string $table The table name
Database $database The Database object
TranslatorInterface $translator (default: null) true if the row is to be restored, false otherwise

Return Value

string|true

in DatasourcesTrait at line 709
protected string|bool checkColumnValue(array $info, string|null $value, TranslatorInterface $translator = null, bool $fromOtherTable = false)

Checks the value of a column

Parameters

array $info Informations about the column
string|null $value The value to check
TranslatorInterface $translator (default: null) true if the row is to be restored, false otherwise
bool $fromOtherTable (default: false) true if the row comes from another table

Return Value

string|bool An error message or true if no error.

in DatasourcesTrait at line 847
protected string|true migrateDatabase(int $dsid, string $dbtype, SimpleXMLElement $datasources, SimpleXMLElement $fromDatasources, Database $fromDatabase, string|null $databasesDir = null, TranslatorInterface $translator = null, callable|null $fprogress = null)

Does the migration of data from a database to another.

Parameters

int $dsid The datasource ID
string $dbtype The target database type
SimpleXMLElement $datasources The origin DataSources.xml content
SimpleXMLElement $fromDatasources The origin DataSources.xml content
Database $fromDatabase The origin Database object
string|null $databasesDir The database directory
TranslatorInterface $translator (default: null) true if the row is to be restored, false otherwise
callable|null $fprogress a function receiving the row number that's inserted

Return Value

string|true

in DatasourcesTrait at line 895
protected string|true createDatabase(int $dsid, string $dbtype, SimpleXMLElement $datasources, string|null $databasesDir = null, TranslatorInterface $translator = null)

Creates a database

Parameters

int $dsid The datasource ID
string $dbtype The target database type
SimpleXMLElement $datasources The DataSources.xml content
string|null $databasesDir The database directory
TranslatorInterface $translator (default: null) true if the row is to be restored, false otherwise

Return Value

string|true

in DatasourcesTrait at line 953
protected string|true createDatabaseTable(array $form, Database $database, TranslatorInterface $translator = null)

Creates a database table

Parameters

array $form The form fields
Database $database The Database object
TranslatorInterface $translator (default: null) true if the row is to be restored, false otherwise

Return Value

string|true

in DatasourcesTrait at line 1032
protected string|true dropDatabaseTable(string $table, Database $database, TranslatorInterface $translator = null)

Drops a table

Parameters

string $table The table name
Database $database The Database object
TranslatorInterface $translator (default: null) true if the row is to be restored, false otherwise

Return Value

string|true

in DatasourcesTrait at line 1057
protected string|true editTableStructure(array $form, string $table, Database $database, SimpleXMLElement $datasources, TranslatorInterface $translator = null)

Edits a table structure

Parameters

array $form The form fields
string $table The table name
Database $database The Database object
SimpleXMLElement $datasources The DataSources.xml content
TranslatorInterface $translator (default: null) true if the row is to be restored, false otherwise

Return Value

string|true

in DatasourcesTrait at line 1277
protected bool alterSQLiteTable(string $table, string $alterdefs, Database $database, TranslatorInterface $translator = null)

Emulates a 'ALTER TABLE' for columns of a SQLite database.

ALTER TABLE tbl_name alter_specification [, alter_specification] ...

alter_specification: ADD column_definition | DROP column_definition | CHANGE old_col_name column_definition

column_definition: same as for create table statements

Parameters

string $table The table name
string $alterdefs Comma separated alter specifications
Database $database The Database object
TranslatorInterface $translator (default: null) true if the row is to be restored, false otherwise

Return Value

bool Always true

in SQLConverterBase at line 91
void __construct(array $fparameters, string $databasesDir)

Constructor of class JSONToSQLConverter

Parameters

array $fparameters The database parameters
string $databasesDir The G6K databases directory

Return Value

void

in SQLConverterBase at line 105
protected bool hasConfigParameter(string $parameter)

Checks if a parameter exists.

Parameters

string $parameter The parameter name

Return Value

bool true if the parameter exists, false if not

in SQLConverterBase at line 117
protected string|null getConfigParameter(string $parameter)

Gets a parameter with its name.

Parameters

string $parameter The parameter name

Return Value

string|null The parameter value

in SQLConverterBase at line 129
protected string getType(stdClass $coldef)

Returns the data type of a database column

Parameters

stdClass $coldef The database column definition

Return Value

string The data type

in SQLConverterBase at line 156
protected string getValue(string $type, string $value)

Prepares a value according to its type for its insertion in a SQL database

Parameters

string $type The type of the value
string $value The value

Return Value

string The new value

in SQLConverterBase at line 175
protected stdClass properties(string $arg)

Decodes a properties list from JSON schema

Parameters

string $arg The properties list

Return Value

stdClass The decoded properties

in SQLConverterBase at line 193
protected void connectDatabase(string $dbschema, string $dbtype)

Connects to the database

Parameters

string $dbschema The database name
string $dbtype The database type

Return Value

void

at line 51
array convert(array $inputs, TranslatorInterface|null $translator = null, callable|null $fprogress = null)

Imports a JSON database to a SQL database and returns an array descriptor of the database for the update of DataSources.xml

Parameters

array $inputs An associative array containing files name
TranslatorInterface|null $translator (default: null) true if the row is to be restored, false otherwise
callable|null $fprogress a function receiving the row number that's inserted

Return Value

array The array descriptor of the SQL database

Exceptions

Exception