chiuse le connessione a db

This commit is contained in:
2025-04-17 15:12:13 +02:00
parent 7c83d3b061
commit 9d552c9980
3 changed files with 137 additions and 169 deletions

View File

@@ -8,6 +8,7 @@ import it.integry.ems.properties.EmsProperties;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.FileItem;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.UtilityString;
@@ -192,67 +193,66 @@ public class EmailWatcherListener extends TimerTask {
private void notifyErrorToEmail(String emailListen, String mittente, String messageObj, Date messageDate,
String emailDbg, String errorMessage) throws Exception {
if (!UtilityString.isNullOrEmpty(emailDbg)) {
DataSource ds = new DataSource();
ds.initialize(emailListenerInfo.getDatabase());
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(emailListenerInfo.getDatabase())) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
String nomeAzienda = "";
PreparedStatement ps = ds.getConnection().prepareStatement("select nome_ditta from azienda");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
nomeAzienda = rs.getString("nome_ditta");
String nomeAzienda = "";
PreparedStatement ps = mdb.prepareStatement("select nome_ditta from azienda");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
nomeAzienda = rs.getString("nome_ditta");
}
rs.close();
ps.close();
String htmlMailBody = "Gentile Amministratore,<br> si e' verificato il seguente errore <br><b>" + errorMessage + "</b><br> del servizio " + emailListenerInfo.getServiceRest() +
"<br> in ascolto sulla mail " + emailListen + " provocato dal messaggio (mittente " + mittente + ") con oggetto " + messageObj + " in data " + sdf.format(messageDate);
String mailSubject = nomeAzienda + " - ERRORE SU " + InetAddress.getLocalHost().getHostName() +
" Servizio " + emailListenerInfo.getServiceRest() + ";Database " + emailListenerInfo.getDatabase();
// AttachmentDTO dto = new AttachmentDTO();
// dto.setFileByte(files);
StringWriter writer = new StringWriter();
//jsonObjectMapper.writeValue(writer, dto);
String jsonBody = writer.toString();
String database = emailListenerInfo.getDatabase();
String auth = RestUtil.generateAuth(database, database, "POST", jsonBody,
"application/json", prop.getRootApi() + EmsRestConstants.PATH_SEND_MAIL);
final Client client = ClientBuilder.newClient();
WebTarget resource = client.target(prop.getEndPointWS()).path(
prop.getRootApi() + EmsRestConstants.PATH_SEND_MAIL)
.resolveTemplate("mode", "async");
resource = resource.queryParam(CommonConstants.PROFILE_DB, database)
.queryParam("from", "").queryParam("to", emailDbg)
.queryParam("subject", mailSubject).queryParam("msgText", htmlMailBody)
.queryParam("isHtml", true);
resource.request().header("Authorization", database + ":" + auth)
.async()
.post(Entity.json(jsonBody), new InvocationCallback<Response>() {
@Override
public void completed(Response response) {
String value = response.readEntity(String.class);
logger.info(response.getStatus() + " - " + value);
response.close();
client.close();
}
@Override
public void failed(Throwable throwable) {
throwable.printStackTrace();
logger.error(throwable);
client.close();
}
});
}
rs.close();
ps.close();
ds.forceClose();
String htmlMailBody = "Gentile Amministratore,<br> si e' verificato il seguente errore <br><b>" + errorMessage + "</b><br> del servizio " + emailListenerInfo.getServiceRest() +
"<br> in ascolto sulla mail " + emailListen + " provocato dal messaggio (mittente " + mittente + ") con oggetto " + messageObj + " in data " + sdf.format(messageDate);
String mailSubject = nomeAzienda + " - ERRORE SU " + InetAddress.getLocalHost().getHostName() +
" Servizio " + emailListenerInfo.getServiceRest() + ";Database " + emailListenerInfo.getDatabase();
// AttachmentDTO dto = new AttachmentDTO();
// dto.setFileByte(files);
StringWriter writer = new StringWriter();
//jsonObjectMapper.writeValue(writer, dto);
String jsonBody = writer.toString();
String database = emailListenerInfo.getDatabase();
String auth = RestUtil.generateAuth(database, database, "POST", jsonBody,
"application/json", prop.getRootApi() + EmsRestConstants.PATH_SEND_MAIL);
final Client client = ClientBuilder.newClient();
WebTarget resource = client.target(prop.getEndPointWS()).path(
prop.getRootApi() + EmsRestConstants.PATH_SEND_MAIL)
.resolveTemplate("mode", "async");
resource = resource.queryParam(CommonConstants.PROFILE_DB, database)
.queryParam("from", "").queryParam("to", emailDbg)
.queryParam("subject", mailSubject).queryParam("msgText", htmlMailBody)
.queryParam("isHtml", true);
resource.request().header("Authorization", database + ":" + auth)
.async()
.post(Entity.json(jsonBody), new InvocationCallback<Response>() {
@Override
public void completed(Response response) {
String value = response.readEntity(String.class);
logger.info(response.getStatus() + " - " + value);
response.close();
client.close();
}
@Override
public void failed(Throwable throwable) {
throwable.printStackTrace();
logger.error(throwable);
client.close();
}
});
}
}

View File

@@ -524,35 +524,6 @@ public class OrdiniAcquistoExportServices {
}
public EntityExportResponse exportOrdiniVendita(String type, String format) throws Exception {
Connection connection = multiDBTransactionManager.getPrimaryConnection();
DataSource dsSlim2k = new DataSource();
Map<String, String> setup = setupGest.getImportSetupSection(connection, type, format);
EntityExportResponse<List<File>> entityExportResponse = new EntityExportResponse<List<File>>();
String profileSlim2k = setup.get("PROFILE");
if (UtilityString.isNullOrEmpty(profileSlim2k)) {
throw new Exception("Profile non configurato per la procedura di importazione liste di scarico SLIM2K");
}
try {
dsSlim2k.initialize(profileSlim2k);
String listaSingoloOrdine = setup.get("LISTA_SINGOLO_ORDINE");
} catch (Exception e) {
throw e;
} finally {
if (!dsSlim2k.isClosed()) {
dsSlim2k.forceClose();
}
}
return entityExportResponse;
}
public EntityExportResponse exportOrdiniSlim2K(String type, String format) throws Exception {
EntityExportResponse<List<File>> entityExportResponse = new EntityExportResponse<List<File>>();

View File

@@ -92,94 +92,91 @@ public class ProductServices {
public List<MtbAart> exportArtDialogo(String whereCond) throws Exception {
//PROCEDURA DI IMPORTAZIONE ARTICOLI FORMAT - CARELLI
String query;
FileItem fileItem;
DataSource dsArticoli = new DataSource();
HashMap<String, String> setup = setupGest.getSetupSection(multiDBTransactionManager.getPrimaryConnection(), "w_marti_rc", "DIALOGO");
String profileDbArt = setup.get("PROFILE_DB");
dsArticoli.initialize(profileDbArt);
try(MultiDBTransactionManager mdb = new MultiDBTransactionManager(profileDbArt)) {
String queryArticoli =
"SELECT mtb_aart.cod_mart " +
" FROM mtb_aart LEFT OUTER JOIN mtb_lisa ON mtb_aart.cod_mart = mtb_lisa.cod_mart " +
"LEFT OUTER JOIN mvw_barcode ON mtb_aart.cod_mart = mvw_barcode.cod_mart " +
" WHERE mtb_aart.cod_mart NOT IN (SELECT cod_mart FROM " + multiDBTransactionManager.getPrimaryDatasource().getDbName() + ".dbo.mtb_aart)";
queryArticoli = UtilityDB.addwhereCond(queryArticoli, whereCond, true);
String queryArticoli =
"SELECT mtb_aart.cod_mart " +
" FROM mtb_aart LEFT OUTER JOIN mtb_lisa ON mtb_aart.cod_mart = mtb_lisa.cod_mart " +
"LEFT OUTER JOIN mvw_barcode ON mtb_aart.cod_mart = mvw_barcode.cod_mart " +
" WHERE mtb_aart.cod_mart NOT IN (SELECT cod_mart FROM " + multiDBTransactionManager.getPrimaryDatasource().getDbName() + ".dbo.mtb_aart)";
queryArticoli = UtilityDB.addwhereCond(queryArticoli, whereCond, true);
String sql = setup.get("QUERY");
sql = UtilityDB.addwhereCond(sql, "mtb_aart.cod_mart IN (" + queryArticoli + ") ", false);
String sql = setup.get("QUERY");
sql = UtilityDB.addwhereCond(sql, "mtb_aart.cod_mart IN (" + queryArticoli + ") ", false);
ResultSetMapper rsArt = new ResultSetMapper();
List<MtbAart> articoli = rsArt.mapQuerySetToList(dsArticoli.getConnection(), sql, MtbAart.class, OperationType.SELECT_OBJECT);
ResultSetMapper rsArt = new ResultSetMapper();
List<MtbAart> articoli = rsArt.mapQuerySetToList(mdb.getPrimaryConnection(), sql, MtbAart.class, OperationType.SELECT_OBJECT);
if (articoli == null || articoli.isEmpty()) {
throw new Exception("Nessun articolo trovato");
}
sql =
"SELECT mtb_aart_bar_code.cod_mart, " +
" cod_barre, " +
" qta_cnf " +
" FROM mtb_aart_bar_code " +
"WHERE mtb_aart_bar_code.cod_mart IN (" + queryArticoli + ") ";
ResultSetMapper rsBarcode = new ResultSetMapper();
List<MtbAartBarCode> barcode = rsBarcode.mapQuerySetToList(dsArticoli.getConnection(), sql, MtbAartBarCode.class, OperationType.SELECT_OBJECT);
sql =
"SELECT mtb_lisa.cod_mart, " +
" cod_alis, " +
" cod_art_for, " +
" unt_mis_acq, " +
" flag_attivo " +
" FROM mtb_lisa " +
" WHERE mtb_lisa.cod_mart IN (" + queryArticoli + ") ";
List<MtbLisa> listini = rsBarcode.mapQuerySetToList(dsArticoli.getConnection(), sql, MtbLisa.class, OperationType.SELECT_OBJECT);
sql = "SELECT where_cond_sql FROM stb_subscription WHERE user_name = " + UtilityDB.valueToString(multiDBTransactionManager.getPrimaryDatasource().getDbName());
String whereCondSync = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(dsArticoli.getConnection(), sql);
if (!UtilityString.isNullOrEmpty(whereCondSync) && !listini.isEmpty()) {
List<MtbLisa> myObjs = new ArrayList<>();
myObjs.addAll(listini);
String selectSql = "SELECT * FROM " + listini.get(0).getClass().getCanonicalName() + " WHERE " + whereCondSync;
// Create a new Query.
Query q = new Query();
q.parse(selectSql);
QueryResults qr = q.execute(myObjs);
List<?> res = qr.getResults();
if (res != null && res.size() >= 0) {
listini = (List<MtbLisa>) res;
if (articoli == null || articoli.isEmpty()) {
throw new Exception("Nessun articolo trovato");
}
}
for (MtbAart art : articoli) {
art.setOnlyPkMaster(false);
sql =
"SELECT mtb_aart_bar_code.cod_mart, " +
" cod_barre, " +
" qta_cnf " +
" FROM mtb_aart_bar_code " +
"WHERE mtb_aart_bar_code.cod_mart IN (" + queryArticoli + ") ";
List<MtbAartBarCode> mtbAartBarCode = Stream.of(barcode).filter(x -> x.getCodMart().equalsIgnoreCase(art.getCodMart())).toList();
if (mtbAartBarCode != null) {
art.setMtbAartBarCode(mtbAartBarCode);
}
if (!listini.isEmpty()) {
List<MtbLisa> mtbLisa = Stream.of(listini).filter(x -> x.getCodMart().equalsIgnoreCase(art.getCodMart())).toList();
if (mtbLisa != null) {
art.setMtbLisa(mtbLisa);
ResultSetMapper rsBarcode = new ResultSetMapper();
List<MtbAartBarCode> barcode = rsBarcode.mapQuerySetToList(mdb.getPrimaryConnection(), sql, MtbAartBarCode.class, OperationType.SELECT_OBJECT);
sql =
"SELECT mtb_lisa.cod_mart, " +
" cod_alis, " +
" cod_art_for, " +
" unt_mis_acq, " +
" flag_attivo " +
" FROM mtb_lisa " +
" WHERE mtb_lisa.cod_mart IN (" + queryArticoli + ") ";
List<MtbLisa> listini = rsBarcode.mapQuerySetToList(mdb.getPrimaryConnection(), sql, MtbLisa.class, OperationType.SELECT_OBJECT);
sql = "SELECT where_cond_sql FROM stb_subscription WHERE user_name = " + UtilityDB.valueToString(multiDBTransactionManager.getPrimaryDatasource().getDbName());
String whereCondSync = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(mdb.getPrimaryConnection(), sql);
if (!UtilityString.isNullOrEmpty(whereCondSync) && !listini.isEmpty()) {
List<MtbLisa> myObjs = new ArrayList<>();
myObjs.addAll(listini);
String selectSql = "SELECT * FROM " + listini.get(0).getClass().getCanonicalName() + " WHERE " + whereCondSync;
// Create a new Query.
Query q = new Query();
q.parse(selectSql);
QueryResults qr = q.execute(myObjs);
List<?> res = qr.getResults();
if (res != null && res.size() >= 0) {
listini = (List<MtbLisa>) res;
}
}
}
for (MtbAart art : articoli) {
art.setOnlyPkMaster(false);
return articoli;
List<MtbAartBarCode> mtbAartBarCode = Stream.of(barcode).filter(x -> x.getCodMart().equalsIgnoreCase(art.getCodMart())).toList();
if (mtbAartBarCode != null) {
art.setMtbAartBarCode(mtbAartBarCode);
}
if (!listini.isEmpty()) {
List<MtbLisa> mtbLisa = Stream.of(listini).filter(x -> x.getCodMart().equalsIgnoreCase(art.getCodMart())).toList();
if (mtbLisa != null) {
art.setMtbLisa(mtbLisa);
}
}
}
return articoli;
}
}
private String exportArtDialogoExclude(String[] elencoCampi, String nomeCampo) {
@@ -784,17 +781,17 @@ public class ProductServices {
public void popolaTabellaRiassegnazione() throws Exception {
String profileDB = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "w_mriassegna_costo_dlg", "TABELLA COSTI", "PROFILE_DB");
Connection conn = null;
if (!UtilityString.isNullOrEmpty(profileDB) && !profileDB.equalsIgnoreCase(multiDBTransactionManager.getPrimaryDatasource().getProfile())) {
DataSource ds = new DataSource();
ds.initialize(profileDB);
conn = ds.getConnection();
} else {
conn = multiDBTransactionManager.getPrimaryConnection();
try(MultiDBTransactionManager mdb = new MultiDBTransactionManager(profileDB)) {
Connection conn = null;
if (!UtilityString.isNullOrEmpty(profileDB) && !profileDB.equalsIgnoreCase(multiDBTransactionManager.getPrimaryDatasource().getProfile())) {
conn = mdb.getPrimaryConnection();
} else {
conn = multiDBTransactionManager.getPrimaryConnection();
}
CallableStatement cs = conn.prepareCall("{call popolaTabelleCosti}");
cs.execute();
cs.close();
}
CallableStatement cs = conn.prepareCall("{call popolaTabelleCosti}");
cs.execute();
cs.close();
}
public void aggCostiDaTabella(Date dataIniz, Date dataFine, String whereCond) throws Exception {