/*
|
* 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.queries;
|
|
import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
|
import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataColumn;
|
import com.megatim.fdxcommons.tools.database.contrat.TypeFichierUpdateMetaData;
|
import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
|
import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
|
import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
|
import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionUpdateIdColumnDefinition;
|
import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateMiseAJourColumnDefinition;
|
import java.sql.Connection;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
public class FdxUpdate {
|
|
private final Connection connection;
|
private final QueryCriterion queryCriterion;
|
private final TypeFichierUpdateMetaData updateMetaData;
|
private final CommonDataProduction dataProduction;
|
|
public FdxUpdate(Connection connection, QueryCriterion queryCriterion, TypeFichierUpdateMetaData updateMetaData, CommonDataProduction dataProduction) {
|
this.connection = connection;
|
this.queryCriterion = queryCriterion;
|
this.updateMetaData = updateMetaData;
|
this.dataProduction = dataProduction;
|
}
|
|
public void update() throws Exception {
|
List<QueryParam> params = finalParameters();
|
new UpdateQuery(connection, queryCriterion, updateMetaData.tableName(), columnNames(), params).execute();
|
}
|
|
private List<String> columnNames() throws Exception {
|
List<String> columNames = new ArrayList<>();
|
columNames.addAll(updateMetaData.columnNames());
|
columNames.add(new DataProductionUpdateIdColumnDefinition().name());
|
columNames.add(new DateMiseAJourColumnDefinition().name());
|
|
return columNames;
|
}
|
|
private List<QueryParam> finalParameters() throws Exception {
|
|
List<QueryParam> params = new ArrayList<>();
|
|
//On ajoute les paramètres de la clause SET
|
for (TypeFichierDataColumn c : updateMetaData.row().columns()) {
|
params.add(new QueryParam(c.column(), c.value()));
|
}
|
|
//On ajoute les paramètres de l'application
|
params.add(new QueryParam(new DataProductionUpdateIdColumnDefinition().name(), dataProduction.getId()));
|
params.add(new QueryParam(new DateMiseAJourColumnDefinition().name(), dataProduction.getDateProduction()));
|
|
//On ajoute ensuite les paramètre de la clause WHERE
|
params.addAll(new WhereQueryParameters(queryCriterion).parameters());
|
|
return params;
|
}
|
}
|