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