/*
|
* 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<Tuple> 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<AppColumnDefinition> columnsToAdd() {
|
return new ArrayList<>(Arrays.asList(
|
new DateCreationColumnDefinition(),
|
new DateMiseAJourColumnDefinition(),
|
new DataProductionUpdateIdColumnDefinition()
|
));
|
}
|
|
}
|