/* * 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 params = finalParameters(); new UpdateQuery(connection, queryCriterion, updateMetaData.tableName(), columnNames(), params).execute(); } private List columnNames() throws Exception { List columNames = new ArrayList<>(); columNames.addAll(updateMetaData.columnNames()); columNames.add(new DataProductionUpdateIdColumnDefinition().name()); columNames.add(new DateMiseAJourColumnDefinition().name()); return columNames; } private List finalParameters() throws Exception { List 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; } }