327915 - Modifica flussi Cubo Saldi Netti (Consumer e Business) - Fine Build -

This commit is contained in:
manuelstefanile
2025-01-24 16:39:10 +01:00
parent ac08bb52a4
commit 687ccc371c
13 changed files with 303 additions and 67 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,2 @@
45 3 * * 1-6 /gnpapp/script/Dwhe2eRepoSaldiNettiIn.sh
0 16 * * 0 /gnpapp/script/Dwhe2eRepoSaldiNettiIn.sh

View File

@@ -0,0 +1 @@
Insert into GNP.GNP_ANAGRAFICA_PROCESSO (CODICE_PROCESSO,NOME_PROCESSO) values ('ER','Dwhe2eRepoSaldiNettiIn');

View File

@@ -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

View File

@@ -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" ;

View File

@@ -0,0 +1,8 @@
CREATE SEQUENCE "GNP"."SEQ_DWHE2EREPORT"
START WITH 1
MINVALUE 1
INCREMENT BY 1
MAXVALUE 9999999999999999999999999999
NOCACHE
NOCYCLE;

View File

@@ -29,13 +29,13 @@
<column name="E2E_DATA_CESSAZIONE" length="7" /> <column name="E2E_DATA_CESSAZIONE" length="7" />
</property> </property>
<property name="e2eServizioAccesso" type="string"> <property name="e2eServizioAccesso" type="string">
<column name="E2E_SERVIZIO_ACCESSO" length="12" /> <column name="E2E_SERVIZIO_ACCESSO" length="1000" />
</property> </property>
<property name="e2eDimensione1" type="string"> <property name="e2eDimensione1" type="string">
<column name="E2E_DIMENSIONE_1" length="10" /> <column name="E2E_DIMENSIONE_1" length="1000" />
</property> </property>
<property name="e2eDimensione2" type="string"> <property name="e2eDimensione2" type="string">
<column name="E2E_DIMENSIONE_2" length="50" /> <column name="E2E_DIMENSIONE_2" length="1000" />
</property> </property>
<property name="e2eDimensione3" type="string"> <property name="e2eDimensione3" type="string">
<column name="E2E_DIMENSIONE_3" length="1000" /> <column name="E2E_DIMENSIONE_3" length="1000" />
@@ -50,7 +50,7 @@
<column name="DBCFX_DIM_CODICE_OLO" length="3" /> <column name="DBCFX_DIM_CODICE_OLO" length="3" />
</property> </property>
<property name="dbcfxDimTipoUscita" type="string"> <property name="dbcfxDimTipoUscita" type="string">
<column name="DBCFX_DIM_TIPO_USCITA" length="30" /> <column name="DBCFX_DIM_TIPO_USCITA" length="50" />
</property> </property>
<property name="dbcfxDimDelibera" type="string"> <property name="dbcfxDimDelibera" type="string">
<column name="DBCFX_DIM_DELIBERA" length="20" /> <column name="DBCFX_DIM_DELIBERA" length="20" />

View File

@@ -23,13 +23,13 @@
<column name="E2E_DATA_CESSAZIONE" length="7" /> <column name="E2E_DATA_CESSAZIONE" length="7" />
</property> </property>
<property name="e2eServizioAccesso" type="string"> <property name="e2eServizioAccesso" type="string">
<column name="E2E_SERVIZIO_ACCESSO" length="12" /> <column name="E2E_SERVIZIO_ACCESSO" length="1000" />
</property> </property>
<property name="e2eDimensione1" type="string"> <property name="e2eDimensione1" type="string">
<column name="E2E_DIMENSIONE_1" length="10" /> <column name="E2E_DIMENSIONE_1" length="1000" />
</property> </property>
<property name="e2eDimensione2" type="string"> <property name="e2eDimensione2" type="string">
<column name="E2E_DIMENSIONE_2" length="50" /> <column name="E2E_DIMENSIONE_2" length="1000" />
</property> </property>
<property name="e2eDimensione3" type="string"> <property name="e2eDimensione3" type="string">
<column name="E2E_DIMENSIONE_3" length="1000" /> <column name="E2E_DIMENSIONE_3" length="1000" />
@@ -44,7 +44,7 @@
<column name="DBCFX_DIM_CODICE_OLO" length="3" /> <column name="DBCFX_DIM_CODICE_OLO" length="3" />
</property> </property>
<property name="dbcfxDimTipoUscita" type="string"> <property name="dbcfxDimTipoUscita" type="string">
<column name="DBCFX_DIM_TIPO_USCITA" length="30" /> <column name="DBCFX_DIM_TIPO_USCITA" length="50" />
</property> </property>
<property name="dbcfxDimDelibera" type="string"> <property name="dbcfxDimDelibera" type="string">
<column name="DBCFX_DIM_DELIBERA" length="20" /> <column name="DBCFX_DIM_DELIBERA" length="20" />

View File

@@ -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 + '\'' +
'}';
}
} }

View File

@@ -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 +
'}';
}
} }

View File

@@ -5,6 +5,7 @@ import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.internalflow.out.InternalSenderProcess; import it.valueteam.gnp.internalflow.out.InternalSenderProcess;
import it.valueteam.gnp.log.Loggable; import it.valueteam.gnp.log.Loggable;
import it.valueteam.gnp.log.ProcessLogger; import it.valueteam.gnp.log.ProcessLogger;
import java.text.*;
import it.valueteam.gnp.obj.LogInfo; import it.valueteam.gnp.obj.LogInfo;
import it.valueteam.gnp.obj.LogProcess; import it.valueteam.gnp.obj.LogProcess;
import it.valueteam.gnp.utility.DateUtils; import it.valueteam.gnp.utility.DateUtils;
@@ -18,13 +19,14 @@ import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.util.*; import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Loggable, ProcessIF { public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Loggable, ProcessIF {
private ProcessLogger log; private ProcessLogger log;
//TODO verificare il codice processo private final static String codiceProcesso = "ER";
private static final String codiceProcesso = "IG"; private final static String versione = "1.0.0";
private static final String versione = "1.0.0";
private String SEPARATOR = ";"; private String SEPARATOR = ";";
private static final String CTR = ".ctr"; 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 = "Del. 103";
private static final String DEL_103_NATOLO_TIPOUSCITA = "Uscite 103 Donor Nativo OLO"; 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 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 { public Dwhe2eRepoSaldiNettiIn() throws Exception {
try { try {
@@ -65,7 +70,7 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
* @param args String[] * @param args String[]
*/ */
public void execute(String[] args) throws Exception { public void execute(String[] args) throws Exception {
log.write("9999", " EXECUTE Dwhe2eRepoSaldiNettiIn "); log.write("9999", "Start EXECUTE Dwhe2eRepoSaldiNettiIn ");
try { try {
readFile(); readFile();
@@ -76,6 +81,8 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
//Termino l'esecuzione ritornando un errore a chi mi ha eseguito //Termino l'esecuzione ritornando un errore a chi mi ha eseguito
throw ex; throw ex;
} }
log.write("9999", "End EXECUTE Dwhe2eRepoSaldiNettiIn ");
} }
@@ -83,26 +90,43 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
log.write("9999", "Start readFile"); log.write("9999", "Start readFile");
//leggo i file da cartella CO List<String> listFileName;
List<String> listFileName = getListFileName(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_CON_IN()); try {
readFilesAndStore(listFileName); //leggo i file da cartella CO
//per ogni nome file listFileName = getListFileName(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_CON_IN());
for(String fileName : listFileName){ readFilesAndStore(listFileName);
//per ogni nome file
for(String fileName : listFileName){
String estensioneFname = fileName.substring(fileName.lastIndexOf("."),fileName.length()); String estensioneFname = fileName.substring(fileName.lastIndexOf("."),fileName.length());
if (estensioneFname.equals(Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT())) { if (estensioneFname.equals(Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT())) {
//aggiungo a DBCFX_DWHE2E_USCITE_XXX_ + yyyymmdd.csv al nome file //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_CON_OUT();
nomeFileOut += DateUtils.toString(new Date(), Resources.getDWHE2E_REPOSALDINETTI_DATA_FILENAME()) + Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT(); 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 //leggo i file da cartella BU
listFileName = getListFileName(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_BUS_IN()); listFileName = getListFileName(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_BUS_IN());
readFilesAndStore(listFileName); readFilesAndStore(listFileName);
@@ -113,22 +137,37 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
if (estensioneFname.equals(Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT())) { if (estensioneFname.equals(Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT())) {
//aggiungo a DBCFX_DWHE2E_USCITE_XXX_ + yyyymmdd.csv al nome file //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(); nomeFileOut += DateUtils.toString(new Date(), Resources.getDWHE2E_REPOSALDINETTI_DATA_FILENAME()) + Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT();
generaFileOut(generaRecordAndStoreOut(fileName,nomeFileOut), generaFileOut(generaRecordAndStoreOut(fileName,nomeFileOut),
Resources.getDWHE2E_REPOSALDINETTI_NOME_FILE_BUS_OUT(), nomeFileOut,
Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_BUS_OUT(), Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_BUS_OUT());
fileName);
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"); log.write("9999", "End readFile");
}//chiude metodo }//chiude metodo
/**
* Ritorna la lista dei nomi file presenti in folderName
*
* @param folderName
*/
private List<String> getListFileName(String folderName) throws Exception { private List<String> 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<String> listFileName = new ArrayList<String>(); List<String> listFileName = new ArrayList<String>();
try { try {
@@ -142,7 +181,8 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
} }
} }
}catch(Exception ex) { }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; throw ex;
} }
@@ -151,6 +191,12 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
return listFileName; 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<String> listFileName) throws Exception { private void readFilesAndStore(List<String> listFileName) throws Exception {
log.write("9999", "Start readFilesAndStore"); 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<GnpDwhe2eSaldinettiIn> readFileAndGetList(String fileName, String piattaforma) throws Exception { private List<GnpDwhe2eSaldinettiIn> readFileAndGetList(String fileName, String piattaforma) throws Exception {
log.write("9999", "Start readFileAndGetList"); 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() String pathBackupFile = (piattaforma == this.CONSUMER) ? Resources.getDWHE2E_REPOSALDINETTI_CON_BACKUP_IN()
: Resources.getDWHE2E_REPOSALDINETTI_BUS_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); File wlFile = new File(pathLetturaFile+fileName);
Scanner reader = new Scanner(wlFile); Scanner reader = new Scanner(wlFile);
@@ -202,15 +255,29 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
//salto l'header del file //salto l'header del file
if(row == firstRowHeader) { if(row == firstRowHeader) {
reader.nextLine(); reader.nextLine();
}else { }else {
//passo FILE_NAME e PIATTAFORMA per inserirli nella tabella String nextLine = reader.nextLine();
GnpDwhe2eSaldinettiIn gnpDwhe2eSaldinettiIn = getDataFromLine(reader.nextLine(),fileName,piattaforma);
listForFile.add(gnpDwhe2eSaldinettiIn); //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++; row++;
} }
reader.close(); reader.close();
numRowFile= row - 1;
//arrivato qui, è andato tutto a buon fine, allora sposto .csv e .ctr //arrivato qui, è andato tutto a buon fine, allora sposto .csv e .ctr
//Creo la directory (se non esite) dove spostare tutti i file //Creo la directory (se non esite) dove spostare tutti i file
File copiaBk = new File(pathBackupFile); File copiaBk = new File(pathBackupFile);
@@ -226,7 +293,6 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
} catch (Exception e) { } catch (Exception e) {
// TODO gestisci gli errori
log.write("9999", "exception in readFileAndGetList "+e.getMessage()); log.write("9999", "exception in readFileAndGetList "+e.getMessage());
throw e; throw e;
} }
@@ -234,10 +300,16 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
return listForFile; return listForFile;
} }
/**
* Sposta inFile in sDir
*
* @param sDir
* @param inFile
*/
private void spostaFile(String sDir, File inFile) throws Exception private void spostaFile(String sDir, File inFile) throws Exception
{ {
log.write("9999", "Start spostaFile"); 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() ); File out = new File(sDir + inFile.getName() );
FileInputStream fis = new FileInputStream(inFile); FileInputStream fis = new FileInputStream(inFile);
FileOutputStream fos = new FileOutputStream(out); FileOutputStream fos = new FileOutputStream(out);
@@ -249,23 +321,26 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
//chiudo i canali //chiudo i canali
fis.close(); fis.close();
fos.close(); fos.close();
log.write("9999","Cancello file : " + inFile.getName());
log.write("9999", "End spostaFile"); log.write("9999", "End spostaFile");
inFile.delete(); inFile.delete();
} }
private GnpDwhe2eSaldinettiIn getDataFromLine(String line, String nomeFile, String piattaforma) throws Exception { 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); String[] parts = line.split(this.SEPARATOR);
GnpDwhe2eSaldinettiIn gnpDwhe2eSaldinettiIn = new GnpDwhe2eSaldinettiIn(); GnpDwhe2eSaldinettiIn gnpDwhe2eSaldinettiIn = new GnpDwhe2eSaldinettiIn();
gnpDwhe2eSaldinettiIn.setNomeFile(nomeFile); gnpDwhe2eSaldinettiIn.setNomeFile(nomeFile);
gnpDwhe2eSaldinettiIn.setCrm(piattaforma); gnpDwhe2eSaldinettiIn.setCrm(piattaforma);
//se manca l' ID_RICHIESTA, si romper il parse e non calcola il record
if (0<parts.length) if (0<parts.length)
gnpDwhe2eSaldinettiIn.setIdRichiesta(Long.valueOf(parts[0])); gnpDwhe2eSaldinettiIn.setIdRichiesta(Long.valueOf(parts[0]));
@@ -275,8 +350,13 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
if (2<parts.length) if (2<parts.length)
gnpDwhe2eSaldinettiIn.setCor(parts[2]); gnpDwhe2eSaldinettiIn.setCor(parts[2]);
if (3<parts.length) if (3<parts.length){
gnpDwhe2eSaldinettiIn.setE2eDataCessazione(DateUtils.toDate(parts[3],DATACESSAZIONE_FORMAT)); try{
gnpDwhe2eSaldinettiIn.setE2eDataCessazione(DateUtils.toDate(parts[3],DATACESSAZIONE_FORMAT));
} catch (ParseException e){
return null;
}
}
if (4<parts.length) if (4<parts.length)
gnpDwhe2eSaldinettiIn.setE2eServizioAccesso(parts[4]); gnpDwhe2eSaldinettiIn.setE2eServizioAccesso(parts[4]);
@@ -296,9 +376,7 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
if (9<parts.length) if (9<parts.length)
gnpDwhe2eSaldinettiIn.setE2eDimensione5(parts[9]); gnpDwhe2eSaldinettiIn.setE2eDimensione5(parts[9]);
log.write("9999", "Oggetto creato GnpDwhe2eSaldinettiIn = "+gnpDwhe2eSaldinettiIn.toString());
log.write("9999", "End getDataFromLine");
return gnpDwhe2eSaldinettiIn; return gnpDwhe2eSaldinettiIn;
} }
@@ -326,7 +404,7 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
} }
try{ try{
//effettua la ricerca nelle tabelle sfruttando ID_RICHIESTA per poi aggiorna i campi dbcfx //effettua la ricerca nelle tabelle sfruttando ID_RICHIESTA, aggiorna i campi dbcfx e SE trova allora salva
for(GnpDwhe2eSaldinettiIn dwhe2eItem : gnpDwhe2eSaldinettiIn ){ for(GnpDwhe2eSaldinettiIn dwhe2eItem : gnpDwhe2eSaldinettiIn ){
// del. 82 // del. 82
GnpRichiesteDonor82 gnpRichiestaDonor82 = daoRichiesteD82.findById(dwhe2eItem.getIdRichiesta()); GnpRichiesteDonor82 gnpRichiestaDonor82 = daoRichiesteD82.findById(dwhe2eItem.getIdRichiesta());
@@ -353,7 +431,13 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
if(gnpRichiesteCsNpg!=null && gnpRichiesteCsNpg.getProcesso().equalsIgnoreCase("CSNPg103")){ if(gnpRichiesteCsNpg!=null && gnpRichiesteCsNpg.getProcesso().equalsIgnoreCase("CSNPg103")){
dwhe2eItem.popolaAggiuntiviFX(gnpRichiesteCsNpg.getCodOpRecipient(),this.DEL_103_STD_VOIP_TIPOUSCITA, this.DEL_103); dwhe2eItem.popolaAggiuntiviFX(gnpRichiesteCsNpg.getCodOpRecipient(),this.DEL_103_STD_VOIP_TIPOUSCITA, this.DEL_103);
dwhe2eSaldinettiInDAO.save(dwhe2eItem); dwhe2eSaldinettiInDAO.save(dwhe2eItem);
continue;
} }
//se soon arrivato qui, allora non c'è corrispondenza nel DB dell'ID_RICHIESTA
log.write("9999", "ID_RICHIESTA non trovato a DB: " + dwhe2eItem.getIdRichiesta());
//aggiungo errori legati alla mancata presenza dell'ID_RICHIESTA tra le varie delibere
rowError++;
} }
UserTransactionUtility.endUserTransaction(utx, true); UserTransactionUtility.endUserTransaction(utx, true);
@@ -375,8 +459,9 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
log.write("9999", "End aggiungiInfoAndSave"); log.write("9999", "End aggiungiInfoAndSave");
} }
//TODO
private List<GnpDwhe2eSaldinettiOut> generaRecordAndStoreOut(String fileNameIn, String fileNameOut) throws Exception { private List<GnpDwhe2eSaldinettiOut> generaRecordAndStoreOut(String fileNameIn, String fileNameOut) throws Exception {
log.write("9999", "Start generaRecordAndStoreOut");
UserTransaction utx; UserTransaction utx;
try { try {
@@ -386,7 +471,6 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
throw e; throw e;
} }
log.write("9999", "Start generaRecordAndStoreOut");
GnpDwhe2eSaldinettiOutDAO saldinettiOutDAO =new GnpDwhe2eSaldinettiOutDAO(); GnpDwhe2eSaldinettiOutDAO saldinettiOutDAO =new GnpDwhe2eSaldinettiOutDAO();
GnpDwhe2eSaldinettiInDAO saldinettiInDAO =new GnpDwhe2eSaldinettiInDAO(); GnpDwhe2eSaldinettiInDAO saldinettiInDAO =new GnpDwhe2eSaldinettiInDAO();
@@ -396,13 +480,14 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
List<GnpDwhe2eSaldinettiOut> listSaldinettiOut = saldinettiInDAO.groupBy(fileNameIn); List<GnpDwhe2eSaldinettiOut> listSaldinettiOut = saldinettiInDAO.groupBy(fileNameIn);
try{ 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 //salva i record nella tabella di out
for(GnpDwhe2eSaldinettiOut itemOut : listSaldinettiOut){ for(GnpDwhe2eSaldinettiOut itemOut : listSaldinettiOut){
itemOut.setNomeFile(fileNameOut); itemOut.setNomeFile(fileNameOut);
saldinettiOutDAO.save(itemOut); saldinettiOutDAO.save(itemOut);
} }
UserTransactionUtility.endUserTransaction(utx, true); UserTransactionUtility.endUserTransaction(utx, true);
log.write("9999", "Fine salvataggio");
}catch (Exception ex) { }catch (Exception ex) {
try { try {
log.write("9999", "UserTransactionUtility.endUserTransaction rollback"); log.write("9999", "UserTransactionUtility.endUserTransaction rollback");
@@ -425,15 +510,13 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
} }
//TODO //TODO
private void generaFileOut(List<GnpDwhe2eSaldinettiOut> results, String nomeFileOut, String pathFileDwhe2eOut, String nomeFileIn ){ private void generaFileOut(List<GnpDwhe2eSaldinettiOut> results, String nomeFileOut, String pathFileDwhe2eOut ){
log.write("9999", "Start generaFileOut"); log.write("9999", "Start generaFileOut");
// DAO out // DAO out
GnpDwhe2eSaldinettiOutDAO saldinettiOutDAO =new GnpDwhe2eSaldinettiOutDAO(); GnpDwhe2eSaldinettiOutDAO saldinettiOutDAO =new GnpDwhe2eSaldinettiOutDAO();
try { 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()) { if (results.isEmpty()) {
log.write("9999", "NESSUN DATO RECUPERATO PER DWHE2E SALDI NETTI "); log.write("9999", "NESSUN DATO RECUPERATO PER DWHE2E SALDI NETTI ");
return; return;
@@ -502,17 +585,15 @@ public class Dwhe2eRepoSaldiNettiIn extends InternalSenderProcess implements Log
*/ */
private String generaRecord(List<String> campi) { private String generaRecord(List<String> campi) {
String record = ""; String record = "";
/* l'ultimo campo è senza ;
for(int i=0; i<campi.size();i++){ for(int i=0; i<campi.size();i++){
if(i<campi.size()-1) if(i < campi.size()-1)
record +=campi.get(i) + SEPARATOR; record +=campi.get(i) + SEPARATOR;
else else
// l'ultimo campo è senza ;
record +=campi.get(i) ; record +=campi.get(i) ;
} }
*/
for (String campo : campi) {
record += campo + SEPARATOR;
}
return record; return record;
} }