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