Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-01-10 10:58:49 +01:00
29 changed files with 290 additions and 272 deletions

View File

@@ -77,9 +77,12 @@ public class EmsCoreContext implements ApplicationListener<ContextRefreshedEvent
logger.debug("Init"); logger.debug("Init");
try { try {
new Thread(() -> { new Thread(() -> {
emsCoreDBLoader.load(this::onPostDBLoaded); try {
emsCoreDBLoader.load(this::onPostDBLoaded);
} catch (Exception e) {
throw new RuntimeException(e);
}
}).start(); }).start();
} catch (Exception e) { } catch (Exception e) {

View File

@@ -8,6 +8,7 @@ import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.SettingsModel; import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.settings.SettingsController; import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource; import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
import it.integry.ems.sync.MultiDBTransaction.BasicConnectionPool;
import it.integry.ems.sync.MultiDBTransaction.Connection; import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.service.UserCacheService; import it.integry.ems.user.service.UserCacheService;
@@ -43,15 +44,23 @@ public class EmsCoreDBLoader {
@Autowired @Autowired
private UserCacheService userCacheService; private UserCacheService userCacheService;
@Autowired
private BasicConnectionPool connectionPool;
@PostContextConstruct(priority = 10) @PostContextConstruct(priority = 10)
public void init() { public void init() throws Exception {
this.settingsController.addOnConfigUpdated(() -> { this.settingsController.addOnConfigUpdated(() -> {
load(null); try {
load(null);
} catch (Exception e) {
throw new RuntimeException(e);
}
}); });
} }
public void load(final RunnableArgs<MultiDBTransactionManager> onComplete) { public void load(final RunnableArgs<MultiDBTransactionManager> onComplete) throws Exception {
multiDBTransactionManager = new MultiDBTransactionManager(); connectionPool.init();
multiDBTransactionManager = new MultiDBTransactionManager(connectionPool);
try { try {
discoverAllConnections(); discoverAllConnections();
@@ -92,19 +101,15 @@ public class EmsCoreDBLoader {
for (AvailableConnectionsModel model : settingsModel.getAvailableConnections()) { for (AvailableConnectionsModel model : settingsModel.getAvailableConnections()) {
if (!model.getInternalDb()) if (!model.getInternalDb())
continue; continue;
try { try {
DataSource ds = new DataSource(); final DataSource ds = connectionPool.getConnection(model.getProfileName());
ds.initialize(model.getProfileName());
String dbDistributore = null; String sql = "SELECT db_distributore FROM azienda";
String dbDistributore = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(ds.getConnection(), sql);
boolean isInternalDb = model.getInternalDb();
if (isInternalDb) {
String sql = "SELECT db_distributore FROM azienda";
dbDistributore = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(ds.getConnection(), sql);
}
multiDBTransactionManager.addConnection(model.getProfileName(), ds, model.getDbName().equalsIgnoreCase(dbDistributore)); multiDBTransactionManager.addConnection(model.getProfileName(), ds, model.getDbName().equalsIgnoreCase(dbDistributore));
} catch (Exception ex) { } catch (Exception ex) {
logger.error(String.format("La connessione al DB \"%s\" non è valida. %s", model.getProfileName(), ex.getMessage()), ex); logger.error(String.format("La connessione al DB \"%s\" non è valida. %s", model.getProfileName(), ex.getMessage()), ex);
} }

View File

@@ -28,6 +28,7 @@ public class DataSource {
private String profile; private String profile;
private Short sessionID; private Short sessionID;
private Connection connection = null; private Connection connection = null;
private String applicationName;
public String getDbName() { public String getDbName() {
return connectionModel.getDbName(); return connectionModel.getDbName();
@@ -41,13 +42,15 @@ public class DataSource {
return connectionModel.getConnectionType(); return connectionModel.getConnectionType();
} }
public String getApplicationName() {
return applicationName;
}
public int getSessionID() { public int getSessionID() {
return sessionID; return sessionID;
} }
public synchronized Connection getConnection() throws IOException, SQLException { public synchronized Connection getConnection() throws IOException, SQLException {
if (connection == null || connection.isClosed())
init();
return connection; return connection;
} }
@@ -55,10 +58,11 @@ public class DataSource {
return !(connection != null && !connection.isClosed()); return !(connection != null && !connection.isClosed());
} }
private void init() throws SQLException, IOException { private void init(String applicationName) throws SQLException, IOException {
this.applicationName = applicationName;
connection = Connection.fromConnection( connection = Connection.fromConnection(
DriverManager.getConnection(connectionModel.getDbConnectionString(), connectionModel.getUsername(), connectionModel.getPasswordDecrypted()) DriverManager.getConnection(connectionModel.getDbConnectionString(applicationName), connectionModel.getUsername(), connectionModel.getPasswordDecrypted())
); );
connection.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED); connection.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED);
connection.setAutoCommit(false); connection.setAutoCommit(false);
@@ -112,7 +116,7 @@ public class DataSource {
this.connectionModel = connectionModel; this.connectionModel = connectionModel;
if (autoOpenConnection) { if (autoOpenConnection) {
init(); init(connectionName);
} }
} }

View File

@@ -0,0 +1,19 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250109154212 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
dropColumn("gtb_porto", "flag_fattura_vettore");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,19 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250109161329 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE azienda ADD cod_lucid VARCHAR(20)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -116,7 +116,7 @@ public class AvailableConnectionsModel {
} }
@JsonIgnore @JsonIgnore
public String getDbConnectionString() throws IOException { public String getDbConnectionString(String applicationName) throws IOException {
if (UtilityString.isNullOrEmpty(host)) { if (UtilityString.isNullOrEmpty(host)) {
throw new IOException(String.format("HOST di connessione al database non configurato correttamente (%s)", profileName)); throw new IOException(String.format("HOST di connessione al database non configurato correttamente (%s)", profileName));
@@ -135,7 +135,7 @@ public class AvailableConnectionsModel {
return String.format("jdbc:mysql://%s:3306/%s", host, dbName); return String.format("jdbc:mysql://%s:3306/%s", host, dbName);
case MSSQL: case MSSQL:
return String.format("jdbc:sqlserver://%s;databaseName=%s;applicationName=%s", host, dbName, "EMS Connection"); return String.format("jdbc:sqlserver://%s;databaseName=%s;applicationName=%s", host, dbName, applicationName);
case POSTGRES: case POSTGRES:
return String.format("jdbc:postgresql://%s:5432/%s", host, dbName); return String.format("jdbc:postgresql://%s:5432/%s", host, dbName);

View File

@@ -0,0 +1,95 @@
package it.integry.ems.sync.MultiDBTransaction;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.utility.UtilityDebug;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@Component
public class BasicConnectionPool {
@Autowired
private SettingsModel settingsModel;
private final HashMap<String, List<DataSource>> connectionPool = new HashMap<>();
private final HashMap<String, List<DataSource>> usedConnections = new HashMap<>();
public synchronized void init() throws Exception {
int poolSize =
UtilityDebug.isIntegryServerMaster() ? 1 :
UtilityDebug.isIntegryServerDev() ? 2 :
UtilityDebug.isDebugExecution() ? 0 :
Runtime.getRuntime().availableProcessors();
poolSize = Math.min(poolSize, 8);
final List<AvailableConnectionsModel> availableConnections = settingsModel.getAvailableConnections(true);
for (final AvailableConnectionsModel availableConnectionsModel : availableConnections) {
synchronized (connectionPool) {
if (!connectionPool.containsKey(availableConnectionsModel.getProfileName()))
connectionPool.put(availableConnectionsModel.getProfileName(), new ArrayList<>());
if (!usedConnections.containsKey(availableConnectionsModel.getProfileName()))
usedConnections.put(availableConnectionsModel.getProfileName(), new ArrayList<>());
int createdConnections = connectionPool.get(availableConnectionsModel.getProfileName()).size() +
usedConnections.get(availableConnectionsModel.getProfileName()).size();
for (int j = 0; j < poolSize - createdConnections; j++) {
DataSource ds = new DataSource();
ds.initialize(availableConnectionsModel.getProfileName(), "EMS Pool Connection #" + j, true);
connectionPool.get(availableConnectionsModel.getProfileName()).add(ds);
}
}
}
}
public synchronized DataSource getConnection(String profileName) throws Exception {
DataSource ds = null;
synchronized (connectionPool) {
if (!connectionPool.containsKey(profileName) || connectionPool.get(profileName).isEmpty()) {
ds = createExtraConnection(profileName);
} else {
ds = connectionPool.get(profileName)
.remove(connectionPool.get(profileName).size() - 1);
if(ds.isClosed()) ds.initialize(profileName, ds.getApplicationName(), true);
usedConnections.get(profileName).add(ds);
}
}
return ds;
}
public synchronized boolean releaseConnection(String profileName, DataSource ds) throws SQLException {
if (ds.getApplicationName().equals("EMS Connection")) { //Extra connection
ds.forceClose();
return true;
} else {
synchronized (connectionPool) {
connectionPool.get(profileName).add(ds);
return usedConnections.get(profileName).remove(ds);
}
}
}
private DataSource createExtraConnection(String profileName) throws Exception {
DataSource ds = new DataSource();
ds.initialize(profileName, "EMS Connection", true);
return ds;
}
}

View File

@@ -1,70 +0,0 @@
package it.integry.ems.sync.MultiDBTransaction;
import it.integry.ems_model.utility.UtilityDB;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class DBConnectionChecker {
private final int DELAY_CHECK = 5 * 1000;
private final String applicationName = "EMS CHK_CONN";
private Logger logger = LogManager.getLogger();
private MultiDBTransactionManager mMultiDBTransactionManager;
private String mCheckSql = null;
private int mConnectionNumber = -1;
public void init(String profileDB) throws Exception {
mMultiDBTransactionManager = new MultiDBTransactionManager();
mMultiDBTransactionManager.setPrimaryDs(profileDB, applicationName);
mCheckSql = "SELECT (COUNT(dbid) - 1) as NumberOfConnections "
+ "FROM sys.sysprocesses WHERE dbid > 0 and DB_NAME(dbid) = " + UtilityDB.valueToString(mMultiDBTransactionManager.getPrimaryDatasource().getProfile())
+ " and program_name <> " + UtilityDB.valueToString(applicationName);
}
public void startChecking() throws Exception {
if (mMultiDBTransactionManager != null) {
new Thread(new Runnable() {
@Override
public void run() {
do {
try {
checkNow();
Thread.sleep(DELAY_CHECK);
} catch (InterruptedException e) {
logger.error("DBConnectionChecker", e);
mConnectionNumber = -1;
break;
}
} while (true);
}
}).start();
} else throw new Exception("Prima di avviare il monitoring è necessario inizializzare il DBConnectionChecker");
}
private void checkNow() {
try {
mConnectionNumber = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(mMultiDBTransactionManager.getPrimaryConnection(), mCheckSql);
} catch (Exception ex) {
}
}
public int getCurrentNumberOfConnections() {
return mConnectionNumber;
}
}

View File

@@ -8,12 +8,12 @@ import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.properties.EmsProperties; import it.integry.ems.properties.EmsProperties;
import it.integry.ems.settings.Model.AvailableConnectionsModel; import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.SettingsModel; import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems_model.utility.UtilityString;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.context.ContextLoader;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
@@ -33,6 +33,9 @@ public class MultiDBTransactionManager implements AutoCloseable {
private List<AdvancedDataSource> dbDatasources = new ArrayList<>(); private List<AdvancedDataSource> dbDatasources = new ArrayList<>();
private DataSource dataSource; private DataSource dataSource;
@Autowired
private BasicConnectionPool connectionPool;
@Autowired @Autowired
private SettingsModel settingsModel; private SettingsModel settingsModel;
@@ -43,6 +46,11 @@ public class MultiDBTransactionManager implements AutoCloseable {
private boolean enableLog = true; private boolean enableLog = true;
public MultiDBTransactionManager() { public MultiDBTransactionManager() {
connectionPool = ContextLoader.getCurrentWebApplicationContext().getBean(BasicConnectionPool.class);
}
public MultiDBTransactionManager(BasicConnectionPool connectionPool) throws Exception {
this.connectionPool = connectionPool;
} }
public MultiDBTransactionManager(AvailableConnectionsModel connectionsModel) throws Exception { public MultiDBTransactionManager(AvailableConnectionsModel connectionsModel) throws Exception {
@@ -54,6 +62,7 @@ public class MultiDBTransactionManager implements AutoCloseable {
} }
public MultiDBTransactionManager(String profileDb, boolean enableLog) throws Exception { public MultiDBTransactionManager(String profileDb, boolean enableLog) throws Exception {
this();
this.enableLog = enableLog; this.enableLog = enableLog;
this.setPrimaryDs(profileDb); this.setPrimaryDs(profileDb);
} }
@@ -78,7 +87,7 @@ public class MultiDBTransactionManager implements AutoCloseable {
public void Destroy() throws Exception { public void Destroy() throws Exception {
this.commitAll(); this.commitAll();
this.closeAll(); this.closeAll();
this.dbDatasources = null; this.dbDatasources.clear();
this.dbPrimary = null; this.dbPrimary = null;
} }
@@ -87,14 +96,12 @@ public class MultiDBTransactionManager implements AutoCloseable {
} }
public void addConnection(String profileName) throws Exception { public void addConnection(String profileName) throws Exception {
DataSource ds = new DataSource(); this.addConnection(profileName, false);
ds.initialize(profileName);
this.addConnection(profileName, ds);
} }
public void addConnection(String profileName, DataSource dataSource) { public void addConnection(String profileName, boolean isDistributore) throws Exception {
this.addConnection(profileName, dataSource, false); DataSource ds = connectionPool.getConnection(profileName);
this.addConnection(profileName, ds, isDistributore);
} }
public void addConnection(String profileName, DataSource dataSource, boolean isDistributore) { public void addConnection(String profileName, DataSource dataSource, boolean isDistributore) {
@@ -208,14 +215,6 @@ public class MultiDBTransactionManager implements AutoCloseable {
return connection.prepareStatement(sql); return connection.prepareStatement(sql);
} }
/*public AdvancedDataSource getPrimaryDatasource()throws Exception {
if(dbDatasources != null){
return dbDatasources.get(PRIMARY_DB_KEY);
} else {
throw new Exception("Database not present in connections list");
}
}*/
public ArrayList<AdvancedDataSource> getActiveConnections() throws SQLException { public ArrayList<AdvancedDataSource> getActiveConnections() throws SQLException {
ArrayList<AdvancedDataSource> activeConnections = new ArrayList<AdvancedDataSource>(); ArrayList<AdvancedDataSource> activeConnections = new ArrayList<AdvancedDataSource>();
@@ -258,8 +257,10 @@ public class MultiDBTransactionManager implements AutoCloseable {
logger.debug("Closing manually: " + advancedDataSource.getDataSource().getProfile() + " (#" + advancedDataSource.getDataSource().getSessionID() + ")"); logger.debug("Closing manually: " + advancedDataSource.getDataSource().getProfile() + " (#" + advancedDataSource.getDataSource().getSessionID() + ")");
} }
advancedDataSource.commit(); advancedDataSource.commit();
advancedDataSource.close();
} }
connectionPool.releaseConnection(advancedDataSource.getProfileName(), advancedDataSource.getDataSource());
} }
} }
@@ -294,19 +295,8 @@ public class MultiDBTransactionManager implements AutoCloseable {
* @throws Exception * @throws Exception
*/ */
public void setPrimaryDs(String profileDb, String applicationName) throws Exception { public void setPrimaryDs(String profileDb) throws Exception {
if (dataSource == null) { dataSource = connectionPool.getConnection(profileDb);
dataSource = new DataSource();
} else {
dataSource.forceClose();
}
if (UtilityString.isNullOrEmpty(applicationName)) {
dataSource.initialize(profileDb);
} else {
dataSource.initialize(profileDb, applicationName, true);
}
java.util.Optional<AvailableConnectionsModel> availableConnectionsModel = SettingsModel.getInstance().getAvailableConnections().stream() java.util.Optional<AvailableConnectionsModel> availableConnectionsModel = SettingsModel.getInstance().getAvailableConnections().stream()
.filter(x -> x.getProfileName().equalsIgnoreCase(profileDb)) .filter(x -> x.getProfileName().equalsIgnoreCase(profileDb))
@@ -321,11 +311,7 @@ public class MultiDBTransactionManager implements AutoCloseable {
this.dbPrimary = new AdvancedDataSource(dataSource.getProfile().toUpperCase(), dataSource, false, isInternalDb); this.dbPrimary = new AdvancedDataSource(dataSource.getProfile().toUpperCase(), dataSource, false, isInternalDb);
this.dbDatasources = new ArrayList<>(); this.dbDatasources = new ArrayList<>();
this.addConnection(dataSource.getProfile().toUpperCase(), dataSource); this.addConnection(dataSource.getProfile().toUpperCase(), dataSource, false);
}
public void setPrimaryDs(String profileDb) throws Exception {
this.setPrimaryDs(profileDb, null);
} }

View File

@@ -9,6 +9,7 @@ import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.service.MailService; import it.integry.ems.service.MailService;
import it.integry.ems.settings.Model.AvailableConnectionsModel; import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.SettingsModel; import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EntityInterface; import it.integry.ems_model.base.EntityInterface;
@@ -25,9 +26,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@@ -190,9 +188,7 @@ public class SyncManager {
} }
if (!multiDBTransactionManager.containsDB(database)) { if (!multiDBTransactionManager.containsDB(database)) {
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(database);
dsSync.initialize(database);
multiDBTransactionManager.addConnection(database, dsSync);
} }
Connection syncConnection = multiDBTransactionManager.getDatabaseDataSource(database).getConnection(); Connection syncConnection = multiDBTransactionManager.getDatabaseDataSource(database).getConnection();

View File

@@ -3,12 +3,12 @@ package it.integry.ems.user.service;
import com.annimon.stream.Optional; import com.annimon.stream.Optional;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import it.integry.annotations.PostContextConstruct; import it.integry.annotations.PostContextConstruct;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.expansion.RunnableThrowable; import it.integry.ems.expansion.RunnableThrowable;
import it.integry.ems.looper.service.LooperService; import it.integry.ems.looper.service.LooperService;
import it.integry.ems.settings.Model.AvailableConnectionsModel; import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.SettingsModel; import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource; import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.dto.UserDTO; import it.integry.ems.user.dto.UserDTO;
import it.integry.ems.utility.UtilityDebug; import it.integry.ems.utility.UtilityDebug;
@@ -20,8 +20,6 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -57,11 +55,9 @@ public class UserCacheService {
try { try {
for (AvailableConnectionsModel model : availableConnectionsModels) { for (AvailableConnectionsModel model : availableConnectionsModels) {
DataSource ds = new DataSource();
try { try {
ds.initialize(model.getProfileName()); multiDBTransactionManager.addConnection(model.getProfileName());
multiDBTransactionManager.addConnection(model.getProfileName(), ds);
} catch (Exception ex) { } catch (Exception ex) {
logger.info(String.format("Cannot find %s database", model.getDbName()), ex); logger.info(String.format("Cannot find %s database", model.getDbName()), ex);
} }

View File

@@ -1,8 +1,5 @@
package it.integry.ems.utility; package it.integry.ems.utility;
import it.integry.ems.settings.Model.SettingsModel;
import org.springframework.web.context.ContextLoader;
import java.util.Map; import java.util.Map;
public class UtilityDebug { public class UtilityDebug {
@@ -10,7 +7,6 @@ public class UtilityDebug {
private static final String INTEGRY_DOMAIN = "STUDIO-ML"; private static final String INTEGRY_DOMAIN = "STUDIO-ML";
public static boolean isDebugExecution() { public static boolean isDebugExecution() {
//Controllo il dominio del PC attuale //Controllo il dominio del PC attuale
String domainName = System.getenv("USERDOMAIN"); String domainName = System.getenv("USERDOMAIN");
return INTEGRY_DOMAIN.equalsIgnoreCase(domainName); return INTEGRY_DOMAIN.equalsIgnoreCase(domainName);
@@ -18,16 +14,17 @@ public class UtilityDebug {
public static boolean isIntegryServer() { public static boolean isIntegryServer() {
SettingsModel settingsModel = ContextLoader.getCurrentWebApplicationContext().getBean(SettingsModel.class); return isIntegryServerDev() || isIntegryServerMaster();
}
return settingsModel.getDefaultProfile().equalsIgnoreCase("INTEGRY") || public static boolean isIntegryServerMaster() {
settingsModel.getDefaultProfile().equalsIgnoreCase("STUDIO-ML"); String computerName = getComputerName();
return computerName.equalsIgnoreCase("SERVERTOMCAT");
} }
public static boolean isIntegryServerDev() { public static boolean isIntegryServerDev() {
String computerName = getComputerName(); String computerName = getComputerName();
return isDebugExecution() && computerName.equalsIgnoreCase("SERVERDEV");
return computerName.equalsIgnoreCase("SERVERDEV");
} }
private static String getComputerName() { private static String getComputerName() {

View File

@@ -44,9 +44,6 @@ public class GtbPorto extends EntityBase {
@SqlField(value = "flag_attivo", nullable = false) @SqlField(value = "flag_attivo", nullable = false)
private Boolean flagAttivo; private Boolean flagAttivo;
@SqlField(value = "flag_fattura_vettore", nullable = false)
private Boolean flagFatturaVettore;
@SqlField(value = "flag_incoterms", nullable = false) @SqlField(value = "flag_incoterms", nullable = false)
private Boolean flagIncoterms; private Boolean flagIncoterms;
@@ -114,15 +111,6 @@ public class GtbPorto extends EntityBase {
return this; return this;
} }
public Boolean getFlagFatturaVettore() {
return flagFatturaVettore;
}
public GtbPorto setFlagFatturaVettore(Boolean flagFatturaVettore) {
this.flagFatturaVettore = flagFatturaVettore;
return this;
}
public Boolean getFlagIncoterms() { public Boolean getFlagIncoterms() {
return flagIncoterms; return flagIncoterms;
} }

View File

@@ -11,6 +11,7 @@ import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString; import it.integry.ems_model.utility.UtilityString;
import java.util.List; import java.util.List;
import java.util.Optional;
public class DocumentExtEntityRules { public class DocumentExtEntityRules {
@@ -25,17 +26,34 @@ public class DocumentExtEntityRules {
if ( mtbColts != null && mtbColts.size() > 0) { if ( mtbColts != null && mtbColts.size() > 0) {
for (MtbColt mtbColt : mtbColts) { for (MtbColt mtbColt : mtbColts) {
Optional<MtbColt> first = entity.getMtbColt()
mtbColt.setCodDtip(EmsRestConstants.NULL) .stream()
.setCodAnag(EmsRestConstants.NULL) .filter(colt -> colt.getGestione().equalsIgnoreCase(mtbColt.getGestione()) &&
.setDataDoc(EmsRestConstants.DATE_NULL) colt.getDataCollo().equals(mtbColt.getDataCollo()) &&
.setSerDoc(EmsRestConstants.NULL) colt.getSerCollo().equalsIgnoreCase(mtbColt.getSerCollo()) &&
.setNumDoc(EmsRestConstants.INTEGER_NULL) colt.getNumCollo().equals(mtbColt.getNumCollo()))
.setCodAnag(mtbColt.getFlagColloAnonimo().equalsIgnoreCase("S")?EmsRestConstants.NULL:mtbColt.getCodAnag()) .findFirst();
.setCodVdes(mtbColt.getFlagColloAnonimo().equalsIgnoreCase("S")?EmsRestConstants.NULL:mtbColt.getCodVdes()); if (first.isPresent()) {
mtbColt.setOperation(OperationType.UPDATE); first.get().setCodDtip(EmsRestConstants.NULL)
.setCodAnag(EmsRestConstants.NULL)
.setDataDoc(EmsRestConstants.DATE_NULL)
.setSerDoc(EmsRestConstants.NULL)
.setNumDoc(EmsRestConstants.INTEGER_NULL)
.setCodAnag(mtbColt.getFlagColloAnonimo().equalsIgnoreCase("S")?EmsRestConstants.NULL:mtbColt.getCodAnag())
.setCodVdes(mtbColt.getFlagColloAnonimo().equalsIgnoreCase("S")?EmsRestConstants.NULL:mtbColt.getCodVdes());
first.get().setOperation(OperationType.UPDATE);
} else {
mtbColt.setCodDtip(EmsRestConstants.NULL)
.setCodAnag(EmsRestConstants.NULL)
.setDataDoc(EmsRestConstants.DATE_NULL)
.setSerDoc(EmsRestConstants.NULL)
.setNumDoc(EmsRestConstants.INTEGER_NULL)
.setCodAnag(mtbColt.getFlagColloAnonimo().equalsIgnoreCase("S")?EmsRestConstants.NULL:mtbColt.getCodAnag())
.setCodVdes(mtbColt.getFlagColloAnonimo().equalsIgnoreCase("S")?EmsRestConstants.NULL:mtbColt.getCodVdes());
mtbColt.setOperation(OperationType.UPDATE);
entity.getMtbColt().add(mtbColt);
}
} }
entity.getMtbColt().addAll(mtbColts);
} }
} }
} }

View File

@@ -84,11 +84,6 @@ public class SetupGest {
} }
private String getSetup(Connection connection, String gestName, String section, String keySection, String precode) throws SQLException { private String getSetup(Connection connection, String gestName, String section, String keySection, String precode) throws SQLException {
PreparedStatement info;
ResultSet res;
String value = null;
if (!precode.isEmpty()) { if (!precode.isEmpty()) {
gestName = precode + "_" + gestName; gestName = precode + "_" + gestName;
} }
@@ -97,15 +92,9 @@ public class SetupGest {
+ " AND section = " + UtilityDB.valueToString(section) + " AND section = " + UtilityDB.valueToString(section)
+ " AND key_section = " + UtilityDB.valueToString(keySection); + " AND key_section = " + UtilityDB.valueToString(keySection);
info = connection.prepareStatement(query); String value = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, query);
res = info.executeQuery();
while (res.next()) {
value = res.getString(1) == null ? "" : res.getString(1);
}
res.close();
info.close();
return value; return UtilityString.isNull(value, "");
} }

View File

@@ -1,7 +1,6 @@
package it.integry.security.cache; package it.integry.security.cache;
import it.integry.annotations.PostContextConstruct; import it.integry.annotations.PostContextConstruct;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.looper.service.LooperService; import it.integry.ems.looper.service.LooperService;
import it.integry.ems.settings.Model.AvailableConnectionsModel; import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.SettingsModel; import it.integry.ems.settings.Model.SettingsModel;
@@ -114,11 +113,8 @@ public class JwtTokenCacheComponent implements ApplicationListener {
continue; continue;
try { try {
DataSource ds = new DataSource();
ds.initialize(availableConnectionsModel.getProfileName());
multiDBTransactionManager.addConnection( multiDBTransactionManager.addConnection(
availableConnectionsModel.getProfileName(), ds); availableConnectionsModel.getProfileName());
} catch (Exception ex) { } catch (Exception ex) {
logger.error("Database connection error", ex); logger.error("Database connection error", ex);
} }

View File

@@ -3,7 +3,6 @@ package it.integry.ems.activity.service;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants; import it.integry.common.var.CommonConstants;
import it.integry.ems.activity.dto.*; import it.integry.ems.activity.dto.*;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.javabeans.RequestDataDTO; import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.media.MediaImageService; import it.integry.ems.media.MediaImageService;
import it.integry.ems.media.MediaVideoService; import it.integry.ems.media.MediaVideoService;
@@ -12,7 +11,6 @@ import it.integry.ems.service.EntityProcessor;
import it.integry.ems.settings.SettingsController; import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity; import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.UtilityFile;
import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.config.EmsRestConstants; import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.db.ResultSetMapper; import it.integry.ems_model.db.ResultSetMapper;
@@ -1522,15 +1520,13 @@ public class ActivityService {
public List<ActivityHistoryDTO> getActivityHistory(String activityId) throws Exception { public List<ActivityHistoryDTO> getActivityHistory(String activityId) throws Exception {
MultiDBTransactionManager m = new MultiDBTransactionManager(); MultiDBTransactionManager m = new MultiDBTransactionManager();
DataSource ds = new DataSource();
String historyProfileDb = settingsController.getHistoryProfileDb(); String historyProfileDb = settingsController.getHistoryProfileDb();
ds.initialize(historyProfileDb);
List<ActivityHistoryDTO> returnList = new ArrayList<>(); List<ActivityHistoryDTO> returnList = new ArrayList<>();
try { try {
m.addConnection(historyProfileDb, ds); m.addConnection(historyProfileDb);
m.setPrimaryDs(historyProfileDb); m.setPrimaryDs(historyProfileDb);
String sql = "select stb_activity.activity_id,\n" + String sql = "select stb_activity.activity_id,\n" +

View File

@@ -13,7 +13,6 @@ import it.integry.ems.contabil.partitaIva.enums.SupportedStates;
import it.integry.ems.contabil.partitaIva.exceptions.CheckVatException; import it.integry.ems.contabil.partitaIva.exceptions.CheckVatException;
import it.integry.ems.contabil.partitaIva.interfaces.CheckVatPortType; import it.integry.ems.contabil.partitaIva.interfaces.CheckVatPortType;
import it.integry.ems.contabil.partitaIva.services.CheckVatService; import it.integry.ems.contabil.partitaIva.services.CheckVatService;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.rules.businessLogic.AccountingBusinessLogic; import it.integry.ems.rules.businessLogic.AccountingBusinessLogic;
import it.integry.ems.rules.businessLogic.enums.TipoPartita; import it.integry.ems.rules.businessLogic.enums.TipoPartita;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
@@ -1416,9 +1415,7 @@ public class ContabilService {
profileScontrini = multiDBTransactionManager.getPrimaryDatasource().getProfile(); profileScontrini = multiDBTransactionManager.getPrimaryDatasource().getProfile();
} }
//Definizione Connection DB scontrini //Definizione Connection DB scontrini
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(profileScontrini);
dsSync.initialize(profileScontrini);
multiDBTransactionManager.addConnection(profileScontrini, dsSync);
setup.put("isRemoteDbScontrini", (profileScontrini.compareTo(multiDBTransactionManager.getPrimaryDatasource().getProfile()) != 0 ? "S" : "N")); setup.put("isRemoteDbScontrini", (profileScontrini.compareTo(multiDBTransactionManager.getPrimaryDatasource().getProfile()) != 0 ? "S" : "N"));
setup.put("profileDbScontrini", profileScontrini); setup.put("profileDbScontrini", profileScontrini);

View File

@@ -4,7 +4,6 @@ import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants; import it.integry.common.var.CommonConstants;
import it.integry.ems.Import.dto.AnomalieDTO; import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.Import.dto.ImportRequestDTO; import it.integry.ems.Import.dto.ImportRequestDTO;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.document.Import.dto.EloDTO; import it.integry.ems.document.Import.dto.EloDTO;
import it.integry.ems.document.Import.dto.EloRowsDTO; import it.integry.ems.document.Import.dto.EloRowsDTO;
import it.integry.ems.document.Import.dto.RifOrdApuliaDTO; import it.integry.ems.document.Import.dto.RifOrdApuliaDTO;
@@ -35,7 +34,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.checkerframework.checker.units.qual.m;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -921,13 +919,13 @@ public class DocumentiAcquistoImportService {
while (rowIterator.hasNext()) { while (rowIterator.hasNext()) {
Row row = rowIterator.next(); Row row = rowIterator.next();
String numOrd = UtilityExcel.getCellAsString(row, 0).replace("-", ""); String numOrd = UtilityExcel.getCellAsString(row, 0).replace("-", "").trim();
String codiceAzienda = UtilityExcel.getCellAsString(row, 4); String codiceAzienda = UtilityExcel.getCellAsString(row, 4).trim();
String codicePv = UtilityExcel.getCellAsString(row, 5); String codicePv = UtilityExcel.getCellAsString(row, 5).trim();
Date dataFattura; Date dataFattura;
String numFattura = UtilityExcel.getCellAsString(row, 6, false); String numFattura = UtilityExcel.getCellAsString(row, 6, false).trim();
if (UtilityString.isNullOrEmpty(numFattura) || numFattura.equalsIgnoreCase("0")) { if (UtilityString.isNullOrEmpty(numFattura) || numFattura.equalsIgnoreCase("0")) {
numFattura = UtilityExcel.getCellAsString(row, 1); numFattura = UtilityExcel.getCellAsString(row, 1);
dataFattura = UtilityExcel.getCellAsDate(row, 2, "yyyyMMdd"); dataFattura = UtilityExcel.getCellAsDate(row, 2, "yyyyMMdd");
@@ -972,10 +970,7 @@ public class DocumentiAcquistoImportService {
for (String profileDb : profileDbList) { for (String profileDb : profileDbList) {
if (!profileDb.equalsIgnoreCase(multiDBTransactionManager.getPrimaryDatasource().getProfile())) { if (!profileDb.equalsIgnoreCase(multiDBTransactionManager.getPrimaryDatasource().getProfile())) {
DataSource ds = new DataSource(); multiDBTransactionManager.addConnection(profileDb);
ds.initialize(profileDb);
multiDBTransactionManager.addConnection(profileDb, ds);
} }
} }
@@ -1198,7 +1193,6 @@ public class DocumentiAcquistoImportService {
MultiDBTransactionManager m = new MultiDBTransactionManager(); MultiDBTransactionManager m = new MultiDBTransactionManager();
try { try {
m.addConnection(ds.getProfileName(), ds.getDataSource());
m.setPrimaryDs(ds.getProfileName()); m.setPrimaryDs(ds.getProfileName());
if (!isWdtb) { if (!isWdtb) {
@@ -1260,12 +1254,28 @@ public class DocumentiAcquistoImportService {
String codAnag = (String) resultQury.get("cod_anag"); String codAnag = (String) resultQury.get("cod_anag");
String codAlis = (String) resultQury.get("cod_alis"); String codAlis = (String) resultQury.get("cod_alis");
if (UtilityString.isNullOrEmpty(codAnag)) {
anomalie.add(AnomalieDTO.error(String.format("Nessun fornitore trovato con la partita iva %s", filconad.getCodForn())));
}
String codVdes = null;
if (UtilityString.isNullOrEmpty(codAlis)) {
sql = "SELECT cod_vdes, cod_alis FROM vtb_dest WHERE cod_anag = %s AND flag_attivo = 'S' and cod_alis is not null";
HashMap<String, Object> datiDest = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql);
codVdes = (String) datiDest.get("cod_vdes");
codAlis = (String) datiDest.get("cod_alis");
}
if (UtilityString.isNullOrEmpty(codAlis)) {
anomalie.add(AnomalieDTO.error(String.format("Codice listino non trovato sul fornitore %s", codAnag)));
}
String intercode = filconad.getCodClie().substring(4, 8) + "|" + filconad.getCodSocio(); String intercode = filconad.getCodClie().substring(4, 8) + "|" + filconad.getCodSocio();
sql = Query.format( sql = Query.format(
"SELECT cod_mdep\n" + "SELECT cod_mdep\n" +
"FROM mtb_depo_intercode\n" + "FROM mtb_depo_intercode\n" +
"WHERE intercode = %s AND cod_forn = %s", "WHERE intercode = %s AND cod_forn = %s %s",
intercode, codAnag intercode, codAnag, (UtilityString.isNullOrEmpty(codVdes)?"":"AND cod_vdes = " + UtilityDB.valueToString(codVdes))
); );
String codMdep = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); String codMdep = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
@@ -1280,7 +1290,8 @@ public class DocumentiAcquistoImportService {
.setDataDoc(filconad.getDataBolla()) .setDataDoc(filconad.getDataBolla())
.setCodDtip(codDtip) .setCodDtip(codDtip)
.setListino(codAlis) .setListino(codAlis)
.setCodMdep(codMdep); .setCodMdep(codMdep)
.setCodVdes(codVdes);
for (FilconadrDTO filconadr : filconad.getFilconadr()) { for (FilconadrDTO filconadr : filconad.getFilconadr()) {
sql = Query.format( sql = Query.format(
@@ -1300,9 +1311,7 @@ public class DocumentiAcquistoImportService {
new DtbDocr() new DtbDocr()
.setCodArtFor(filconadr.getCodArt()) .setCodArtFor(filconadr.getCodArt())
.setQtaDoc(filconadr.getQtaFatturata()) .setQtaDoc(filconadr.getQtaFatturata())
.setDescrizione(filconadr.getDescArt()) .setDescrizione(filconadr.getDescArt());
.setValUnt(filconadr.getPrzUnitario())
.setImportoRiga(filconadr.getImpTot());
dtbDocr.setOperation(OperationType.INSERT); dtbDocr.setOperation(OperationType.INSERT);

View File

@@ -5,7 +5,6 @@ import it.integry.common.var.CommonConstants;
import it.integry.ems.Import.base.EntityImportResponse; import it.integry.ems.Import.base.EntityImportResponse;
import it.integry.ems.Import.dto.ImportRequestDTO; import it.integry.ems.Import.dto.ImportRequestDTO;
import it.integry.ems.Import.enums.EntityImportType; import it.integry.ems.Import.enums.EntityImportType;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.document.Import.DocumentiImporter; import it.integry.ems.document.Import.DocumentiImporter;
import it.integry.ems.document.Import.dto.EloDTO; import it.integry.ems.document.Import.dto.EloDTO;
import it.integry.ems.document.Import.dto.ResiDTO; import it.integry.ems.document.Import.dto.ResiDTO;
@@ -248,9 +247,7 @@ public class DocumentController {
//definizione Connection su DB scontrini //definizione Connection su DB scontrini
String profileDbScontrini = datiDoc.getProfileDbScontrini(); String profileDbScontrini = datiDoc.getProfileDbScontrini();
if (!UtilityString.isNullOrEmpty(profileDbScontrini)) { if (!UtilityString.isNullOrEmpty(profileDbScontrini)) {
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(profileDbScontrini);
dsSync.initialize(profileDbScontrini);
multiDBTransactionManager.addConnection(profileDbScontrini, dsSync);
} }
DtbDoct dtbDoctRet = documentService.emissioneDocumentiDaScontrino(multiDBTransactionManager, datiDoc, false); DtbDoct dtbDoctRet = documentService.emissioneDocumentiDaScontrino(multiDBTransactionManager, datiDoc, false);

View File

@@ -3,8 +3,8 @@ package it.integry.ems.document.export.service;
import com.annimon.stream.Optional; import com.annimon.stream.Optional;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants; import it.integry.common.var.CommonConstants;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.export.base.EntityExportResponse; import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDB;
@@ -18,9 +18,6 @@ import org.springframework.stereotype.Service;
import java.io.File; import java.io.File;
import java.math.BigDecimal; import java.math.BigDecimal;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.ArrayList; import java.util.ArrayList;
@@ -51,15 +48,11 @@ public class SicilianiDMSExportService {
Connection con = multiDBTransactionManager.getPrimaryConnection(); Connection con = multiDBTransactionManager.getPrimaryConnection();
//Acquisizione Connection DB TRAXAL //Acquisizione Connection DB TRAXAL
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(profileDBTraxal);
dsSync.initialize(profileDBTraxal);
multiDBTransactionManager.addConnection(profileDBTraxal, dsSync);
Connection conTraxal = multiDBTransactionManager.getDatabaseDataSource(profileDBTraxal).getConnection(); Connection conTraxal = multiDBTransactionManager.getDatabaseDataSource(profileDBTraxal).getConnection();
//Acquisizione Connection DB ALYANTE //Acquisizione Connection DB ALYANTE
DataSource dsSyncAlyante = new DataSource(); multiDBTransactionManager.addConnection(profileDBAlyante);
dsSync.initialize(profileDBAlyante);
multiDBTransactionManager.addConnection(profileDBAlyante, dsSync);
Connection conAlyante = multiDBTransactionManager.getDatabaseDataSource(profileDBTraxal).getConnection(); Connection conAlyante = multiDBTransactionManager.getDatabaseDataSource(profileDBTraxal).getConnection();
// ACQUISIZIONE ELENCO RIGHE ORDINE SU CUI E' STATA CAMBIATA LA DATA CONSEGNA // ACQUISIZIONE ELENCO RIGHE ORDINE SU CUI E' STATA CAMBIATA LA DATA CONSEGNA
@@ -196,9 +189,7 @@ public class SicilianiDMSExportService {
Connection conn = multiDBTransactionManager.getPrimaryConnection(); Connection conn = multiDBTransactionManager.getPrimaryConnection();
// Acquisizione Connection DB ALYANTE // Acquisizione Connection DB ALYANTE
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(profileDBAlyante);
dsSync.initialize(profileDBAlyante);
multiDBTransactionManager.addConnection(profileDBAlyante, dsSync);
Connection conAlyante = multiDBTransactionManager.getDatabaseDataSource(profileDBAlyante).getConnection(); Connection conAlyante = multiDBTransactionManager.getDatabaseDataSource(profileDBAlyante).getConnection();
try { try {

View File

@@ -58,10 +58,12 @@ import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URL; import java.net.URL;
import java.sql.*; import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Timestamp;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.Date;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -926,9 +928,7 @@ public class DocumentService {
profileScontrini = multiDBTransactionManager.getPrimaryDatasource().getProfile(); profileScontrini = multiDBTransactionManager.getPrimaryDatasource().getProfile();
//Acquisizione Connection DB scontrini //Acquisizione Connection DB scontrini
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(profileScontrini);
dsSync.initialize(profileScontrini);
multiDBTransactionManager.addConnection(profileScontrini, dsSync);
Connection connScontrini = multiDBTransactionManager.getDatabaseDataSource(profileScontrini).getConnection(); Connection connScontrini = multiDBTransactionManager.getDatabaseDataSource(profileScontrini).getConnection();
Statement cmdSc = connScontrini.createStatement(); Statement cmdSc = connScontrini.createStatement();
ResultSet resArt; ResultSet resArt;

View File

@@ -132,11 +132,14 @@ public class DocumentiDirettiService {
boolean fatturaPedaneCliente = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); boolean fatturaPedaneCliente = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
sql = boolean fatturaVettore = false;
Query.format( if (!UtilityString.isNullOrEmpty(dtbDoct.getIncoterms())) {
"SELECT flag_fattura_vettore FROM gtb_porto WHERE porto = %s", sql =
dtbDoct.getIncoterms()); Query.format(
boolean fatturaVettore = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); "SELECT CAST(IIF(costo=2,1,0) as bit) FROM gtb_porto WHERE porto = %s",
dtbDoct.getIncoterms());
fatturaVettore = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
if ((fatturaPedaneCliente || fatturaVettore) && if ((fatturaPedaneCliente || fatturaVettore) &&
dtbDoct.getDtbDocImb().stream().anyMatch(x->x.getTipoReso()!= 2 && !x.getNumImbCons().equals(x.getNumImbResi())) dtbDoct.getDtbDocImb().stream().anyMatch(x->x.getTipoReso()!= 2 && !x.getNumImbCons().equals(x.getNumImbResi()))

View File

@@ -2,7 +2,6 @@ package it.integry.ems.logistic.Export.service;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import it.integry.common.var.CommonConstants; import it.integry.common.var.CommonConstants;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.export.base.EntityExportResponse; import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.json.ResponseJSONObjectMapper; import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.logistic.Export.dto.MagAutoPickingRequestDTO; import it.integry.ems.logistic.Export.dto.MagAutoPickingRequestDTO;
@@ -87,9 +86,7 @@ public class ICONExportService {
String codjcom = UtilityHashMap.getValueIfExists(result, "cod_jcom"); String codjcom = UtilityHashMap.getValueIfExists(result, "cod_jcom");
// Acquisizione Connection DB ICON // Acquisizione Connection DB ICON
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(profileDBICON);
dsSync.initialize(profileDBICON);
multiDBTransactionManager.addConnection(profileDBICON, dsSync);
Connection conICON = multiDBTransactionManager.getDatabaseDataSource(profileDBICON).getConnection(); Connection conICON = multiDBTransactionManager.getDatabaseDataSource(profileDBICON).getConnection();
try { try {
@@ -228,9 +225,7 @@ public class ICONExportService {
// Acquisizione Connection DB ICON // Acquisizione Connection DB ICON
String profileDBICON = setupGest.getSetup("ICON", "SETUP", "PROFILE_DB_INTERSCAMBIO"); String profileDBICON = setupGest.getSetup("ICON", "SETUP", "PROFILE_DB_INTERSCAMBIO");
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(profileDBICON);
dsSync.initialize(profileDBICON);
multiDBTransactionManager.addConnection(profileDBICON, dsSync);
Connection conICON = multiDBTransactionManager.getDatabaseDataSource(profileDBICON).getConnection(); Connection conICON = multiDBTransactionManager.getDatabaseDataSource(profileDBICON).getConnection();
try { try {

View File

@@ -2,7 +2,6 @@ package it.integry.ems.logistic.Import.service;
import it.integry.common.var.CommonConstants; import it.integry.common.var.CommonConstants;
import it.integry.ems.Import.dto.AnomalieDTO; import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.logistic.controller.dto.ICONDTO; import it.integry.ems.logistic.controller.dto.ICONDTO;
import it.integry.ems.logistic.dto.sm2.FiltroDistribuzioneColloDTO; import it.integry.ems.logistic.dto.sm2.FiltroDistribuzioneColloDTO;
import it.integry.ems.logistic.service.DistribuzioneColliService; import it.integry.ems.logistic.service.DistribuzioneColliService;
@@ -69,9 +68,7 @@ public class ICONImportService {
String posizione = setupGest.getSetup("ICON", "SETUP", "POSIZIONE"); String posizione = setupGest.getSetup("ICON", "SETUP", "POSIZIONE");
// Acquisizione Connection DB ICON // Acquisizione Connection DB ICON
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(profileDBICON);
dsSync.initialize(profileDBICON);
multiDBTransactionManager.addConnection(profileDBICON, dsSync);
Connection conICON = multiDBTransactionManager.getDatabaseDataSource(profileDBICON).getConnection(); Connection conICON = multiDBTransactionManager.getDatabaseDataSource(profileDBICON).getConnection();
try { try {
@@ -217,9 +214,7 @@ public class ICONImportService {
String posizione = setupGest.getSetup("ICON", "SETUP", "POSIZIONE"); String posizione = setupGest.getSetup("ICON", "SETUP", "POSIZIONE");
// Acquisizione Connection DB ICON // Acquisizione Connection DB ICON
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(profileDBICON);
dsSync.initialize(profileDBICON);
multiDBTransactionManager.addConnection(profileDBICON, dsSync);
Connection conICON = multiDBTransactionManager.getDatabaseDataSource(profileDBICON).getConnection(); Connection conICON = multiDBTransactionManager.getDatabaseDataSource(profileDBICON).getConnection();
try { try {
@@ -484,9 +479,7 @@ public class ICONImportService {
try { try {
// Acquisizione Connection DB ICON // Acquisizione Connection DB ICON
DataSource dsSync = new DataSource(); multiDBTransactionManager.addConnection(profileDBICON);
dsSync.initialize(profileDBICON);
multiDBTransactionManager.addConnection(profileDBICON, dsSync);
Connection conICON = multiDBTransactionManager.getDatabaseDataSource(profileDBICON).getConnection(); Connection conICON = multiDBTransactionManager.getDatabaseDataSource(profileDBICON).getConnection();
// Acquisizione posizione magazzino automatizzato ICON // Acquisizione posizione magazzino automatizzato ICON

View File

@@ -66,9 +66,8 @@ public class ProductionOrderDataHandlerService {
} }
String finalHistoryProfileDb = historyProfileDb; String finalHistoryProfileDb = historyProfileDb;
Map<String, List<AvailableConnectionsModel>> databases = settingsModel.getAvailableConnections() Map<String, List<AvailableConnectionsModel>> databases = settingsModel.getAvailableConnections(true)
.stream() .stream()
.filter(AvailableConnectionsModel::getInternalDb)
.filter(x -> finalHistoryProfileDb != null && !finalHistoryProfileDb.equalsIgnoreCase(x.getProfileName())) .filter(x -> finalHistoryProfileDb != null && !finalHistoryProfileDb.equalsIgnoreCase(x.getProfileName()))
.collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName)); .collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName));

View File

@@ -12,7 +12,6 @@ import com.google.common.base.Joiner;
import com.google.firebase.messaging.FirebaseMessagingException; import com.google.firebase.messaging.FirebaseMessagingException;
import com.google.firebase.messaging.MessagingErrorCode; import com.google.firebase.messaging.MessagingErrorCode;
import it.integry.common.var.CommonConstants; import it.integry.common.var.CommonConstants;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.javabeans.RequestDataDTO; import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.json.ResponseJSONObjectMapper; import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.order.dto.UserGroupENUM; import it.integry.ems.order.dto.UserGroupENUM;
@@ -120,9 +119,9 @@ public class PvmService {
HashMap<String, Object> userData = systemService.login(requestDataDTO.getUsername(), requestDataDTO.getPassword(), "", profileDb); HashMap<String, Object> userData = systemService.login(requestDataDTO.getUsername(), requestDataDTO.getPassword(), "", profileDb);
profileDb = (String) userData.get("profile_db"); profileDb = (String) userData.get("profile_db");
DataSource ds = new DataSource(); multiDBTransactionManager.addConnection(profileDb);
ds.initialize(profileDb); Connection conn = multiDBTransactionManager.getDatabaseDataSource(profileDb).getConnection();
multiDBTransactionManager.addConnection(profileDb, ds);
String dataInizCons = new SimpleDateFormat(DATE_FORMAT_YMD).format(dataCons) + " 10:00:00"; String dataInizCons = new SimpleDateFormat(DATE_FORMAT_YMD).format(dataCons) + " 10:00:00";
String dataFineCons = new SimpleDateFormat(DATE_FORMAT_YMD).format(dataCons) + " 22:00:00"; String dataFineCons = new SimpleDateFormat(DATE_FORMAT_YMD).format(dataCons) + " 22:00:00";
@@ -164,7 +163,7 @@ public class PvmService {
" WHERE STB_GEST_SETUP_DEPO.citta_cons like '%" + citta + "%' " + " WHERE STB_GEST_SETUP_DEPO.citta_cons like '%" + citta + "%' " +
" GROUP BY num_range, dstart, dEnd, num_cons_max, CITTA_CONS "; " GROUP BY num_range, dstart, dEnd, num_cons_max, CITTA_CONS ";
PreparedStatement ps = ds.getConnection().prepareStatement(sql); PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery(); ResultSet rs = ps.executeQuery();
ResultSetMapper rsChkCons = new ResultSetMapper(); ResultSetMapper rsChkCons = new ResultSetMapper();

View File

@@ -787,6 +787,7 @@ public class WMSGenericService {
(!UtilityString.isNullOrEmpty(codMdep) ? " AND col.cod_mdep = " + UtilityDB.valueToString(codMdep) : "") + " " + (!UtilityString.isNullOrEmpty(codMdep) ? " AND col.cod_mdep = " + UtilityDB.valueToString(codMdep) : "") + " " +
" AND ISNULL(data_scad, GETDATE()) >= GETDATE() " + " AND ISNULL(data_scad, GETDATE()) >= GETDATE() " +
" ORDER BY CASE WHEN ISNULL(cod_jcom, " + UtilityDB.valueToString(commessaMagazzino) + ") = " + UtilityDB.valueToString(commessaMagazzino) + " THEN " + UtilityDB.valueToString(commessaMagazzino) + " END, " + " ORDER BY CASE WHEN ISNULL(cod_jcom, " + UtilityDB.valueToString(commessaMagazzino) + ") = " + UtilityDB.valueToString(commessaMagazzino) + " THEN " + UtilityDB.valueToString(commessaMagazzino) + " END, " +
" CASE WHEN ISNULL(col.posizione, '') = '' THEN '' END, " +
" ISNULL(cod_jcom, ''), " + " ISNULL(cod_jcom, ''), " +
" ISNULL(data_scad, GETDATE()), " + " ISNULL(data_scad, GETDATE()), " +
" ISNULL(mtb_depo_posizioni.priorita, 0)," + " ISNULL(mtb_depo_posizioni.priorita, 0)," +

View File

@@ -558,13 +558,10 @@ public class SystemService {
while (rs.next()) { while (rs.next()) {
String profileDb = rs.getString("user_name"); String profileDb = rs.getString("user_name");
DataSource dsDb; DataSource dsDb;
if (multiDBTransactionManager.containsDB(profileDb)) { if (!multiDBTransactionManager.containsDB(profileDb)) {
dsDb = multiDBTransactionManager.getDatabaseDataSource(profileDb).getDataSource(); multiDBTransactionManager.addConnection(profileDb);
} else {
dsDb = new DataSource();
dsDb.initialize(profileDb);
multiDBTransactionManager.addConnection(profileDb, dsDb);
} }
dsDb = multiDBTransactionManager.getDatabaseDataSource(profileDb).getDataSource();
dsDb.getConnection().prepareStatement(sqlUpdate).execute(); dsDb.getConnection().prepareStatement(sqlUpdate).execute();
} }
@@ -958,7 +955,7 @@ public class SystemService {
} }
File model = new File(destinationPath+"\\layout.docx"); File model = new File(destinationPath + "\\layout.docx");
WordprocessingMLPackage pkg = Docx4J.load(model); WordprocessingMLPackage pkg = Docx4J.load(model);
MainDocumentPart mainDoc = pkg.getMainDocumentPart(); MainDocumentPart mainDoc = pkg.getMainDocumentPart();
List<Object> content = mainDoc.getContent(); List<Object> content = mainDoc.getContent();