327915 - Modifica flussi Cubo Saldi Netti (Consumer e Business) - first commit

This commit is contained in:
manuelstefanile
2025-01-13 11:36:22 +01:00
parent b375fd69a0
commit 0cb313cdb4
10 changed files with 452 additions and 4 deletions

View File

@@ -0,0 +1,11 @@
########################### INVIO FILE A DWHE ###########################
#header edl Donor
PATH_FILE_DWHE2E_REPOSALDINETTI_IN=/gnpapp/batch/ftpin/dwhe2e_report/
DWHE2E_REPOSALDINETTI_BACKUP_IN=/gnpapp/batch/backup_in/dwhe2e_report/
#estensione dei file da inviare a CRMB
DWHE2E_REPOSALDINETTI_FILENAME_EXT=.csv
#Prefisso dei file per CRMB
DWHE2E_REPOSALDINETTI_FULL=01/01/2025
DWHE2E_REPOSALDINETTI_DELTA=15

View File

@@ -0,0 +1,53 @@
######################## INIZIO CONFIGURAZIONE DWHE2E_REPOSALDINETTI_CO ###################
GET.LOCAL.PATH.DWHE2E_REPOSALDINETTI_CO=/gnpapp/batch/ftpin/dwhe2e_reposaldinetti
GET.IDENTITY.DWHE2E_REPOSALDINETTI_CO=/home/bea/.ssh/id_rsa
GET.PASSPHRASE.DWHE2E_REPOSALDINETTI_CO=
GET.USERNAME.DWHE2E_REPOSALDINETTI_CO=dbcfx
#GET.HOST.XDSL=10.119.3.119
# PORTALE WHOLESALE LINUX
GET.HOST.REG=172.30.16.178
GET.PORT.DWHE2E_REPOSALDINETTI_CO=22
GET.KNOWN_HOSTS.DWHE2E_REPOSALDINETTI_CO=/home/bea/.ssh/known_hosts
GET.REMOTE_PATH.DWHE2E_REPOSALDINETTI_CO=/HOME/xdsl/adsl_002/dwhe2e
GET.EXTENSION.DWHE2E_REPOSALDINETTI_CO=.xml.gz;.bad
# Pattern di inizio del nome file da prelevare
GET.NOMEFILE_PATTERN.DWHE2E_REPOSALDINETTI_CO=002_*_NGA[.]*
# Abilita o disabilita decompressione GZip per estensione .gz (YES|NO)
GET.UNCOMPRESS.DWHE2E_REPOSALDINETTI_CO=YES
# TIMEOUT IN MILLISECONDI (10000 = 10sec, 1800000 = 30min)
GET.CONNECT.TIMEOUT.DWHE2E_REPOSALDINETTI_CO=30000
# FILE PER GESTIONE STORICO FILE LAVORATI (in /gnpapp/
GET.FILENAME.LAVORATI.DWHE2E_REPOSALDINETTI_CO=/gnpapp/properties/002_TLC_STORICO_NOW.txt
######################## FINE CONFIGURAZIONE DWHE2E_REPOSALDINETTI_CO ###################
######################## INIZIO CONFIGURAZIONE DWHE2E_REPOSALDINETTI_BU ###################
GET.LOCAL.PATH.DWHE2E_REPOSALDINETTI_BU=/gnpapp/batch/ftpin/dwhe2e_reposaldinetti
GET.IDENTITY.DWHE2E_REPOSALDINETTI_BU=/home/bea/.ssh/id_rsa
GET.PASSPHRASE.DWHE2E_REPOSALDINETTI_BU=
GET.USERNAME.DWHE2E_REPOSALDINETTI_BU=dbcfx
#GET.HOST.XDSL=10.119.3.119
# PORTALE WHOLESALE LINUX
GET.HOST.REG=172.30.16.178
GET.PORT.DWHE2E_REPOSALDINETTI_BU=22
GET.KNOWN_HOSTS.DWHE2E_REPOSALDINETTI_BU=/home/bea/.ssh/known_hosts
GET.REMOTE_PATH.DWHE2E_REPOSALDINETTI_BU=/HOME/xdsl/adsl_002/PATH_BU_REPO
GET.EXTENSION.DWHE2E_REPOSALDINETTI_BU=.xml.gz;.bad
# Pattern di inizio del nome file da prelevare
GET.NOMEFILE_PATTERN.DWHE2E_REPOSALDINETTI_BU=002_*_NGA[.]*
# Abilita o disabilita decompressione GZip per estensione .gz (YES|NO)
GET.UNCOMPRESS.DWHE2E_REPOSALDINETTI_BU=YES
# TIMEOUT IN MILLISECONDI (10000 = 10sec, 1800000 = 30min)
GET.CONNECT.TIMEOUT.DWHE2E_REPOSALDINETTI_BU=30000
# FILE PER GESTIONE STORICO FILE LAVORATI (in /gnpapp/
GET.FILENAME.LAVORATI.DWHE2E_REPOSALDINETTI_BU=/gnpapp/properties/002_TLC_STORICO_NOW.txt
######################## FINE CONFIGURAZIONE DWHE2E_REPOSALDINETTI_BU ###################

View File

@@ -57,8 +57,8 @@ public class SFTPGetDaemon {
&& !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.MPA)
&& !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.DWHE2E)
&& !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.NOW_REGOLATORIO)
&& !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.NOW_XDSL)
&& !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.NOW_NGA)){
&& !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.DWHE2E_REPOSALDINETTI_CO)
&& !idSistemaRemoto.equalsIgnoreCase(ApplicationConstants.DWHE2E_REPOSALDINETTI_BU)){
log.fatal("Sistema remoto sconosciuto: " + idSistemaRemoto);
}
initConfig(idSistemaRemoto);

View File

@@ -20,6 +20,8 @@ public class ApplicationConstants {
public static final String NOW_REGOLATORIO = "NOW_REG"; // Utilizzato per la GET da NOW dei servizi regolamentati
public static final String NOW_XDSL = "NOW_XDSL"; // Utilizzato per la GET da NOW dei servizi xDSL
public static final String NOW_NGA = "NOW_NGA"; // Utilizzato per la GET da NOW dei servizi NGA
public static final String DWHE2E_REPOSALDINETTI_CO = "DWHE2E_REPOSALDINETTI_CO";
public static final String DWHE2E_REPOSALDINETTI_BU = "DWHE2E_REPOSALDINETTI_BU";
public static final String EXTENSION_CTR = "ctr";
public static final String EXTENSION_GZ = "gz";

View File

@@ -6,7 +6,8 @@
<session-factory>
<property name="connection.username">GNP</property>
<property name="connection.password">GNP</property>
<property name="connection.url">jdbc:oracle:thin:@(description=(address=(host=10.166.19.163)(protocol=tcp)(port=1521))(connect_data=(service_name=MNP)))</property>
<property name="connection.url">jdbc:oracle:thin:@(description=(address=(host=10.13.196.42)(protocol=tcp)(port=1540))(connect_data=(service_name=V0NCSIDBCFX.griffon.local)))</property>
<!-- <property name="connection.url">jdbc:oracle:thin:@(description=(address=(host=10.166.19.163)(protocol=tcp)(port=1521))(connect_data=(service_name=MNP)))</property> -->
<!--<property name="connection.url">jdbc:oracle:thin:@(description=(address=(host=v0g61-scan.griffon.local)(protocol=tcp)(port=1521))(connect_data=(service_name=V0NCSIDBCFX.griffon.local)))</property> -->
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>

View File

@@ -1354,6 +1354,14 @@
<foreign-key>
<many-to-one exclude="true" />
</foreign-key>
</table>
</table>
<table name="GNP_DWHE2E_SALDINETTI_IN">
<primary-key>
<generator class="sequence">
<param name="sequence">SEQ_DWE2EREPORT</param>
</generator>
</primary-key>
</table>
</hibernate-reverse-engineering>

View File

@@ -304,6 +304,10 @@
<mapping resource="it/valueteam/gnp/dao/db/hb/GnpStatoNngRec.hbm.xml" />
<!-- FINE NNG 103-->
<!-- INIZIO DWHE2E REPORTISTICA SALDI NETTI -->
<mapping resource="it/valueteam/gnp/dao/db/hb/GnpDwhe2eSaldiNettiIn.hbm.xml" />
<!-- FINE DWHE2E REPORTISTICA SALDI NETTI -->
<!-- cache settings -->
<class-cache class="it.valueteam.gnp.dao.db.hb.GnpFlussoinBatchPatternIn" usage="read-only"/>
<class-cache class="it.valueteam.gnp.dao.db.hb.GnpFlussoinBatchPattern" usage="read-only"/>

View File

@@ -0,0 +1,60 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 10-gen-2018 17.34.20 by Hibernate Tools 3.2.0.CR1 -->
<hibernate-mapping>
<class name="it.valueteam.gnp.dao.db.hb.GnpDwhe2eSaldiNettiIn" table="GNP_DWHE2E_SALDINETTI_IN">
<id name="uniqueId" type="java.lang.Long">
<column name="UNIQUE_ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_DWE2EREPORT</param>
</generator>
</id>
<property name="nomeFile" type="string">
<column name="NOME_FILE" length="50" />
</property>
<property name="crm" type="string">
<column name="CRM" length="2" />
</property>
<property name="idRichiesta" type="java.lang.Long">
<column name="ID_RICHIESTA" precision="22" scale="0" />
</property>
<property name="linea" type="string">
<column name="LINEA" length="15" />
</property>
<property name="cor" type="string">
<column name="COR" length="50" />
</property>
<property name="dataCessazione" type="date">
<column name="E2E_DATA_CESSAZIONE" length="7" />
</property>
<property name="servizioAccesso" type="string">
<column name="E2E_SERVIZIO_ACCESSO" length="12" />
</property>
<property name="dimensione1" type="string">
<column name="E2E_DIMENSIONE_1" length="10" />
</property>
<property name="dimensione2" type="string">
<column name="E2E_DIMENSIONE_2" length="50" />
</property>
<property name="dimensione3" type="string">
<column name="E2E_DIMENSIONE_3" length="1000" />
</property>
<property name="dimensione4" type="string">
<column name="E2E_DIMENSIONE_4" length="1000" />
</property>
<property name="dimensione5" type="string">
<column name="E2E_DIMENSIONE_5" length="1000" />
</property>
<property name="dbcfxDimCodiceOlo" type="string">
<column name="DBCFX_DIM_CODICE_OLO" length="3" />
</property>
<property name="dbcfxDimTipoUscita" type="string">
<column name="DBCFX_DIM_TIPO_USCITA" length="30" />
</property>
<property name="dbcfxDimDelibera" type="string">
<column name="DBCFX_DIM_DELIBERA" length="20" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,276 @@
package it.valueteam.gnp.internalflow.in;
import it.valueteam.crontab.processexecutor.ProcessIF;
import it.valueteam.gnp.dao.db.hb.GnpVerificaCsWhitelist;
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.Resources;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Dwhe2eRepoSaldiNettiIn implements Loggable, ProcessIF {
private ProcessLogger log;
//TODO EDL verificare il codice processo
private static final String codiceProcesso = "IG";
private static final String versione = "1.0.0";
private String separator = ";";
private static final String ESTRAZIONE_FULL = "FULL";
private static final String ESTRAZIONE_DELTA = "DELTA";
private static final String CONSUMER = "CO";
private static final String BUSINESS = "BU";
public Dwhe2eRepoSaldiNettiIn() throws Exception {
try {
initLog();
} catch (Exception ex) {
System.out.println("Errore nell'inizializzazione di Dwhe2eRepoSaldiNettiIn");
throw ex;
}
}
private void initLog() throws Exception {
LogProcess logProcess = new LogProcess();
logProcess.setCodice(codiceProcesso);
logProcess.setProcess(this);
log = new ProcessLogger(logProcess);
}
/**
* Inizia il processo di creazione del file
*
* @param args String[]
*/
public void execute(String[] args) throws Exception {
log.write("9999", " CRMB ");
try {
if (args.length == 1 && (ESTRAZIONE_FULL.equalsIgnoreCase(args[0]) || ESTRAZIONE_DELTA.equalsIgnoreCase(args [0]))) {
readFile(args[0]);
} else {
log.write("9999", "Creazione file non eseguita. Inserire parametro (FULL o DELTA) e (DONOR)");
}
} catch (Exception ex) {
//0003 C - PROCESSO TERMINATO CON ECCEZIONI
log.write("0003", "" + ex.toString());
ex.printStackTrace();
//Termino l'esecuzione ritornando un errore a chi mi ha eseguito
throw ex;
}
}
private void readFile(String arg) throws Exception{
//argomento full o delta
log.write("9999", "Start Dwhe2eRepoSaldiNettiIn");
String resourceParam;
if(ESTRAZIONE_FULL.equalsIgnoreCase(arg)) {
resourceParam = Resources.getDWHE2E_REPOSALDINETTI_FULL();
} else {
resourceParam = Resources.getDWHE2E_REPOSALDINETTI_DELTA();
}
List<String> listFileName = getListFileName(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_IN());
readFilesAndStore(listFileName,resourceParam);
log.write("9999", "End readFileAndGetList");
/*
*/
}//chiude metodo
private List<String> getListFileName(String folderName) throws Exception {
log.write("9999", "Start getFiles for folder "+folderName);
List<String> listFileName = new ArrayList<String>();
try {
File folder = new File(folderName);
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
if (file.isFile()) {
log.write("9999", "file presente "+file.getName());
listFileName.add(file.getName());
}
}
}catch(Exception ex) {
log.write("9999", "Excetpion in getListFileName " +ex.getMessage());
throw ex;
}
log.write("9999", "END getFiles");
return listFileName;
}
private void readFilesAndStore(List<String> listFileName, String resourceParam) throws Exception {
log.write("9999", "Start readFiles");
for(String fileName : listFileName) {
String estensioneFname = fileName.substring(fileName.lastIndexOf("."),fileName.length());
if (estensioneFname.equals(Resources.getDWHE2E_REPOSALDINETTI_FILENAME_EXT())) {
String piattaforma = null;
if (fileName.contains("_CON_")) {
piattaforma = this.CONSUMER;
} else if (fileName.contains("_BUS_"))
piattaforma = this.BUSINESS;
//lista di oggetti tabella in senza i dati di FX
List<GnpVerificaCsWhitelist> listForFile = readFileAndGetList(fileName);
//AGGIUNGI ad ogni oggetto i dati di FX ricercando in tabelle
// e salva nel db. Per evitare di scorrere la lista 2 volte!
this.aggiungiInfoAndSave(listForFile,resourceParam,piattaforma);
}
}
log.write("9999", "End readFiles");
}
// TODO MODIFICA LE CLASSI una volta generate dai file HB
private List<GnpVerificaCsWhitelist> readFileAndGetList(String fileName) throws Exception {
log.write("9999", "Start readFileAndGetList");
List<GnpVerificaCsWhitelist> listForFile = new ArrayList<GnpVerificaCsWhitelist>();
try {
log.write("9999", "file da elaborare "+Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_IN()+fileName);
File wlFile = new File(Resources.getPATH_FILE_DWHE2E_REPOSALDINETTI_IN()+fileName);
Scanner reader = new Scanner(wlFile);
int row=0;
int firstRowHeader= 0;
while (reader.hasNextLine()) {
if(row == firstRowHeader) {
reader.nextLine();
}else {
//passo file name per inserirlo nella tabella
GnpVerificaCsWhitelist gnpVerificaCsWhitelist = getDataFromLine(reader.nextLine(),fileName);
listForFile.add(gnpVerificaCsWhitelist);
}
row++;
}
reader.close();
backupFile(wlFile,fileName);
} catch (Exception e) {
log.write("9999", "exception in readFileAndGetList "+e.getMessage());
throw e;
}
return listForFile;
}
private void backupFile(File wlFile, String fileName) {
log.write("9999", "Start backup file");
wlFile.renameTo(new File(Resources.getDWHE2E_REPOSALDINETTI_BACKUP_IN()+"backup_"+fileName));
log.write("9999", "Backup effettuato "+Resources.getDWHE2E_REPOSALDINETTI_BACKUP_IN()+fileName);
}
private GnpVerificaCsWhitelist getDataFromLine(String line, String nomeFile) {
log.write("9999", "start getDataFromLine line= "+line);
String[] parts = line.split(separator);
GnpVerificaCsWhitelist gnpVerificaCsWhitelist = new GnpVerificaCsWhitelist();
// TODO non dimenticare filename
/* aggiungi i dati provenienti dal file in SENZA i dati fx
gnpVerificaCsWhitelist.setNumeroTelefono(parts[0]);
gnpVerificaCsWhitelist.setCodiceSegreto(parts[1]);
gnpVerificaCsWhitelist.setCodiceFiscalePartitaIva(parts[2]);
gnpVerificaCsWhitelist.setSistComp(parts[3]);
gnpVerificaCsWhitelist.setFlagVerificaCs(parts[4]);
*/
log.write("9999", "Created obj gnpVerificaCsWhitelist "+gnpVerificaCsWhitelist.toString());
log.write("9999", "End getDataFromLine");
return gnpVerificaCsWhitelist;
}
// TODO
private void aggiungiInfoAndSave(List<GnpVerificaCsWhitelist> listadwhe2ein,String resourceParam, String piattaforma){
//instanzia la classe DAO
//daodel82 d82dao = new daodel82();
//daodel274 d274dao = new daodel274();
//DAO per il save IN
// daodwhe2e daodwhe2e = new daodwhe2e()
//effettua la ricerca nelle tabelle sfruttando resourceParam DELTA/FULL e piattaforma e aggiorna i campi dbcfx
/*
for(oggettodwhe2ein : listadwhe2ein){
del82Entity dent82 = d82dao.find(oggettodwhe2ein.getid(), resourcesParam, piattaforma)
if (dent82!=null){
oggettodwhe2ein.popolaAggiuntDBCFX(del82.getcodiceOlo(),del82.getTipoUscita,del82.getDelibera)
daodwhe2e.save(oggettodwhe2ein);
continue;
}
del274Entity del274 = d274dao.find(oggettodwhe2ein.getid(), resourcesParam, piattaforma)
if (del274!=null){
oggettodwhe2ein.popolaAggiuntDBCFX(del274.getcodiceOlo(),del274.getTipoUscita,del274.getDelibera)
daodwhe2e.save(oggettodwhe2ein);
continue;
}
...
}
*/
}
/**
* Interfaccia ProcessExecutor
* Ritorniamo sempre false perche' gestiamo le TX internamente
*
* @return boolean
*/
public boolean requiredTX() {
return false;
}
/**
* getLogInfo
*
* @return LogInfo
*/
public LogInfo getLogInfo() {
LogInfo logInfo = new LogInfo();
logInfo.setProcess(getClass().getName());
logInfo.setLogPath(Resources.getLogPath());
logInfo.setTypeInfo(Resources.getTypeInfo());
logInfo.setTypeDebug(Resources.getTypeDebug());
logInfo.setTypeError(Resources.getTypeError());
return logInfo;
}
}

View File

@@ -3279,4 +3279,37 @@ public class Resources {
init();
return Trim(props.getProperty("TIMEOUT_WIRELINE_CEASE_CHECK82"));
}
public static String getPATH_FILE_DWHE2E_REPOSALDINETTI_IN() {
if (props == null)
init();
return Trim(props.getProperty("PATH_FILE_DWHE2E_REPOSALDINETTI_IN"));
}
public static String getDWHE2E_REPOSALDINETTI_BACKUP_IN() {
if (props == null)
init();
return Trim(props.getProperty("DWHE2E_REPOSALDINETTI_BACKUP_IN"));
}
public static String getDWHE2E_REPOSALDINETTI_FILENAME_EXT() {
if (props == null)
init();
return Trim(props.getProperty("DWHE2E_REPOSALDINETTI_FILENAME_EXT"));
}
public static String getDWHE2E_REPOSALDINETTI_FULL() {
if (props == null)
init();
return Trim(props.getProperty("DWHE2E_REPOSALDINETTI_FULL"));
}
public static String getDWHE2E_REPOSALDINETTI_DELTA() {
if (props == null)
init();
return Trim(props.getProperty("DWHE2E_REPOSALDINETTI_DELTA"));
}
}