diff --git a/gnpapp/script/repo_saldiNetti_DwhE2e/sh/Dwhe2eRepoSaldiNettiIn.sh b/gnpapp/script/repo_saldiNetti_DwhE2e/sh/Dwhe2eRepoSaldiNettiIn.sh new file mode 100644 index 00000000..754fd4a3 --- /dev/null +++ b/gnpapp/script/repo_saldiNetti_DwhE2e/sh/Dwhe2eRepoSaldiNettiIn.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +########################################################### +# Progetto: dbcfx +# Script: genera_report_dwhe2e_saldinetti +# Descrizione: Applicazione per l'generare il file di report tra dwhe2e e dbcfx +# +########################################################### + +THIS_PATH=`dirname $0` +. $THIS_PATH/setEnv.sh + +THIS=`basename $0 .sh` +LOG=$GNP_LOG_SCRIPT_HOME/$THIS.log + +adesso=$(date) + +#controllo se lo script è già in esecuzione + +check_rc=`$THIS_PATH/is_Running_Script.sh $THIS $$` + +if [ $? -eq 0 ] + then + echo '****** elaborazione DHWE2E Report Saldi Netti file CO e BU ' $adesso Start DWHE2E_REPORT >> $LOG + $THIS_PATH/ProcessExecutor.sh it.valueteam.gnp.internalflow.in.Dwhe2eRepoSaldiNettiIn>> $LOG + else + echo " (WARNING) $(date) Esecuzione non avvenuta per presenza processo precedente : $prog" >> $LOG +fi diff --git a/gnpapp/script/repo_saldiNetti_DwhE2e/sh/crontab_get_DWHE2E_REPOSALDINETTI.txt b/gnpapp/script/repo_saldiNetti_DwhE2e/sh/crontab_get_DWHE2E_REPOSALDINETTI.txt new file mode 100644 index 00000000..2876b704 --- /dev/null +++ b/gnpapp/script/repo_saldiNetti_DwhE2e/sh/crontab_get_DWHE2E_REPOSALDINETTI.txt @@ -0,0 +1,3 @@ +0 14 * * 1-7 /gnpapp/script/sftpd.sh -get DWHE2E_REPOSALDINETTI_BU +0 14 * * 1-7 /gnpapp/script/sftpd.sh -get DWHE2E_REPOSALDINETTI_CO + diff --git a/gnpapp/script/repo_saldiNetti_DwhE2e/sh/crontab_put_DWHE2E_REPOSALDINETTI.txt b/gnpapp/script/repo_saldiNetti_DwhE2e/sh/crontab_put_DWHE2E_REPOSALDINETTI.txt new file mode 100644 index 00000000..c4775d04 --- /dev/null +++ b/gnpapp/script/repo_saldiNetti_DwhE2e/sh/crontab_put_DWHE2E_REPOSALDINETTI.txt @@ -0,0 +1,2 @@ +0 5 * * 1-7 /gnpapp/script/sftpd.sh -put DWHE2E_REPOSALDINETTI_BU +0 5 * * 1-7 /gnpapp/script/sftpd.sh -put DWHE2E_REPOSALDINETTI_CO \ No newline at end of file diff --git a/gnpapp/script/repo_saldiNetti_DwhE2e/sh/crontab_read_DWHE2E_REPOSALDINETTI.txt b/gnpapp/script/repo_saldiNetti_DwhE2e/sh/crontab_read_DWHE2E_REPOSALDINETTI.txt new file mode 100644 index 00000000..609adc4c --- /dev/null +++ b/gnpapp/script/repo_saldiNetti_DwhE2e/sh/crontab_read_DWHE2E_REPOSALDINETTI.txt @@ -0,0 +1,2 @@ +45 3 * * 1-6 /gnpapp/script/Dwhe2eRepoSaldiNettiIn.sh +0 16 * * 0 /gnpapp/script/Dwhe2eRepoSaldiNettiIn.sh diff --git a/gnpapp/script/repo_saldiNetti_DwhE2e/sql/InsertGnpAnagraficaProcesso.sql b/gnpapp/script/repo_saldiNetti_DwhE2e/sql/InsertGnpAnagraficaProcesso.sql new file mode 100644 index 00000000..94aa6d96 --- /dev/null +++ b/gnpapp/script/repo_saldiNetti_DwhE2e/sql/InsertGnpAnagraficaProcesso.sql @@ -0,0 +1 @@ +Insert into GNP.GNP_ANAGRAFICA_PROCESSO (CODICE_PROCESSO,NOME_PROCESSO) values ('ER','Dwhe2eRepoSaldiNettiIn'); \ No newline at end of file diff --git a/gnpapp/script/repo_saldiNetti_DwhE2e/sql/createGnpDwhe2eSaldinettiIn.sql b/gnpapp/script/repo_saldiNetti_DwhE2e/sql/createGnpDwhe2eSaldinettiIn.sql new file mode 100644 index 00000000..42310b9d --- /dev/null +++ b/gnpapp/script/repo_saldiNetti_DwhE2e/sql/createGnpDwhe2eSaldinettiIn.sql @@ -0,0 +1,42 @@ +CREATE TABLE "GNP"."GNP_DWHE2E_SALDINETTI_IN" ( + "UNIQUE_ID" NUMBER NOT NULL, + "NOME_FILE" VARCHAR2(50 BYTE), + "CRM" VARCHAR2(2 BYTE), + "ID_RICHIESTA" NUMBER(22, 0) NOT NULL ENABLE, + "LINEA" VARCHAR2(15 BYTE), + "COR" VARCHAR2(50 BYTE), + "E2E_DATA_CESSAZIONE" DATE, + "E2E_SERVIZIO_ACCESSO" VARCHAR2(1000 BYTE), + "E2E_DIMENSIONE_1" VARCHAR2(1000 BYTE), + "E2E_DIMENSIONE_2" VARCHAR2(1000 BYTE), + "E2E_DIMENSIONE_3" VARCHAR2(1000 BYTE), + "E2E_DIMENSIONE_4" VARCHAR2(1000 BYTE), + "E2E_DIMENSIONE_5" VARCHAR2(1000 BYTE), + "DBCFX_DIM_CODICE_OLO" VARCHAR2(3 BYTE), + "DBCFX_DIM_TIPO_USCITA" VARCHAR2(50 BYTE), + "DBCFX_DIM_DELIBERA" VARCHAR2(20 BYTE), + CONSTRAINT "PK_GNP_DWHE2E_SALDINETTI_IN" PRIMARY KEY ("UNIQUE_ID") + USING INDEX + TABLESPACE "GNP_DATA_SMALL" + ); + + CREATE INDEX "GNP"."GNP_DWHE2E_IN_NOME_FILE" ON "GNP"."GNP_DWHE2E_SALDINETTI_IN" ("NOME_FILE") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "GNP_DATA_SMALL" ; + + CREATE INDEX "GNP"."GNP_DWHE2E_IN_ID_RICHIESTA" ON "GNP"."GNP_DWHE2E_SALDINETTI_IN" ("ID_RICHIESTA") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "GNP_DATA_SMALL" ; + + // PER COL GNP_DATA_SMALL + + + + + diff --git a/gnpapp/script/repo_saldiNetti_DwhE2e/sql/createGnpDwhe2eSaldinettiOut.sql b/gnpapp/script/repo_saldiNetti_DwhE2e/sql/createGnpDwhe2eSaldinettiOut.sql new file mode 100644 index 00000000..dbcbd3da --- /dev/null +++ b/gnpapp/script/repo_saldiNetti_DwhE2e/sql/createGnpDwhe2eSaldinettiOut.sql @@ -0,0 +1,32 @@ + + CREATE TABLE "GNP"."GNP_DWHE2E_SALDINETTI_OUT" + ( "UNIQUE_ID" NUMBER NOT NULL ENABLE, + "NOME_FILE" VARCHAR2(50 BYTE), + "FLAG_ELABORATO" VARCHAR2(1 BYTE) DEFAULT 'N' NOT NULL ENABLE, + "CRM" VARCHAR2(2 BYTE), + "E2E_DATA_CESSAZIONE" DATE, + "E2E_SERVIZIO_ACCESSO" VARCHAR2(1000 BYTE), + "E2E_DIMENSIONE_1" VARCHAR2(1000 BYTE), + "E2E_DIMENSIONE_2" VARCHAR2(1000 BYTE), + "E2E_DIMENSIONE_3" VARCHAR2(1000 BYTE), + "E2E_DIMENSIONE_4" VARCHAR2(1000 BYTE), + "E2E_DIMENSIONE_5" VARCHAR2(1000 BYTE), + "DBCFX_DIM_CODICE_OLO" VARCHAR2(3 BYTE), + "DBCFX_DIM_TIPO_USCITA" VARCHAR2(50 BYTE), + "DBCFX_DIM_DELIBERA" VARCHAR2(20 BYTE), + "DBCFX_NRO_USCITE" NUMBER, + CONSTRAINT "PK_GNP_DWHE2E_SALDINETTI_OUT" PRIMARY KEY ("UNIQUE_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "GNP_DATA_SMALL" ENABLE + ) SEGMENT CREATION DEFERRED + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + TABLESPACE "GNP_DATA_SMALL" ; + + CREATE INDEX "GNP"."GNP_DWHE2E_OUT_NOME_FILE" ON "GNP"."GNP_DWHE2E_SALDINETTI_OUT" ("NOME_FILE") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE( INITIAL 65536 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "GNP_DATA_SMALL" ; + diff --git a/gnpapp/script/repo_saldiNetti_DwhE2e/sql/createSequence_Dwhe2eRepo.sql b/gnpapp/script/repo_saldiNetti_DwhE2e/sql/createSequence_Dwhe2eRepo.sql new file mode 100644 index 00000000..c66af95e --- /dev/null +++ b/gnpapp/script/repo_saldiNetti_DwhE2e/sql/createSequence_Dwhe2eRepo.sql @@ -0,0 +1,8 @@ +CREATE SEQUENCE "GNP"."SEQ_DWHE2EREPORT" + START WITH 1 + MINVALUE 1 + INCREMENT BY 1 + MAXVALUE 9999999999999999999999999999 + NOCACHE + NOCYCLE; + diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldiNettiIn.hbm.xml b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldiNettiIn.hbm.xml index 1fe1d4c6..84b619be 100644 --- a/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldiNettiIn.hbm.xml +++ b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldiNettiIn.hbm.xml @@ -29,13 +29,13 @@ - + - + - + @@ -50,7 +50,7 @@ - + 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 index 27b4f83b..3188cba9 100644 --- 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 @@ -23,13 +23,13 @@ - + - + - + @@ -44,7 +44,7 @@ - + diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiIn.java b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiIn.java index 06e6db8f..af449eb6 100644 --- a/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiIn.java +++ b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiIn.java @@ -188,7 +188,26 @@ public class GnpDwhe2eSaldinettiIn implements java.io.Serializable { } - + @Override + public String toString() { + return "GnpDwhe2eSaldinettiIn{" + + "nomeFile='" + nomeFile + '\'' + + ", crm='" + crm + '\'' + + ", idRichiesta=" + idRichiesta + + ", linea='" + linea + '\'' + + ", cor='" + cor + '\'' + + ", e2eDataCessazione=" + e2eDataCessazione + + ", e2eServizioAccesso='" + e2eServizioAccesso + '\'' + + ", e2eDimensione1='" + e2eDimensione1 + '\'' + + ", e2eDimensione2='" + e2eDimensione2 + '\'' + + ", e2eDimensione3='" + e2eDimensione3 + '\'' + + ", e2eDimensione4='" + e2eDimensione4 + '\'' + + ", e2eDimensione5='" + e2eDimensione5 + '\'' + + ", dbcfxDimCodiceOlo='" + dbcfxDimCodiceOlo + '\'' + + ", dbcfxDimTipoUscita='" + dbcfxDimTipoUscita + '\'' + + ", dbcfxDimDelibera='" + dbcfxDimDelibera + '\'' + + '}'; + } } 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 index bff66f3a..6241fcb4 100644 --- a/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiOut.java +++ b/gnpdev/dbcfx/src/it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldinettiOut.java @@ -172,8 +172,26 @@ public class GnpDwhe2eSaldinettiOut implements java.io.Serializable { } - - + @Override + public String toString() { + return "GnpDwhe2eSaldinettiOut{" + + "uniqueId=" + uniqueId + + ", nomeFile='" + nomeFile + '\'' + + ", flagElaborato='" + flagElaborato + '\'' + + ", crm='" + crm + '\'' + + ", e2eDataCessazione=" + e2eDataCessazione + + ", e2eServizioAccesso='" + e2eServizioAccesso + '\'' + + ", e2eDimensione1='" + e2eDimensione1 + '\'' + + ", e2eDimensione2='" + e2eDimensione2 + '\'' + + ", e2eDimensione3='" + e2eDimensione3 + '\'' + + ", e2eDimensione4='" + e2eDimensione4 + '\'' + + ", e2eDimensione5='" + e2eDimensione5 + '\'' + + ", dbcfxDimCodiceOlo='" + dbcfxDimCodiceOlo + '\'' + + ", dbcfxDimTipoUscita='" + dbcfxDimTipoUscita + '\'' + + ", dbcfxDimDelibera='" + dbcfxDimDelibera + '\'' + + ", dbcfxNroUscite=" + dbcfxNroUscite + + '}'; + } } 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 ec03ee0e..d8b96942 100644 --- a/gnpdev/dbcfx/src/it/valueteam/gnp/internalflow/in/Dwhe2eRepoSaldiNettiIn.java +++ b/gnpdev/dbcfx/src/it/valueteam/gnp/internalflow/in/Dwhe2eRepoSaldiNettiIn.java @@ -5,6 +5,7 @@ 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 java.text.*; import it.valueteam.gnp.obj.LogInfo; import it.valueteam.gnp.obj.LogProcess; import it.valueteam.gnp.utility.DateUtils; @@ -18,13 +19,14 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; 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 final static String codiceProcesso = "ER"; + private final static String versione = "1.0.0"; private String SEPARATOR = ";"; private static final String CTR = ".ctr"; @@ -39,9 +41,12 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log private static final String DEL_103 = "Del. 103"; private static final String DEL_103_NATOLO_TIPOUSCITA = "Uscite 103 Donor Nativo OLO"; private static final String DEL_103_STD_VOIP_TIPOUSCITA = "Uscite 103 Standard o VOIP"; - private static final String DATACESSAZIONE_FORMAT = new String("dd/MM/yyyy"); + private static final String DATACESSAZIONE_FORMAT = new String("yyyy-MM-dd"); + private static final String REGEXP_SALDINETTI_LINE = "^(\\d{1,22});([^;]{0,15});([^;]{0,50});((\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))|);([^;]{0,1000});([^;]{0,1000});([^;]{0,1000});([^;]{0,1000});([^;]{0,1000});([^;]{0,1000})$"; + private int rowError= 0; + private int numRowFile= 0; public Dwhe2eRepoSaldiNettiIn() throws Exception { try { @@ -65,7 +70,7 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log * @param args String[] */ public void execute(String[] args) throws Exception { - log.write("9999", " EXECUTE Dwhe2eRepoSaldiNettiIn "); + log.write("9999", "Start EXECUTE Dwhe2eRepoSaldiNettiIn "); try { readFile(); @@ -76,6 +81,8 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log //Termino l'esecuzione ritornando un errore a chi mi ha eseguito throw ex; } + + log.write("9999", "End EXECUTE Dwhe2eRepoSaldiNettiIn "); } @@ -83,26 +90,43 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log log.write("9999", "Start readFile"); - //leggo i file da cartella CO - List listFileName = getListFileName(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_CON_IN()); - readFilesAndStore(listFileName); - //per ogni nome file - for(String fileName : listFileName){ + List listFileName; + try { + //leggo i file da cartella CO + listFileName = getListFileName(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_CON_IN()); + readFilesAndStore(listFileName); + //per ogni nome file + for(String fileName : listFileName){ - String estensioneFname = fileName.substring(fileName.lastIndexOf("."),fileName.length()); - if (estensioneFname.equals(Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT())) { + String estensioneFname = fileName.substring(fileName.lastIndexOf("."),fileName.length()); + if (estensioneFname.equals(Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT())) { - //aggiungo a DBCFX_DWHE2E_USCITE_XXX_ + yyyymmdd.csv al nome file - String nomeFileOut = Resources.getDWHE2E_REPOSALDINETTI_NOME_FILE_CON_OUT(); - nomeFileOut += DateUtils.toString(new Date(), Resources.getDWHE2E_REPOSALDINETTI_DATA_FILENAME()) + Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT(); + //aggiungo a DBCFX_DWHE2E_USCITE_XXX_ + yyyymmdd.csv al nome file + String nomeFileOut = Resources.getDWHE2E_REPOSALDINETTI_NOME_FILE_CON_OUT(); + nomeFileOut += DateUtils.toString(new Date(), Resources.getDWHE2E_REPOSALDINETTI_DATA_FILENAME()) + Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT(); + + generaFileOut(generaRecordAndStoreOut(fileName,nomeFileOut), + nomeFileOut, + Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_CON_OUT()); + + numRowFile = ((numRowFile==-1)?0:numRowFile); + log.write("9999", "--------- Report summary CO nomeFile: " + fileName + " ---------"); + log.write("9999", "Numero righe totali: " + numRowFile); + log.write("9999", "Numero righe elaborate correttamente: " + (numRowFile - rowError)); + log.write("9999", "Numero righe in errore: " + rowError); + log.write("9999", "--------- Report summary CO fine ---------"); + + numRowFile = 0; + rowError = 0; + } - generaFileOut(generaRecordAndStoreOut(fileName,nomeFileOut), - nomeFileOut, - Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_CON_OUT(), - fileName); } + }catch (Exception e){ + log.write("9999", "Eccezione: " + e.getMessage()); + log.write("9999", "Eccezione generica nell'elaborazione de file CO. Continuo con BU!"); } + //leggo i file da cartella BU listFileName = getListFileName(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_BUS_IN()); readFilesAndStore(listFileName); @@ -113,22 +137,37 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log if (estensioneFname.equals(Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT())) { //aggiungo a DBCFX_DWHE2E_USCITE_XXX_ + yyyymmdd.csv al nome file - String nomeFileOut = Resources.getDWHE2E_REPOSALDINETTI_NOME_FILE_CON_OUT(); + String nomeFileOut = Resources.getDWHE2E_REPOSALDINETTI_NOME_FILE_BUS_OUT(); nomeFileOut += DateUtils.toString(new Date(), Resources.getDWHE2E_REPOSALDINETTI_DATA_FILENAME()) + Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT(); generaFileOut(generaRecordAndStoreOut(fileName,nomeFileOut), - Resources.getDWHE2E_REPOSALDINETTI_NOME_FILE_BUS_OUT(), - Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_BUS_OUT(), - fileName); + nomeFileOut, + Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_BUS_OUT()); + + numRowFile = ((numRowFile==-1)?0:numRowFile); + log.write("9999", "--------- Report summary BU nomeFile: " + fileName + " ---------"); + log.write("9999", "Numero righe totali: " + numRowFile); + log.write("9999", "Numero righe elaborate correttamente: " + (numRowFile - rowError)); + log.write("9999", "Numero righe in errore: " + rowError); + log.write("9999", "--------- Report summary BU fine ---------"); + + numRowFile = 0; + rowError = 0; } } log.write("9999", "End readFile"); + + }//chiude metodo - + /** + * Ritorna la lista dei nomi file presenti in folderName + * + * @param folderName + */ private List getListFileName(String folderName) throws Exception { - log.write("9999", "Start getListFileName folder IN locale name "+folderName); + log.write("9999", "Start getListFileName. Prelevo i nomi file da: "+folderName); List listFileName = new ArrayList(); try { @@ -142,7 +181,8 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log } } }catch(Exception ex) { - log.write("9999", "Excetpion in getListFileName " +ex.getMessage()); + log.write("9999", "Exception in getListFileName per la lettura dei fileName al path:" + folderName); + log.write("9999", "Exception: " +ex.getMessage()); throw ex; } @@ -151,6 +191,12 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log return listFileName; } + /** + * Scorre i file, crea la lista di oggetti formati dalle righe del .csv, + * popola i parametri aggiuntivi e salva nel DB + * + * @param listFileName + */ private void readFilesAndStore(List listFileName) throws Exception { log.write("9999", "Start readFilesAndStore"); @@ -179,6 +225,13 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log } + /** + * Legge il file e ritorna una lista di oggetti che rappresentano le righe + * del .csv + * + * @param fileName + * @param piattaforma + */ private List readFileAndGetList(String fileName, String piattaforma) throws Exception { log.write("9999", "Start readFileAndGetList"); @@ -190,7 +243,7 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log String pathBackupFile = (piattaforma == this.CONSUMER) ? Resources.getDWHE2E_REPOSALDINETTI_CON_BACKUP_IN() : Resources.getDWHE2E_REPOSALDINETTI_BUS_BACKUP_IN(); - log.write("9999", "file da elaborare "+pathLetturaFile+fileName); + log.write("9999", "file da elaborare "+ pathLetturaFile + fileName); File wlFile = new File(pathLetturaFile+fileName); Scanner reader = new Scanner(wlFile); @@ -202,15 +255,29 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log //salto l'header del file if(row == firstRowHeader) { reader.nextLine(); + }else { - //passo FILE_NAME e PIATTAFORMA per inserirli nella tabella - GnpDwhe2eSaldinettiIn gnpDwhe2eSaldinettiIn = getDataFromLine(reader.nextLine(),fileName,piattaforma); - listForFile.add(gnpDwhe2eSaldinettiIn); + String nextLine = reader.nextLine(); + + //gestisco con try catch, se non riesco a creare l'oggetto allora non lo inserisco + try { + //passo FILE_NAME e PIATTAFORMA per inserirli nella tabella + GnpDwhe2eSaldinettiIn gnpDwhe2eSaldinettiIn = getDataFromLine(nextLine,fileName,piattaforma); + if(gnpDwhe2eSaldinettiIn!=null) + listForFile.add(gnpDwhe2eSaldinettiIn); + else { + rowError++; + log.write("9999", "Errore record nel formato della linea " + (row +1)); + } + + }catch (Exception e){ + log.write("9999", "Errore generico alla linea " + (row + 1) +" : "+nextLine); + } } row++; } reader.close(); - + numRowFile= row - 1; //arrivato qui, è andato tutto a buon fine, allora sposto .csv e .ctr //Creo la directory (se non esite) dove spostare tutti i file File copiaBk = new File(pathBackupFile); @@ -226,7 +293,6 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log } catch (Exception e) { - // TODO gestisci gli errori log.write("9999", "exception in readFileAndGetList "+e.getMessage()); throw e; } @@ -234,10 +300,16 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log return listForFile; } + /** + * Sposta inFile in sDir + * + * @param sDir + * @param inFile + */ private void spostaFile(String sDir, File inFile) throws Exception { log.write("9999", "Start spostaFile"); - log.write("9999","Sposto il file : " + inFile.getName()); + log.write("9999","Sposto il file : " + inFile.getName() + " al path: " + sDir); File out = new File(sDir + inFile.getName() ); FileInputStream fis = new FileInputStream(inFile); FileOutputStream fos = new FileOutputStream(out); @@ -249,23 +321,26 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log //chiudo i canali fis.close(); fos.close(); - log.write("9999","Cancello file : " + inFile.getName()); log.write("9999", "End spostaFile"); inFile.delete(); } - - - private GnpDwhe2eSaldinettiIn getDataFromLine(String line, String nomeFile, String piattaforma) throws Exception { - log.write("9999", "start getDataFromLine line= "+line); + Pattern p = Pattern.compile(this.REGEXP_SALDINETTI_LINE); + Matcher m = p.matcher(line); + + // se la linea non è formattata correttamente allora la skippo, e proseguo con la prossima linea + if(!m.matches()){ + return null ; + } String[] parts = line.split(this.SEPARATOR); GnpDwhe2eSaldinettiIn gnpDwhe2eSaldinettiIn = new GnpDwhe2eSaldinettiIn(); gnpDwhe2eSaldinettiIn.setNomeFile(nomeFile); gnpDwhe2eSaldinettiIn.setCrm(piattaforma); + //se manca l' ID_RICHIESTA, si romper il parse e non calcola il record if (0 generaRecordAndStoreOut(String fileNameIn, String fileNameOut) throws Exception { + log.write("9999", "Start generaRecordAndStoreOut"); UserTransaction utx; try { @@ -386,7 +471,6 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log throw e; } - log.write("9999", "Start generaRecordAndStoreOut"); GnpDwhe2eSaldinettiOutDAO saldinettiOutDAO =new GnpDwhe2eSaldinettiOutDAO(); GnpDwhe2eSaldinettiInDAO saldinettiInDAO =new GnpDwhe2eSaldinettiInDAO(); @@ -396,13 +480,14 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log List listSaldinettiOut = saldinettiInDAO.groupBy(fileNameIn); try{ + log.write("9999", "Inizio salvataggio in GNP_DWHE2E_SALDINETTI_OUT per i record che POPOLERANNO il file " + fileNameOut); //salva i record nella tabella di out for(GnpDwhe2eSaldinettiOut itemOut : listSaldinettiOut){ itemOut.setNomeFile(fileNameOut); saldinettiOutDAO.save(itemOut); } UserTransactionUtility.endUserTransaction(utx, true); - + log.write("9999", "Fine salvataggio"); }catch (Exception ex) { try { log.write("9999", "UserTransactionUtility.endUserTransaction rollback"); @@ -425,15 +510,13 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log } //TODO - private void generaFileOut(List results, String nomeFileOut, String pathFileDwhe2eOut, String nomeFileIn ){ + private void generaFileOut(List results, String nomeFileOut, String pathFileDwhe2eOut ){ log.write("9999", "Start generaFileOut"); // DAO out GnpDwhe2eSaldinettiOutDAO saldinettiOutDAO =new GnpDwhe2eSaldinettiOutDAO(); - - try { - log.write("9999", "TROVATI " + results.size() + " RECORD DA INSERIRE NEL FILE PER DWHE2E SALDI NETTI - FILENAME: " + nomeFileOut); + log.write("9999", "TROVATI " + results.size() + " RECORD AGGREGATI da inserire nel file di output - FILENAME: " + nomeFileOut); if (results.isEmpty()) { log.write("9999", "NESSUN DATO RECUPERATO PER DWHE2E SALDI NETTI "); return; @@ -502,17 +585,15 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log */ private String generaRecord(List campi) { String record = ""; - /* l'ultimo campo è senza ; + for(int i=0; i