/* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ package com.megatim.fdxcommons.tools.database.tables; import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction; import com.megatim.fdxcommons.model.integration.ColumnDefinition; import com.megatim.fdxcommons.model.integration.json.JsonStructure; import com.megatim.fdxcommons.tools.database.queries.json.CreateJsonTableIfNotExistQuery; import com.megatim.fdxcommons.tools.database.contrat.JsonStructureIterator; import com.megatim.fdxcommons.model.pojo.JsonTableDefinition; import com.megatim.fdxcommons.tools.database.exceptions.TypeFichierDataBadRequest; import com.megatim.fdxcommons.tools.database.queries.JsonDelete; import com.megatim.fdxcommons.tools.database.queries.JsonFdxApiInsert; import com.megatim.fdxcommons.tools.database.queries.JsonSelectQuery; import com.megatim.fdxcommons.tools.database.queries.JsonUpdate; import com.megatim.fdxcommons.tools.database.queries.metadata.AliasedQueryCriterion; import com.megatim.fdxcommons.tools.database.queries.metadata.JsonFdxParsedDataIterator; import com.megatim.fdxcommons.tools.database.queries.metadata.JsonFdxParsedData; import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion; import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxApiColumnDefinitions; import com.megatim.fdxcommons.tools.utils.JsonTableUtil; import java.sql.Connection; import java.sql.SQLException; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.naming.NamingException; /** * * @author ASUS */ public class ApiJsonFdxTable extends JsonFdxTable { public ApiJsonFdxTable(String referentielVersion, String codeTypeFichier, JsonStructure jsonStructure) { super(referentielVersion, codeTypeFichier, jsonStructure); } @Override public void createTable(Connection connection) throws NamingException, SQLException, Exception { JsonTableDefinition tableDefinition = new JsonStructureIterator(tableName.name(connection), jsonStructure).tableDefinition(); new CreateJsonTableIfNotExistQuery(connection, new FdxApiColumnDefinitions(), tableDefinition).execute(); } public void insert(List> originalData, Long dataProductionId, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception { JsonFdxParsedData fdxParsedData = new JsonFdxParsedData(originalData, jsonStructure); JsonFdxParsedDataIterator parsedDataIterator = new JsonFdxParsedDataIterator(tableName.name(connection), fdxParsedData); new JsonFdxApiInsert(connection, dataProductionId).insert(parsedDataIterator); } @Override public void update(LinkedHashMap dataToUpdate, QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception { JsonTableDefinition tableDefinition = tableDefinition(connection); Map tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias(); AliasedQueryCriterion aliasedQueryCriterion = new AliasedQueryCriterion(tableDefinition, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), tablesNameToAlias); Map matchedData = new JsonSelectQuery(tableDefinition, aliasedQueryCriterion.aliasedQueryCriterion(), connection, tablesNameToAlias).execute(); List columnsDefinition = new JsonStructureIterator(tableName.name(connection), jsonStructure).columnsDefinitionWithFullQualifiedName(); new JsonUpdate(connection, matchedData, columnsDefinition, tableName.name(connection), dataToUpdate, dataProduction).update(); } public void delete(QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception { JsonTableDefinition tableDefinition = tableDefinition(connection); Map tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias(); AliasedQueryCriterion aliasedQueryCriterion = new AliasedQueryCriterion(tableDefinition, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), tablesNameToAlias); Map matchedData = new JsonSelectQuery(tableDefinition, aliasedQueryCriterion.aliasedQueryCriterion(), connection, tablesNameToAlias).execute(); new JsonDelete(connection, matchedData, tableName.name(connection), tableDefinition, dataProduction).delete(); } }