From ba7302637de0e662ed3b51d20ece3d1f08fc9511 Mon Sep 17 00:00:00 2001 From: IstitutoCentraleCatalogoUnicoBiblio Date: Fri, 27 Aug 2021 11:40:15 +0200 Subject: [PATCH] fusione titoli: inserito diagnostico in caso di legami attivi a titolo cancellati. --- .../dao/entity/tavole/Tb_titoloResult.java | 3 +- .../polo/oggetti/estensione/TitoloFonde.java | 6 +++- .../mapping/catalogazione/TB_TITOLO.hbm.xml | 2 +- .../vo/it/iccu/sbn/util/config/sbnweb.conf | 4 +-- .../it/iccu/sbn/util/mail/MailSenderJob.java | 29 +++++++++++-------- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/SbnMarcEJB/ejbModule/it/finsiel/sbn/polo/dao/entity/tavole/Tb_titoloResult.java b/SbnMarcEJB/ejbModule/it/finsiel/sbn/polo/dao/entity/tavole/Tb_titoloResult.java index 0a1b9d2..961bed3 100644 --- a/SbnMarcEJB/ejbModule/it/finsiel/sbn/polo/dao/entity/tavole/Tb_titoloResult.java +++ b/SbnMarcEJB/ejbModule/it/finsiel/sbn/polo/dao/entity/tavole/Tb_titoloResult.java @@ -96,13 +96,14 @@ public List selectEsistenzaId(HashMap opzioni) } } public Session abilitaRicercaLocalizzazioni(Session session){ +/* Filter filter = session.enableFilter("TB_TITOLO_LOCALIZZAZIONI"); //chiaamo il profiler per leggere il polo //TODO: INSERIRE LA CHIAMATA AL PROFILER sigla = validator.getCodicePolo(); String PoloBib = ResourceLoader.getPropertyString("SIGLA_INDICE"); filter.setParameter("XXXcd_polo",PoloBib); filter.setParameter("XXXcd_biblioteca"," FI"); - +*/ return session; } /** diff --git a/SbnMarcEJB/ejbModule/it/finsiel/sbn/polo/oggetti/estensione/TitoloFonde.java b/SbnMarcEJB/ejbModule/it/finsiel/sbn/polo/oggetti/estensione/TitoloFonde.java index 79747f5..ece231f 100644 --- a/SbnMarcEJB/ejbModule/it/finsiel/sbn/polo/oggetti/estensione/TitoloFonde.java +++ b/SbnMarcEJB/ejbModule/it/finsiel/sbn/polo/oggetti/estensione/TitoloFonde.java @@ -530,7 +530,11 @@ protected void fonde(Tb_titolo tit, String user, TimestampHash timeHash) ttDB.updateCancella(user, tt.getBID_BASE(), fonde.getIdPartenza()); //Devo settare i flag di allineamento del titolo con bid tt.getBid_base() - AllineamentoTitolo allineamentoTitolo = new AllineamentoTitolo(new Titolo().estraiTitoloPerID(tt.getBID_BASE())); + final Tb_titolo titoloBase = new Titolo().estraiTitoloPerID(tt.getBID_BASE()); + if (titoloBase == null) { + throw new EccezioneSbnDiagnostico(3233, "Esiste un legame attivo al titolo cancellato (" + tt.getBID_BASE() + ")"); + } + AllineamentoTitolo allineamentoTitolo = new AllineamentoTitolo(titoloBase); allineamentoTitolo.setTr_tit_tit(true); TitoloGestisceAllineamento titoloG = new TitoloGestisceAllineamento(); titoloG.aggiornaFlagAllineamento(allineamentoTitolo, user); diff --git a/SbnMarcHibernate/src/it/finsiel/sbn/polo/mapping/catalogazione/TB_TITOLO.hbm.xml b/SbnMarcHibernate/src/it/finsiel/sbn/polo/mapping/catalogazione/TB_TITOLO.hbm.xml index a3c7032..832b0bc 100644 --- a/SbnMarcHibernate/src/it/finsiel/sbn/polo/mapping/catalogazione/TB_TITOLO.hbm.xml +++ b/SbnMarcHibernate/src/it/finsiel/sbn/polo/mapping/catalogazione/TB_TITOLO.hbm.xml @@ -60,7 +60,7 @@ License Type: Evaluation - + diff --git a/SbnWebCommon/src/vo/it/iccu/sbn/util/config/sbnweb.conf b/SbnWebCommon/src/vo/it/iccu/sbn/util/config/sbnweb.conf index 46939a1..1ec528e 100644 --- a/SbnWebCommon/src/vo/it/iccu/sbn/util/config/sbnweb.conf +++ b/SbnWebCommon/src/vo/it/iccu/sbn/util/config/sbnweb.conf @@ -62,9 +62,9 @@ SBNMARC_INDICE_PROXY_USERNAME=\u0020 SBNMARC_INDICE_PROXY_PASSWORD=\u0020 #timeout connessione -HTTP_CONNECTION_TIMEOUT=15000 +HTTP_CONNECTION_TIMEOUT=5000 HTTP_REQUEST_TIMEOUT=900000 -HTTP_NUMERO_TENTATIVI=3 +HTTP_NUMERO_TENTATIVI=5 #timeout indice per allineamento (1 ora) SBNMARC_INDICE_ALLINEA_REQUEST_TIMEOUT=3600000 diff --git a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/util/mail/MailSenderJob.java b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/util/mail/MailSenderJob.java index 4e6a286..a5cb58b 100644 --- a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/util/mail/MailSenderJob.java +++ b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/util/mail/MailSenderJob.java @@ -16,31 +16,36 @@ public class MailSenderJob implements StatefulJob { + private static final long SEND_LOOP_WAIT = 250; private static Logger log = Logger.getLogger(MailSenderJob.class); public void execute(JobExecutionContext ctx) throws JobExecutionException { try { final Queue queue = MailUtil.sendQueue; int send = 0; - if (queue.isEmpty()) { + final int pending = queue.size(); + if (pending < 1) { // non ci sono mail in coda return; } final Session session = MailUtil.getSession(); final Transport transport = session.getTransport("smtp"); transport.connect(); - MailVO mail; - while ((mail = queue.poll()) != null) { - log.debug("inizio invio mail: " + mail.summary()); - try { - final MimeMessage msg = MailUtil.preparaMessage(mail, session); - msg.saveChanges(); - transport.sendMessage(msg, msg.getAllRecipients() ); - send++; - } catch (MessagingException e) { - log.error("errore invio mail: " + e.getMessage()); + for (int cnt = 0; cnt < pending; cnt++) { + final MailVO mail = queue.poll(); + if (mail != null) { + log.debug("inizio invio mail: " + mail.summary()); + try { + final MimeMessage msg = MailUtil.preparaMessage(mail, session); + msg.saveChanges(); + transport.sendMessage(msg, msg.getAllRecipients() ); + send++; + } catch (MessagingException e) { + log.error("errore invio mail: " + e.getMessage()); + } + log.debug("fine invio mail..."); + Thread.sleep(SEND_LOOP_WAIT); } - log.debug("fine invio mail..."); } if (send > 0) log.debug("mail inviate: " + send);