diff --git a/gnpapp/properties/delta_RU_XXX_resources.properties b/gnpapp/properties/delta_RU_XXX_resources.properties
index bf26fd70..2a960dd3 100644
--- a/gnpapp/properties/delta_RU_XXX_resources.properties
+++ b/gnpapp/properties/delta_RU_XXX_resources.properties
@@ -1,13 +1,23 @@
-########################### INVIO FILE A DWHE ###########################
+########################### INIZIO DWHE2E_REPOSALDINETTI ###########################
#header edl Donor
+#PATH IN DWHE2E_REPOSALDINETTI
PATH_FILE_DWHE2E_REPOSALDINETTI_CON_IN=/gnpapp/batch/ftpin/dwhe2e_saldinetti_con/
PATH_FILE_DWHE2E_REPOSALDINETTI_BUS_IN=/gnpapp/batch/ftpin/dwhe2e_saldinetti_bus/
DWHE2E_REPOSALDINETTI_CON_BACKUP_IN=/gnpapp/batch/backup_in/dwhe2e_saldinetti_con/
DWHE2E_REPOSALDINETTI_BUS_BACKUP_IN=/gnpapp/batch/backup_in/dwhe2e_saldinetti_bus/
-#estensione dei file da inviare a CRMB
+
+#FILE OUT DWHE2E_REPOSALDINETTI
+DWHE2E_REPOSALDINETTI_NOME_FILE_CON_OUT =DBCFX_DWHE2E_USCITE_CON_
+DWHE2E_REPOSALDINETTI_NOME_FILE_BUS_OUT =DBCFX_DWHE2E_USCITE_BUS_
DWHE2E_REPOSALDINETTI_FILENAME_EXT=.csv
-#Prefisso dei file per CRMB
-DWHE2E_REPOSALDINETTI_FULL=01/01/2025
-DWHE2E_REPOSALDINETTI_DELTA=15
+DWHE2E_REPOSALDINETTI_DATA_FILENAME="yyyyMMdd"
+
+#PATH OUT DWHE2E_REPOSALDINETTI
+PATH_FILE_DWHE2E_REPOSALDINETTI_CON_OUT =/gnpapp/batch/ftpout/dwhe2e_saldinetti_con/
+PATH_FILE_DWHE2E_REPOSALDINETTI_BUS_OUT =/gnpapp/batch/ftpout/dwhe2e_saldinetti_bus/
+
+DWHE2E_REPOSALDINETTI_OUT_HEADER=E2E_DATA_CESSAZIONE;E2E_SERVIZIO_ACCESSO;E2E_DIMENSIONE_1;E2E_DIMENSIONE_2;E2E_DIMENSIONE_3;E2E_DIMENSIONE_4;E2E_DIMENSIONE_5;DBCFX_DIM_CODICE_OLO;DBCFX_DIM_TIPO_USCITA;DBCFX_DIM_DELIBERA;DBCFX_NRO_USCITE
+
+########################### FINE DWHE2E_REPOSALDINETTI ###########################
\ No newline at end of file
diff --git a/gnpdev/SFTPDaemon/properties/DELTA_RU_XXX_sfdp.properties b/gnpdev/SFTPDaemon/properties/DELTA_RU_XXX_sfdp.properties
index 84729262..e21fad81 100644
--- a/gnpdev/SFTPDaemon/properties/DELTA_RU_XXX_sfdp.properties
+++ b/gnpdev/SFTPDaemon/properties/DELTA_RU_XXX_sfdp.properties
@@ -1,4 +1,4 @@
-######################## INIZIO CONFIGURAZIONE DWHE2E_REPOSALDINETTI_CO ###################
+######################## GET INIZIO CONFIGURAZIONE DWHE2E_REPOSALDINETTI_CO ###################
GET.LOCAL.PATH.DWHE2E_REPOSALDINETTI_CO=/gnpapp/batch/ftpin/dwhe2e_saldinetti_con
GET.IDENTITY.DWHE2E_REPOSALDINETTI_CO=/home/bea/.ssh/id_rsa
GET.PASSPHRASE.DWHE2E_REPOSALDINETTI_CO=
@@ -18,9 +18,9 @@ GET.UNCOMPRESS.DWHE2E_REPOSALDINETTI_CO=NO
GET.CONNECT.TIMEOUT.DWHE2E_REPOSALDINETTI_CO=30000
# FILE PER GESTIONE STORICO FILE LAVORATI (in /gnpapp/
GET.FILENAME.LAVORATI.DWHE2E_REPOSALDINETTI_CO=/gnpapp/properties/DWHE2E_SALDINETTI_STORICO_CO.txt
-######################## FINE CONFIGURAZIONE DWHE2E_REPOSALDINETTI_CO ###################
+######################## GET FINE CONFIGURAZIONE DWHE2E_REPOSALDINETTI_CO ###################
-######################## INIZIO CONFIGURAZIONE DWHE2E_REPOSALDINETTI_BU ###################
+######################## GET INIZIO CONFIGURAZIONE DWHE2E_REPOSALDINETTI_BU ###################
GET.LOCAL.PATH.DWHE2E_REPOSALDINETTI_BU=/gnpapp/batch/ftpin/dwhe2e_saldinetti_bus
GET.IDENTITY.DWHE2E_REPOSALDINETTI_BU=/home/bea/.ssh/id_rsa
GET.PASSPHRASE.DWHE2E_REPOSALDINETTI_BU=
@@ -40,4 +40,43 @@ GET.UNCOMPRESS.DWHE2E_REPOSALDINETTI_BU=NO
GET.CONNECT.TIMEOUT.DWHE2E_REPOSALDINETTI_BU=30000
# FILE PER GESTIONE STORICO FILE LAVORATI (in /gnpapp/
GET.FILENAME.LAVORATI.DWHE2E_REPOSALDINETTI_BU=/gnpapp/properties/DWHE2E_SALDINETTI_STORICO_BU.txt
-######################## FINE CONFIGURAZIONE DWHE2E_REPOSALDINETTI_BU ###################
+######################## GET FINE CONFIGURAZIONE DWHE2E_REPOSALDINETTI_BU ###################
+
+######################## PUT INIZIO CONFIGURAZIONE DWHE2E_REPOSALDINETTI_CO ###################
+PUT.LOCAL.PATH.DWHE2E_REPOSALDINETTI_CO=/gnpapp/batch/ftpout/dwhe2e_saldinetti_con
+PUT.LOCAL.BACKUP.PATH.DWHE2E_REPOSALDINETTI_CO=/gnpapp/batch/backup_out/dwhe2e_saldinetti_con
+# Estensione files da inviare verso DWHE2E (POSSONO ESSERE PIU' DI UNA DELIMITATE DA ";")
+PUT.EXTENSION.DWHE2E_REPOSALDINETTI_CO=.csv
+PUT.IDENTITY.DWHE2E_REPOSALDINETTI_CO=/bea/.ssh/id_rsa
+PUT.PASSPHRASE.DWHE2E_REPOSALDINETTI_CO=bea
+PUT.USERNAME.DWHE2E_REPOSALDINETTI_CO=bea
+PUT.HOST.DWHE2E_REPOSALDINETTI_CO=10.192.65.18
+PUT.PORT.DWHE2E_REPOSALDINETTI_CO=22
+PUT.KNOWN_HOSTS.DWHE2E_REPOSALDINETTI_CO=/bea/.ssh/known_hosts
+PUT.REMOTE_PATH.DWHE2E_REPOSALDINETTI_CO=/home/bea/temp/dwhe2e
+PUT.RENAMECTR.DWHE2E_REPOSALDINETTI_CO=NO
+PUT.RENAMECTR.SUFFIX.DWHE2E_REPOSALDINETTI_CO=
+PUT_SENDCTR.DWHE2E_REPOSALDINETTI_CO=YES
+# TIMEOUT IN MILLISECONDI (10000 = 10sec, 1800000 = 30min)
+PUT.CONNECT.TIMEOUT.DWHE2E_REPOSALDINETTI_CO=30000
+######################## PUT FINE CONFIGURAZIONE DWHE2E_REPOSALDINETTI_BU ###################
+
+######################## PUT INIZIO CONFIGURAZIONE DWHE2E_REPOSALDINETTI_BU ###################
+PUT.LOCAL.PATH.DWHE2E_REPOSALDINETTI_BU=/gnpapp/batch/ftpout/dwhe2e_saldinetti_bus
+PUT.LOCAL.BACKUP.PATH.DWHE2E_REPOSALDINETTI_BU=/gnpapp/batch/backup_out/dwhe2e_saldinetti_bus
+# Estensione files da inviare verso DWHE2E (POSSONO ESSERE PIU' DI UNA DELIMITATE DA ";")
+PUT.EXTENSION.DWHE2E_REPOSALDINETTI_BU=.csv
+PUT.IDENTITY.DWHE2E_REPOSALDINETTI_BU=/bea/.ssh/id_rsa
+PUT.PASSPHRASE.DWHE2E_REPOSALDINETTI_BU=bea
+PUT.USERNAME.DWHE2E_REPOSALDINETTI_BU=bea
+PUT.HOST.DWHE2E_REPOSALDINETTI_BU=10.192.65.18
+PUT.PORT.DWHE2E_REPOSALDINETTI_BU=22
+PUT.KNOWN_HOSTS.DWHE2E_REPOSALDINETTI_BU=/bea/.ssh/known_hosts
+PUT.REMOTE_PATH.DWHE2E_REPOSALDINETTI_BU=/home/bea/temp/dwhe2e
+PUT.RENAMECTR.DWHE2E_REPOSALDINETTI_BU=NO
+PUT.RENAMECTR.SUFFIX.DWHE2E_REPOSALDINETTI_BU=
+PUT_SENDCTR.DWHE2E_REPOSALDINETTI_BU=YES
+# TIMEOUT IN MILLISECONDI (10000 = 10sec, 1800000 = 30min)
+PUT.CONNECT.TIMEOUT.DWHE2E_REPOSALDINETTI_BU=30000
+######################## PUT FINE CONFIGURAZIONE DWHE2E_REPOSALDINETTI_BU ###################
+
diff --git a/gnpdev/SFTPDaemon/src/it/alescar/sftp/daemon/put/SFTPPutDaemon.java b/gnpdev/SFTPDaemon/src/it/alescar/sftp/daemon/put/SFTPPutDaemon.java
index d81a5944..fd699709 100644
--- a/gnpdev/SFTPDaemon/src/it/alescar/sftp/daemon/put/SFTPPutDaemon.java
+++ b/gnpdev/SFTPDaemon/src/it/alescar/sftp/daemon/put/SFTPPutDaemon.java
@@ -42,7 +42,9 @@ public class SFTPPutDaemon {
&& !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.RAES)
&& !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.MFENP) //ADD FENP RU_279
&& !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.PDC) //ADD PDC RU_352
- && !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.CRMB)){ //ADD CRMB RU_XXX
+ && !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.CRMB) //ADD CRMB RU_XXX
+ && !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.DWHE2E_REPOSALDINETTI_CO) //ADD DHWE2E_REPOSALDINETTI
+ && !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.DWHE2E_REPOSALDINETTI_BU)){
log.fatal("Sistema remoto sconosciuto: "+idSistemaRemoto);
}
initConfig(idSistemaRemoto);
diff --git a/gnpdev/build/hibernate/hibernateOTHER.reveng.xml b/gnpdev/build/hibernate/hibernateOTHER.reveng.xml
index d62a9b81..c951af54 100644
--- a/gnpdev/build/hibernate/hibernateOTHER.reveng.xml
+++ b/gnpdev/build/hibernate/hibernateOTHER.reveng.xml
@@ -15,12 +15,14 @@
**********************************************************************
-->
-
+
+
diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldiNettiOut.hbm.xml b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldiNettiOut.hbm.xml
new file mode 100644
index 00000000..f7caca6e
--- /dev/null
+++ b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldiNettiOut.hbm.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+ SEQ_DWE2EREPORT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiInDAO.java b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiInDAO.java
index ac879287..7cd4620a 100644
--- a/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiInDAO.java
+++ b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiInDAO.java
@@ -4,6 +4,8 @@ package it.valueteam.gnp.dao.db.hb;
import java.util.List;
+
+import it.valueteam.gnpgo.core.object.GnpgoSemaforoSummary;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
@@ -24,7 +26,7 @@ public class GnpDwhe2eSaldinettiInDAO extends BaseHibernateDAO{
protected static final Log log = LogFactory.getLog(GnpDwhe2eSaldinettiInDAO.class);
-
+
public void save(GnpDwhe2eSaldinettiIn transientInstance) {
log.debug("saving GnpDwhe2eSaldinettiIn instance");
try {
@@ -181,6 +183,57 @@ public class GnpDwhe2eSaldinettiInDAO extends BaseHibernateDAO{
finally {
closeSession();
}
- }
+ }
+
+ /**
+ *
+ * */
+ public List groupBy(String nomeFileParam) {
+
+ String query = "select new it.valueteam.gnp.dao.db.hb.GnpDwhe2eSaldinettiOut(" +
+ "saldinettiin.nomeFile, " +
+ "saldinettiin.crm, " +
+ "saldinettiin.e2eDataCessazione, " +
+ "saldinettiin.e2eServizioAccesso, " +
+ "saldinettiin.e2eDimensione1, " +
+ "saldinettiin.e2eDimensione2, " +
+ "saldinettiin.e2eDimensione3, " +
+ "saldinettiin.e2eDimensione4, " +
+ "saldinettiin.e2eDimensione5, " +
+ "saldinettiin.dbcfxDimCodiceOlo, " +
+ "saldinettiin.dbcfxDimTipoUscita, " +
+ "saldinettiin.dbcfxDimDelibera, " +
+ "count(*) as dbcfxNroUscite" +
+ ") " +
+ "from GnpDwhe2eSaldinettiIn saldinettiin " +
+ "where saldinettiin.nomeFile = :nomeFileParam " +
+ "group by " +
+ "saldinettiin.nomeFile, " +
+ "saldinettiin.crm, " +
+ "saldinettiin.e2eDataCessazione, " +
+ "saldinettiin.e2eServizioAccesso, " +
+ "saldinettiin.e2eDimensione1, " +
+ "saldinettiin.e2eDimensione2, " +
+ "saldinettiin.e2eDimensione3, " +
+ "saldinettiin.e2eDimensione4, " +
+ "saldinettiin.e2eDimensione5, " +
+ "saldinettiin.dbcfxDimCodiceOlo, " +
+ "saldinettiin.dbcfxDimTipoUscita, " +
+ "saldinettiin.dbcfxDimDelibera";
+
+ try{
+ Query hqlQuery = getSession().createQuery(query)
+ .setParameter("nomeFileParam", nomeFileParam);
+ return hqlQuery.list();
+ } catch (RuntimeException re)
+ {
+ log.error("find by custom query failed", re);
+ throw re;
+ } finally
+ {
+ closeSession();
+ }
+
+ }
}
diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiOut.java b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiOut.java
new file mode 100644
index 00000000..6d3aa859
--- /dev/null
+++ b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiOut.java
@@ -0,0 +1,179 @@
+package it.valueteam.gnp.dao.db.hb;
+// Generated 14-gen-2025 15.52.30 by Hibernate Tools 3.2.0.CR1
+
+
+import java.util.Date;
+
+/**
+ * GnpDwhe2eSaldinettiOut generated by hbm2java
+ */
+public class GnpDwhe2eSaldinettiOut implements java.io.Serializable {
+
+
+ private Long uniqueId;
+ private String nomeFile;
+ private String flagElaborato;
+ private String crm;
+ private Date e2eDataCessazione;
+ private String e2eServizioAccesso;
+ private String e2eDimensione1;
+ private String e2eDimensione2;
+ private String e2eDimensione3;
+ private String e2eDimensione4;
+ private String e2eDimensione5;
+ private String dbcfxDimCodiceOlo;
+ private String dbcfxDimTipoUscita;
+ private String dbcfxDimDelibera;
+ private Long dbcfxNroUscite;
+
+ public GnpDwhe2eSaldinettiOut() {
+ }
+
+
+ public GnpDwhe2eSaldinettiOut(String nomeFile, String flagElaborato, String crm, Date e2eDataCessazione, String e2eServizioAccesso, String e2eDimensione1, String e2eDimensione2, String e2eDimensione3, String e2eDimensione4, String e2eDimensione5, String dbcfxDimCodiceOlo, String dbcfxDimTipoUscita, String dbcfxDimDelibera, Long dbcfxNroUscite) {
+ this.nomeFile = nomeFile;
+ this.flagElaborato = flagElaborato;
+ this.crm = crm;
+ this.e2eDataCessazione = e2eDataCessazione;
+ this.e2eServizioAccesso = e2eServizioAccesso;
+ this.e2eDimensione1 = e2eDimensione1;
+ this.e2eDimensione2 = e2eDimensione2;
+ this.e2eDimensione3 = e2eDimensione3;
+ this.e2eDimensione4 = e2eDimensione4;
+ this.e2eDimensione5 = e2eDimensione5;
+ this.dbcfxDimCodiceOlo = dbcfxDimCodiceOlo;
+ this.dbcfxDimTipoUscita = dbcfxDimTipoUscita;
+ this.dbcfxDimDelibera = dbcfxDimDelibera;
+ this.dbcfxNroUscite = dbcfxNroUscite;
+ }
+
+ //quando effettuo la group dalla IN setto il default flagElaborato ad "N"
+ public GnpDwhe2eSaldinettiOut(String nomeFile, String crm, Date e2eDataCessazione, String e2eServizioAccesso, String e2eDimensione1, String e2eDimensione2, String e2eDimensione3, String e2eDimensione4, String e2eDimensione5, String dbcfxDimCodiceOlo, String dbcfxDimTipoUscita, String dbcfxDimDelibera, Long dbcfxNroUscite) {
+ this.nomeFile = nomeFile;
+ this.crm = crm;
+ this.e2eDataCessazione = e2eDataCessazione;
+ this.e2eServizioAccesso = e2eServizioAccesso;
+ this.e2eDimensione1 = e2eDimensione1;
+ this.e2eDimensione2 = e2eDimensione2;
+ this.e2eDimensione3 = e2eDimensione3;
+ this.e2eDimensione4 = e2eDimensione4;
+ this.e2eDimensione5 = e2eDimensione5;
+ this.dbcfxDimCodiceOlo = dbcfxDimCodiceOlo;
+ this.dbcfxDimTipoUscita = dbcfxDimTipoUscita;
+ this.dbcfxDimDelibera = dbcfxDimDelibera;
+ this.dbcfxNroUscite = dbcfxNroUscite;
+ this.flagElaborato = "N";
+ }
+
+ public Long getUniqueId() {
+ return this.uniqueId;
+ }
+
+ public void setUniqueId(Long uniqueId) {
+ this.uniqueId = uniqueId;
+ }
+ public String getNomeFile() {
+ return this.nomeFile;
+ }
+
+ public void setNomeFile(String nomeFile) {
+ this.nomeFile = nomeFile;
+ }
+ public String getFlagElaborato() {
+ return this.flagElaborato;
+ }
+
+ public void setFlagElaborato(String flagElaborato) {
+ this.flagElaborato = flagElaborato;
+ }
+ public String getCrm() {
+ return this.crm;
+ }
+
+ public void setCrm(String crm) {
+ this.crm = crm;
+ }
+ public Date getE2eDataCessazione() {
+ return this.e2eDataCessazione;
+ }
+
+ public void setE2eDataCessazione(Date e2eDataCessazione) {
+ this.e2eDataCessazione = e2eDataCessazione;
+ }
+ public String getE2eServizioAccesso() {
+ return this.e2eServizioAccesso;
+ }
+
+ public void setE2eServizioAccesso(String e2eServizioAccesso) {
+ this.e2eServizioAccesso = e2eServizioAccesso;
+ }
+ public String getE2eDimensione1() {
+ return this.e2eDimensione1;
+ }
+
+ public void setE2eDimensione1(String e2eDimensione1) {
+ this.e2eDimensione1 = e2eDimensione1;
+ }
+ public String getE2eDimensione2() {
+ return this.e2eDimensione2;
+ }
+
+ public void setE2eDimensione2(String e2eDimensione2) {
+ this.e2eDimensione2 = e2eDimensione2;
+ }
+ public String getE2eDimensione3() {
+ return this.e2eDimensione3;
+ }
+
+ public void setE2eDimensione3(String e2eDimensione3) {
+ this.e2eDimensione3 = e2eDimensione3;
+ }
+ public String getE2eDimensione4() {
+ return this.e2eDimensione4;
+ }
+
+ public void setE2eDimensione4(String e2eDimensione4) {
+ this.e2eDimensione4 = e2eDimensione4;
+ }
+ public String getE2eDimensione5() {
+ return this.e2eDimensione5;
+ }
+
+ public void setE2eDimensione5(String e2eDimensione5) {
+ this.e2eDimensione5 = e2eDimensione5;
+ }
+ public String getDbcfxDimCodiceOlo() {
+ return this.dbcfxDimCodiceOlo;
+ }
+
+ public void setDbcfxDimCodiceOlo(String dbcfxDimCodiceOlo) {
+ this.dbcfxDimCodiceOlo = dbcfxDimCodiceOlo;
+ }
+ public String getDbcfxDimTipoUscita() {
+ return this.dbcfxDimTipoUscita;
+ }
+
+ public void setDbcfxDimTipoUscita(String dbcfxDimTipoUscita) {
+ this.dbcfxDimTipoUscita = dbcfxDimTipoUscita;
+ }
+ public String getDbcfxDimDelibera() {
+ return this.dbcfxDimDelibera;
+ }
+
+ public void setDbcfxDimDelibera(String dbcfxDimDelibera) {
+ this.dbcfxDimDelibera = dbcfxDimDelibera;
+ }
+ public Long getDbcfxNroUscite() {
+ return this.dbcfxNroUscite;
+ }
+
+ public void setDbcfxNroUscite(Long dbcfxNroUscite) {
+ this.dbcfxNroUscite = dbcfxNroUscite;
+ }
+
+
+
+
+}
+
+
diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiOutDAO.java b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiOutDAO.java
new file mode 100644
index 00000000..97f6f1e5
--- /dev/null
+++ b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiOutDAO.java
@@ -0,0 +1,249 @@
+package it.valueteam.gnp.dao.db.hb;
+
+// Generated 14-gen-2025 15.53.35 by Hibernate Tools Customizzato per GNP da C.A. 3.2.0.CR1
+
+
+import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.hibernate.*;
+
+import static org.hibernate.criterion.Example.create;
+
+/**
+ * DAO object for domain model class GnpDwhe2eSaldinettiOut.
+ * @see .GnpDwhe2eSaldinettiOut
+ * @author C.A.
+ */
+import org.hibernate.criterion.Criterion;
+
+import java.util.*;
+
+
+public class GnpDwhe2eSaldinettiOutDAO extends BaseHibernateDAO{
+
+ protected static final Log log = LogFactory.getLog(GnpDwhe2eSaldinettiOutDAO.class);
+
+
+
+ private static final String QUERY_UPDATE_FLAG_LAVORATO = "UPDATE GNP_DWHE2E_SALDINETTI_OUT D SET D.FLAG_LAVORATO = :flagLavorato WHERE D.NOME_FILE = :nomeFile ";
+
+
+
+ public void save(GnpDwhe2eSaldinettiOut transientInstance) {
+ log.debug("saving GnpDwhe2eSaldinettiOut instance");
+ try {
+ getSession().save(transientInstance);
+ log.debug("save successful");
+ }
+ catch (RuntimeException re) {
+ log.error("save failed", re);
+ throw re;
+ }
+ }
+
+ public List findByProperty(String propertyName, Object value) {
+ log.debug("finding GnpDwhe2eSaldinettiOut instance with property: " + propertyName
+ + ", value: " + value);
+ try {
+ String queryString = "select model from GnpDwhe2eSaldinettiOut model where model."
+ + propertyName + "= ?";
+ Query queryObject = getSession().createQuery(queryString);
+ queryObject.setParameter(0, value);
+ return queryObject.list();
+ } catch (RuntimeException re) {
+ log.error("find by property name failed", re);
+ throw re;
+ }
+ finally {
+ closeSession();
+ }
+ }
+
+ public List findAll() {
+ log.debug("finding all GnpDwhe2eSaldinettiOut ");
+ try {
+ String queryString = " from GnpDwhe2eSaldinettiOut";
+ Query queryObject = getSession().createQuery(queryString);
+ return queryObject.list();
+ } catch (RuntimeException re) {
+ log.error("find all name failed", re);
+ throw re;
+ }finally {
+ closeSession();
+ }
+ }
+
+
+ public void attachDirty(GnpDwhe2eSaldinettiOut instance) {
+ log.debug("attaching dirty GnpDwhe2eSaldinettiOut instance");
+ try {
+ getSession().saveOrUpdate(instance);
+ log.debug("attach successful");
+ }
+ catch (RuntimeException re) {
+ log.error("attach failed", re);
+ throw re;
+ }
+ }
+
+ public void attachClean(GnpDwhe2eSaldinettiOut instance) {
+ log.debug("attaching clean GnpDwhe2eSaldinettiOut instance");
+ try {
+ getSession().lock(instance, LockMode.NONE);
+ log.debug("attach successful");
+ }
+ catch (RuntimeException re) {
+ log.error("attach failed", re);
+ throw re;
+ }
+ }
+
+ public void delete(GnpDwhe2eSaldinettiOut persistentInstance) {
+ log.debug("deleting GnpDwhe2eSaldinettiOut instance");
+ try {
+ getSession().delete(persistentInstance);
+ log.debug("delete successful");
+ }
+ catch (RuntimeException re) {
+ log.error("delete failed", re);
+ throw re;
+ }
+ }
+
+ public GnpDwhe2eSaldinettiOut merge(GnpDwhe2eSaldinettiOut detachedInstance) {
+ log.debug("merging GnpDwhe2eSaldinettiOut instance");
+ try {
+ GnpDwhe2eSaldinettiOut result = (GnpDwhe2eSaldinettiOut) getSession().merge(detachedInstance);
+ log.debug("merge successful");
+ flush();
+ return result;
+ }
+ catch (RuntimeException re) {
+ log.error("merge failed", re);
+ throw re;
+ }
+ }
+
+ public List findByCriteria(List criterion) {
+ log.debug("finding GnpDwhe2eSaldinettiOut instance by criteria");
+ try {
+ Criteria crit = getSession() .createCriteria("it.valueteam.gnp.dao.db.hb.GnpDwhe2eSaldinettiOut");
+ Iterator iter = criterion.iterator();
+ while (iter.hasNext()) {
+ crit.add((Criterion) iter.next());
+ }
+ List results = crit.list();
+ log.debug("find by criteria successful, result size: "
+ + results.size());
+ return results;
+ } catch (RuntimeException e) {
+ log.error("find by criteria failed", e);
+ throw e;
+ } finally {
+ closeSession();
+ }
+ }
+
+ public GnpDwhe2eSaldinettiOut findById( java.lang.Long id) {
+ log.debug("getting GnpDwhe2eSaldinettiOut instance with id: " + id);
+ try {
+ GnpDwhe2eSaldinettiOut instance = (GnpDwhe2eSaldinettiOut) getSession()
+ .get("it.valueteam.gnp.dao.db.hb.GnpDwhe2eSaldinettiOut", id);
+
+ if (instance==null) {
+ log.debug("get successful, no instance found");
+ }
+ else {
+ log.debug("get successful, instance found");
+ }
+ return instance;
+ }
+ catch (RuntimeException re) {
+ log.error("get failed", re);
+ throw re;
+ }
+ finally {
+ closeSession();
+ }
+ }
+
+ public List findByExample(GnpDwhe2eSaldinettiOut instance) {
+ log.debug("finding GnpDwhe2eSaldinettiOut instance by example");
+ try {
+ List results = (List) getSession()
+ .createCriteria("it.valueteam.gnp.dao.db.hb.GnpDwhe2eSaldinettiOut")
+
+ .add( create(instance) )
+ .list();
+ log.debug("find by example successful, result size: " + results.size());
+ return results;
+ }
+ catch (RuntimeException re) {
+ log.error("find by example failed", re);
+ throw re;
+ }
+ finally {
+ closeSession();
+ }
+ }
+
+ public boolean updateFlagElaborato(String nomeFile, String flagElaborato) {
+ try {
+ String sqlQuery = this.QUERY_UPDATE_FLAG_LAVORATO;
+ Query hqlQuery = getSession().createSQLQuery(sqlQuery).addEntity("D", GnpDwhe2eSaldinettiOut.class)
+ .setParameter("nomeFile", nomeFile)
+ .setParameter("flagElaborato",flagElaborato);
+
+ // Esegui l'update
+ int rowsUpdated = hqlQuery.executeUpdate();
+
+ //almeno 1 update l'ha fatto
+ return rowsUpdated>0;
+
+ } catch (RuntimeException re) {
+ log.error("getNativiOloOpenAccess query failed", re);
+ throw re;
+ }finally {
+ closeSession();
+ }
+ }
+
+ /** nel caso in cui ci metta troppo tempo per salvare i record nella OUT. Testare questo metodo */
+ /*
+ public void saveAll(List listSaldinettiOut) {
+ log.debug("saving list of GnpDwhe2eSaldinettiOut instances");
+ Transaction transaction = null;
+ try {
+ Session session = getSession();
+ transaction = session.beginTransaction();
+
+ for (int i = 0; i < listSaldinettiOut.size(); i++) {
+ session.save(listSaldinettiOut.get(i));
+
+ // Flush e clear ogni 20 elementi per gestire la memoria
+ if (i % 20 == 0) {
+ session.flush();
+ session.clear();
+ }
+ }
+ transaction.commit();
+ log.debug("saveAll successful");
+ } catch (RuntimeException re) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ log.error("saveAll failed", re);
+ throw re;
+ } finally {
+ closeSession();
+ }
+ }
+
+ */
+
+
+
+
+}
+
diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/internalflow/in/Dwhe2eRepoSaldiNettiIn.java b/gnpdev/dbcfx/src/it/valueteam/gnp/internalflow/in/Dwhe2eRepoSaldiNettiIn.java
index 16e46684..d46476ee 100644
--- a/gnpdev/dbcfx/src/it/valueteam/gnp/internalflow/in/Dwhe2eRepoSaldiNettiIn.java
+++ b/gnpdev/dbcfx/src/it/valueteam/gnp/internalflow/in/Dwhe2eRepoSaldiNettiIn.java
@@ -2,28 +2,28 @@ package it.valueteam.gnp.internalflow.in;
import it.valueteam.crontab.processexecutor.ProcessIF;
import it.valueteam.gnp.dao.db.hb.*;
+import it.valueteam.gnp.internalflow.out.InternalSenderProcess;
import it.valueteam.gnp.log.Loggable;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.LogInfo;
import it.valueteam.gnp.obj.LogProcess;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.Resources;
+import it.valueteam.gnpgo.core.object.GnpgoSemaforoSummary;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Scanner;
+import java.util.*;
-public class Dwhe2eRepoSaldiNettiIn implements Loggable, ProcessIF {
+public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Loggable, ProcessIF {
private ProcessLogger log;
//TODO verificare il codice processo
private static final String codiceProcesso = "IG";
private static final String versione = "1.0.0";
- private String separator = ";";
+ private String SEPARATOR = ";";
private static final String CTR = ".ctr";
private static final String CONSUMER = "CO";
@@ -79,18 +79,41 @@ public class Dwhe2eRepoSaldiNettiIn implements Loggable, ProcessIF {
private void readFile() throws Exception{
-
log.write("9999", "Start readFile");
//leggo i file da cartella CO
List listFileName = getListFileName(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_CON_IN());
readFilesAndStore(listFileName);
- //geneFileOut()
+ //per ogni nome file, se .csv allora prendine il nome assoluto DWHE2E_DBCFX_USCITE_CON_aaaammgg
+ for(String fileName : listFileName){
+
+ String estensioneFname = fileName.substring(fileName.lastIndexOf("."),fileName.length());
+ if (estensioneFname.equals(Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT())) {
+
+ //String fileNameAbsolute = fileName.substring(0,fileName.lastIndexOf("."));
+ generaFileOut(generaRecordAndStoreOut(fileName),
+ Resources.getDWHE2E_REPOSALDINETTI_NOME_FILE_CON_OUT(),
+ Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_CON_OUT(),
+ fileName);
+ }
+ }
//leggo i file da cartella BU
listFileName = getListFileName(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_BUS_IN());
readFilesAndStore(listFileName);
+ //per ogni nome file, se .csv allora prendine il nome assoluto DWHE2E_DBCFX_USCITE_BUS_aaaammgg
+ for(String fileName : listFileName){
+ String estensioneFname = fileName.substring(fileName.lastIndexOf("."),fileName.length());
+ if (estensioneFname.equals(Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT())) {
+
+ //String fileNameAbsolute = fileName.substring(0,fileName.lastIndexOf("."));
+ generaFileOut(generaRecordAndStoreOut(fileName),
+ Resources.getDWHE2E_REPOSALDINETTI_NOME_FILE_BUS_OUT(),
+ Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_BUS_OUT(),
+ fileName);
+ }
+ }
log.write("9999", "End readFile");
}//chiude metodo
@@ -191,7 +214,7 @@ public class Dwhe2eRepoSaldiNettiIn implements Loggable, ProcessIF {
String fileNameAbsolute = fileName.substring(0,fileName.lastIndexOf("."));
File ctrlFile = new File(pathLetturaFile+fileNameAbsolute +this.CTR);
//spostato il file .ctr
- spostaFile(pathBackupFile,ctrlFile);
+ if(ctrlFile.exists()) spostaFile(pathBackupFile,ctrlFile);
} catch (Exception e) {
@@ -227,7 +250,7 @@ public class Dwhe2eRepoSaldiNettiIn implements Loggable, ProcessIF {
private GnpDwhe2eSaldinettiIn getDataFromLine(String line, String nomeFile, String piattaforma) throws Exception {
log.write("9999", "start getDataFromLine line= "+line);
- String[] parts = line.split(separator);
+ String[] parts = line.split(this.SEPARATOR);
GnpDwhe2eSaldinettiIn gnpDwhe2eSaldinettiIn = new GnpDwhe2eSaldinettiIn();
gnpDwhe2eSaldinettiIn.setNomeFile(nomeFile);
@@ -297,6 +320,117 @@ public class Dwhe2eRepoSaldiNettiIn implements Loggable, ProcessIF {
log.write("9999", "End aggiungiInfoAndSave");
}
+ //TODO
+ private List generaRecordAndStoreOut(String fileName){
+
+ GnpDwhe2eSaldinettiOutDAO saldinettiOutDAO =new GnpDwhe2eSaldinettiOutDAO();
+ GnpDwhe2eSaldinettiInDAO saldinettiInDAO =new GnpDwhe2eSaldinettiInDAO();
+
+ //preleva dalla dwhe2eSaldinettiInDAO tutti i record con quel nome file facendo
+ //group by e torna l'istanza di una list.
+ //Il flag Lavorato ad N è settato nel costruttore quando fa il mapping HB
+ List listSaldinettiOut = saldinettiInDAO.groupBy(fileName);
+
+ //salva i record nella tabella di out
+ for(GnpDwhe2eSaldinettiOut itemOut : listSaldinettiOut){
+ saldinettiOutDAO.save(itemOut);
+ }
+
+ //ritorna la lista
+ return listSaldinettiOut;
+ }
+
+ //TODO
+ private void generaFileOut(List results, String nomeFileOut, String pathFileDwhe2eOut, String nomeFileIn ){
+ // DAO out
+ GnpDwhe2eSaldinettiOutDAO saldinettiOutDAO =new GnpDwhe2eSaldinettiOutDAO();
+
+ //aggiungo yyyymmdd.csv al nome file
+ nomeFileOut += DateUtils.toString(new Date(), Resources.getDWHE2E_REPOSALDINETTI_DATA_FILENAME()) + Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT();
+
+ try {
+ log.write("9999", "TROVATI " + results.size() + " RECORD DA INSERIRE NEL FILE PER DWHE2E SALDI NETTI - FILENAME: " + nomeFileOut);
+ if (results.isEmpty()) {
+ log.write("9999", "NESSUN DATO RECUPERATO PER DWHE2E SALDI NETTI ");
+ return;
+ }
+ String record = null;
+ log.write("9999", "INIZIO CREAZIONE FILE " + nomeFileOut);
+ openFile(nomeFileOut, pathFileDwhe2eOut);
+ String header = Resources.getDWHE2E_REPOSALDINETTI_OUT_HEADER();
+ writeRecord(header);
+ Iterator it = results.iterator();
+ while (it.hasNext()) {
+ GnpDwhe2eSaldinettiOut rec = it.next();
+ List valori = new ArrayList(11);
+ add(valori, rec.getE2eDataCessazione(), this.DATACESSAZIONE_FORMAT);
+ add(valori, rec.getE2eServizioAccesso());
+ add(valori, rec.getE2eDimensione1());
+ add(valori, rec.getE2eDimensione2());
+ add(valori, rec.getE2eDimensione3());
+ add(valori, rec.getE2eDimensione4());
+ add(valori, rec.getE2eDimensione5());
+ add(valori, rec.getDbcfxDimCodiceOlo());
+ add(valori, rec.getDbcfxDimTipoUscita());
+ add(valori, rec.getDbcfxDimDelibera());
+ add(valori, String.valueOf(rec.getDbcfxNroUscite()));
+
+ record = generaRecord(valori);
+ writeRecord(record);
+ }
+ log.write("9999", "CREATO FILE " + pathFileDwhe2eOut + nomeFileOut);
+ // genero anche ctr
+ closeFile(true);
+
+ //aggiorno flag_elaborato a "Y"
+ saldinettiOutDAO.updateFlagElaborato(nomeFileIn, "Y");
+
+ } catch (Exception ex) {
+ log.write("0003", "ERRORE NEL RECUPERO DEI DATI PER MONITORAGGIO E2E " + ex.toString());
+ // il file è già stato creato con l'header. Per questo elimino
+ deleteFile(pathFileDwhe2eOut + nomeFileOut, true);
+ }
+
+ }
+
+ private void add(List list, String value) {
+ if (value == null) {
+ list.add("");
+ return;
+ }
+ list.add(value.trim());
+ }
+
+ private void add(List list, Date date, String format) {
+ if (date == null) {
+ list.add("");
+ return;
+ }
+ list.add(DateUtils.toString(date, format));
+ }
+
+ /**
+ * Restituisce un record a partire dalla lista di campi
+ *
+ * @param campi di campi
+ * @return il record
+ */
+ private String generaRecord(List campi) {
+ String record = "";
+ /* l'ultimo campo è senza ;
+ for(int i=0; i