/* * 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.fdxconsultation.core.impl.integration; import com.megatim.fdxcommons.tools.database.connection.DBConnection; import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition; import com.megatim.fdxcommons.tools.database.tables.FdxConsultationTable; import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionUpdateIdColumnDefinition; import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateCreationColumnDefinition; import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateMiseAJourColumnDefinition; import com.megatim.fdxcommons.tools.database.tables.appcolumns.EnCoursProductionColumnDefinition; import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager; import com.megatim.fdxconsultation.tools.context.AppCommonContext; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Resource; import javax.enterprise.context.Dependent; import javax.inject.Inject; import javax.persistence.Tuple; import javax.sql.DataSource; import com.megatim.fdxcommons.core.ifaces.integration.AppColumnCreator; /** * * @author ASUS */ @Dependent public class AppColumnCreatorImpl implements AppColumnCreator { @Inject ColumnDefinitionManager columnDefinitionManager; @Resource(lookup = AppCommonContext.JNDI_NAME) private DataSource dataSource; @Override public void create() { List refVersionAndTypeFichier = columnDefinitionManager.byRefVersionAndByTypeFichier(); final String encoursProductionColumnName = new EnCoursProductionColumnDefinition().name(); try ( Connection connection = new DBConnection(dataSource).connection()) { refVersionAndTypeFichier.stream().forEach(r -> { FdxConsultationTable consTable = new FdxConsultationTable((String) r.get(0), (String) r.get(1)); try { for (AppColumnDefinition appColumn : columnsToAdd()) { if (consTable.checkIfTableExists(connection) && !consTable.checkIfColumnExists(connection, appColumn.name())) { consTable.addAppColumn(connection, appColumn); } } } catch (SQLException ex) { Logger.getLogger(AppColumnCreatorImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); } }); } catch (SQLException ex) { Logger.getLogger(AppColumnCreatorImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); } } private List columnsToAdd() { return new ArrayList<>(Arrays.asList( new DateCreationColumnDefinition(), new DateMiseAJourColumnDefinition(), new DataProductionUpdateIdColumnDefinition() )); } }