Finish Hotfix-2
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-01-29 17:27:15 +01:00
9 changed files with 57 additions and 39 deletions

View File

@@ -1,5 +1,7 @@
package it.integry.common.var;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems_model.entity.Azienda;
import org.springframework.stereotype.Service;
@@ -12,8 +14,17 @@ public class EmsDBConst {
private HashMap<String, Const> datiAziendaBindingTable = new HashMap<String, Const>() {{
}};
public Const getConsts(String profileDb) {
String aziendaUp = profileDb.toUpperCase();
public Const getConstsByProfile(String profileDb) {
profileDb = profileDb.toUpperCase();
final SettingsModel settingsModel = ApplicationContextProvider.getApplicationContext().getBean(SettingsModel.class);
final String dbName = settingsModel.getDbNameFromProfileDb(profileDb);
return getConsts(dbName);
}
public Const getConsts(String dbName) {
String aziendaUp = dbName.toUpperCase();
if (!datiAziendaBindingTable.containsKey(aziendaUp)) {
datiAziendaBindingTable.put(aziendaUp, new Const());

View File

@@ -25,8 +25,6 @@ import java.sql.DriverManager;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import static org.reflections.scanners.Scanners.TypesAnnotated;
@@ -104,7 +102,7 @@ public class EmsCoreContext {
private void onPostDBLoaded(MultiDBTransactionManager multiDBTransactionManager, Runnable onDone) throws InterruptedException {
final ExecutorService executorService = Executors.newSingleThreadExecutor();
// final ExecutorService executorService = Executors.newSingleThreadExecutor();
new Thread(() -> {
try {

View File

@@ -95,11 +95,9 @@ public class EmsCoreDBLoader {
// return exists;
// }
private void discoverAllConnections(MultiDBTransactionManager multiDBTransactionManager) {
private void discoverAllConnections(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
for (AvailableConnectionsModel model : settingsModel.getAvailableConnections()) {
if (!model.getInternalDb())
continue;
for (AvailableConnectionsModel model : settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true, settingsController.getHistoryProfileDb())) {
try {
final DataSource ds = connectionPool.getConnection(model.getProfileName());
@@ -120,29 +118,27 @@ public class EmsCoreDBLoader {
for (final AdvancedDataSource advancedDataSource : multiDBTransactionManager.getActiveConnections()) {
try {
Connection conn = advancedDataSource.getConnection();
if (advancedDataSource.isInternalDb()) {
Azienda azienda = Azienda.getDefaultAzienda(conn);
Azienda azienda = Azienda.getDefaultAzienda(conn);
if (azienda != null) {
String applicationDbName = azienda.getApplicationName();
String nomeAzienda = azienda.getNomeDitta();
if (azienda != null) {
String applicationDbName = azienda.getApplicationName();
String nomeAzienda = azienda.getNomeDitta();
if (UtilityString.isNullOrEmpty(applicationDbName)) {
throw new Exception("Impostare il campo \"Application Name\"");
}
HashMap<String, String> gestSetupValues =
setupGest.getSetupSection(conn, "DATI_AZIENDA", "FATTURAZIONE_ELETTRONICA");
emsDBConst.getConsts(advancedDataSource.getDataSource().getProfile())
.setApplicationDbName(applicationDbName)
.setNomeAzienda(nomeAzienda)
.setAzienda(azienda)
.setGestSetupDatiAzienda(gestSetupValues);
} else {
throw new Exception("Non è stato possibile leggere i dati dalla tabella azienda");
if (UtilityString.isNullOrEmpty(applicationDbName)) {
throw new Exception("Impostare il campo \"Application Name\"");
}
HashMap<String, String> gestSetupValues =
setupGest.getSetupSection(conn, "DATI_AZIENDA", "FATTURAZIONE_ELETTRONICA");
emsDBConst.getConsts(advancedDataSource.getDataSource().getDbName())
.setApplicationDbName(applicationDbName)
.setNomeAzienda(nomeAzienda)
.setAzienda(azienda)
.setGestSetupDatiAzienda(gestSetupValues);
} else {
throw new Exception("Non è stato possibile leggere i dati dalla tabella azienda");
}
} catch (Exception ex) {
ex.printStackTrace();

View File

@@ -348,7 +348,7 @@ public class MailService {
.append("<br /><br /></p>");
String nomeAzienda = emsDBConst.getConsts(multiDBTransactionManager.getPrimaryDatasource().getProfile())
String nomeAzienda = emsDBConst.getConstsByProfile(multiDBTransactionManager.getPrimaryDatasource().getProfile())
.getNomeAzienda();
subject = String.format("[%s] %s", nomeAzienda, subject);
@@ -402,7 +402,7 @@ public class MailService {
.append(".<br /><br /></p>");
String nomeAzienda = emsDBConst.getConsts(multiDBTransactionManager.getPrimaryDatasource().getProfile())
String nomeAzienda = emsDBConst.getConstsByProfile(multiDBTransactionManager.getPrimaryDatasource().getProfile())
.getNomeAzienda();
String subject = String.format("[%s] Errore durante operazione di %s su %s", nomeAzienda, action, InetAddress.getLocalHost().getHostName());

View File

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -106,6 +107,18 @@ public class SettingsModel implements InitializingBean {
.collect(Collectors.toList());
}
public List<AvailableConnectionsModel> getAvailableConnectionsWithoutDuplicatedProfiles(boolean onlyInternal, String historyProfileDb) {
Map<String, List<AvailableConnectionsModel>> databases = getAvailableConnections(onlyInternal)
.stream()
.filter(AvailableConnectionsModel::getInternalDb)
.filter(x -> !historyProfileDb.equalsIgnoreCase(x.getProfileName()))
.collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName));
return databases.keySet().stream()
.map(key -> databases.get(key).get(0))
.collect(Collectors.toList());
}
public void addAvailableConnection(AvailableConnectionsModel availableConnectionsModel) {
availableConnections.add(availableConnectionsModel);
}

View File

@@ -215,7 +215,7 @@ public class SyncManager {
}
public String getDistributoreProfileDb(String profileDb) {
return emsDBConst.getConsts(profileDb)
return emsDBConst.getConstsByProfile(profileDb)
.getAzienda().getDbDistributore();
}

View File

@@ -75,10 +75,10 @@ public class SystemRequisiteCheckInterceptor extends HandlerInterceptorAdapter {
if (foundName != null) {
if (emsDBConst.getConsts(foundName).getApplicationDbName() == null) {
if (emsDBConst.getConstsByProfile(foundName).getApplicationDbName() == null) {
throw new SystemNotInitializedException(553, "Application Name not initialized");
}
if (emsDBConst.getConsts(foundName).getNomeAzienda() == null) {
if (emsDBConst.getConstsByProfile(foundName).getNomeAzienda() == null) {
throw new SystemNotInitializedException(554, "Nome azienda not initialized");
}
}

View File

@@ -305,7 +305,7 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
public void setApplicationNameDB(String profileDb) {
EmsDBConst emsDBConst = ApplicationContextProvider.getApplicationContext().getBean(EmsDBConst.class);
this.setApplicationName(emsDBConst.getConsts(profileDb).getApplicationDbName());
this.setApplicationName(emsDBConst.getConstsByProfile(profileDb).getApplicationDbName());
}
@Override

View File

@@ -61,7 +61,7 @@ public class DigitalInvoiceManager {
if(!UtilityString.isNullOrEmpty(requestDataDTO.getProfileDB())) {
EmsDBConst.Const aziendaVars = emsDBConst.getConsts(requestDataDTO.getProfileDB());
EmsDBConst.Const aziendaVars = emsDBConst.getConstsByProfile(requestDataDTO.getProfileDB());
partitaIva = aziendaVars.getAzienda().getPartIva();
codFiscale = UtilityString.isNull(aziendaVars.getAzienda().getCodFiscale(), aziendaVars.getAzienda().getPartIva());
@@ -89,19 +89,19 @@ public class DigitalInvoiceManager {
}
public String getEmailNotification() {
return emsDBConst.getConsts(requestDataDTO.getProfileDB())
return emsDBConst.getConstsByProfile(requestDataDTO.getProfileDB())
.getGestSetupDatiAzienda()
.get("EMAIL_NOTIFICATION");
}
public String getEmailForLog() {
return emsDBConst.getConsts(requestDataDTO.getProfileDB())
return emsDBConst.getConstsByProfile(requestDataDTO.getProfileDB())
.getGestSetupDatiAzienda()
.get("EMAIL_FOR_LOG");
}
public boolean isInivoRiepilogo() {
return emsDBConst.getConsts(requestDataDTO.getProfileDB())
return emsDBConst.getConstsByProfile(requestDataDTO.getProfileDB())
.getGestSetupDatiAzienda()
.get("INVIO_RIEPILOGO")
.equalsIgnoreCase("S");