First Commit from Source Code Reply

This commit is contained in:
vincenzofariello
2024-05-09 17:40:24 +02:00
parent 11e3b57c5b
commit 107a016cb9
35225 changed files with 1111346 additions and 1 deletions

View File

@@ -0,0 +1,14 @@
package it.valueteam.gnpsim.generator.flat;
public interface FlatGeneratorIF {
public static final int NO_DAC = 0;
public static final String ESITO_OK= "OK";
public static final String ESITO_KO= "KO";
public static final String TIPO_COM_PIC="5";
public static final String TIPO_COM_VALIDAZIONE="6";
public static final String CAUSALE_RIF_FORMALE="1";
public static final String CAUSALE_RIF_GESTIONALE="2";
public static final String CAUSALE_RIF_COD_SESS="3";
public void generateFlat(String[] args) throws Exception;
}

View File

@@ -0,0 +1,248 @@
/**
*
*/
package it.valueteam.gnpsim.generator.flat;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRec;
import it.valueteam.gnpsim.base.SimGenerator;
import it.valueteam.gnpsim.database.SimDAO;
import it.valueteam.gnpsim.utility.DateUtils;
import it.valueteam.gnpsim.utility.IOUtility;
import it.valueteam.gnpsim.utility.SimConfFile;
import it.valueteam.infotracciati.FlowMaker;
import it.valueteam.infotracciati.exception.BadFieldFormatException;
import it.valueteam.infotracciati.exception.BadFlowException;
import it.valueteam.infotracciati.exception.BadPositionException;
import it.valueteam.infotracciati.exception.FillPositionException;
import it.valueteam.infotracciati.exception.GenericException;
import it.valueteam.infotracciati.exception.NotValidXMLException;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.ValidationException;
/**
* @author Carmelo
*
*/
public class FlatPitagoraRegolatorioGenerator extends SimGenerator implements FlatGeneratorIF {
private static Properties propReg = SimConfFile.getInstance().ReadSection("pitagoraregolatorio");
private static String TIPO_COM = "TIPO_COM";
private static String COW = "COW";
private static String COD_ORD_REC = "COD_ORD_REC";
private static String COR1 = "COR1";
private static String COD_SESS_1 = "COD_SESS_1";
private static String COR2 = "COR2";
private static String COD_SESS_2 = "COD_SESS_2";
private static String DN1 = "DN1";
private static String DN2 = "DN2";
private static String DN3 = "DN3";
private static String DN4 = "DN4";
private static String DN5 = "DN5";
private static String DN6 = "DN6";
private static String DN7 = "DN7";
private static String DN8 = "DN8";
private static String DN9 = "DN9";
private static String DN10 = "DN10";
private static String STATO_RICHIESTA = "STATO_RICHIESTA";
private static String CAUSALE_RIFIUTO = "CAUSALE_RIFIUTO";
private static String COD_MOT_RIF = "COD_MOT_RIF";
private static String MOTIVO_RIF = "MOTIVO_RIF";
private static String DATA_ESPL = "DATA_ESPL";
private static String DAC = "DAC";
private static String DATA_NOTIFICA = "DATA_NOTIFICA";
private static String DRO = "DRO";
private static final String DATE_PATTERN = "dd/MM/yyyy";
private static final String FLOW_TYPE = "NOTIFICA_IN";
/* (non-Javadoc)
* @see it.valueteam.gnpsim.generator.flat.FlatGeneratorIF#generateFlat(java.lang.String[])
*/
public void generateFlat(String[] args) throws Exception {
if(args.length<4)
throw new IllegalArgumentException("Numero di parametri insufficienti");
try{
String tipoFlusso=args[0]; //5, 6, ALL
String esito = args[1]; //OK,KO
int aggiungiADac = NO_DAC;
String fileNameCSV = null;
String fileNameCTR = null;
GnpRichiesteRec[] richieste = null;
String[] records = null;
String codModRif = null;
SimDAO dao = new SimDAO();
if(!args[2].equals("NULL"))
aggiungiADac = Integer.parseInt(args[2]);
if(!args[3].equals("NULL"))
codModRif = args[3];
String dateFileName = toString(new Date(),
propReg.getProperty("FORMAT_DATE_FILE_NAME_REG"));
fileNameCSV = propReg.getProperty("PREFIX_FILE_VALIDAZIONE_REG")+dateFileName+propReg.getProperty("SUFFIX_FILE_VALIDAZIONE_REG")+propReg.getProperty("EXTENSION_FILE_VALIDAZIONE_REG");
fileNameCTR = propReg.getProperty("PREFIX_FILE_VALIDAZIONE_REG")+dateFileName+propReg.getProperty("SUFFIX_FILE_VALIDAZIONE_REG")+propReg.getProperty("EXTENSION_FILE_CTR_REG");
richieste=dao.getAll_TO_SEND_PITAGORA_REGOLATORIO();
if(richieste!=null && richieste.length>0){
records = createRecords(richieste, esito, aggiungiADac,codModRif, tipoFlusso);
IOUtility.writeFile(propReg.getProperty("GEN_PATH_REG") +fileNameCSV,records);
System.out.println("Creato File " + fileNameCSV);
IOUtility.writeFile(propReg.getProperty("GEN_PATH_REG") +fileNameCTR,null);
System.out.println("Creato File " + fileNameCTR);
}else{
System.out.println("NESSUN FILE DA CREARE");
}
}catch(Exception ex){
System.out.println("ERRORE DURANTE LA GENERAZIONE DEL FILE PER PITAGORA XDSL");
ex.printStackTrace();
}
}
/**
* @param richieste
* @param esito
* @param fileNameCSV
* @param aggiungiADac
* @param codModRif
* @return
* @throws Exception
*/
private String[] createRecords(GnpRichiesteRec[] richieste, String esito, int aggiungiADac, String codModRif, String tipoCom) throws Exception {
String[] records = new String[richieste.length];
System.out.println("NEW FLOWMAKER: PATH FILE - " + propReg.getProperty("PATH_INFOTRACCIATI_REG"));
FlowMaker flowMaker = null;
try {
flowMaker = new FlowMaker(propReg.getProperty("PATH_INFOTRACCIATI_REG"), FLOW_TYPE);
for (int i = 0; i < richieste.length; i++) {
String record = null;
try {
System.out.print("GENERATE FORMATTED RECORD " + i + "\n");
record = flowMaker.generateFormattedRecord(getMap(richieste[i],
esito, tipoCom, codModRif, aggiungiADac), true);
}
catch (BadPositionException ex1) {
ex1.printStackTrace();
throw new Exception();
}
catch (FillPositionException ex1) {
ex1.printStackTrace();
throw new Exception();
}
catch (BadFieldFormatException ex1) {
ex1.printStackTrace();
throw new Exception();
}
records[i] = record;
}
return records;
}
catch (NotValidXMLException ex) {
ex.printStackTrace();
throw new Exception();
}
catch (BadFlowException ex) {
ex.printStackTrace();
throw new Exception();
}
catch (ValidationException ex) {
ex.printStackTrace();
throw new Exception();
}
catch (IOException ex) {
ex.printStackTrace();
throw new Exception();
}
catch (MarshalException ex) {
ex.printStackTrace();
throw new Exception();
}
catch (GenericException ex) {
ex.printStackTrace();
throw new Exception();
}
}
/**
* @param rec
* @param esito
* @return
* @throws Exception
*/
private Map getMap(GnpRichiesteRec rec, String esito, String tipoCom, String codiceMotRif, int AggDac) throws Exception {
Map<String, Object> result = new HashMap<String, Object>();
result.put(TIPO_COM, tipoCom);
result.put(COW, rec.getCow());
result.put(COD_ORD_REC, rec.getIdEsigenza());
result.put(COR1, rec.getCor());
if(rec.getProcesso().equals("NPg") || rec.getProcesso().equals("FONIA_BKL")){
result.put(COD_SESS_1, "codiceSessionOLO");
}else{
result.put(COD_SESS_1, rec.getCodiceSessioneOlo());
}
result.put(COR2, rec.getCor2());
result.put(COD_SESS_2, "");
result.put(DN1, rec.getDn1());
result.put(DN2, rec.getDn2());
result.put(DN3, rec.getDn3());
result.put(DN4, rec.getDn4());
result.put(DN5, rec.getDn5());
result.put(DN6, rec.getDn6());
result.put(DN7, rec.getDn7());
result.put(DN8, rec.getDn8());
result.put(DN9, rec.getDn9());
result.put(DN10, rec.getDn10());
if(ESITO_KO.equals(esito)){
result.put(STATO_RICHIESTA, "1");
if(TIPO_COM_PIC.equals(tipoCom)){
result.put(CAUSALE_RIFIUTO, CAUSALE_RIF_FORMALE);
}else{
result.put(CAUSALE_RIFIUTO, CAUSALE_RIF_GESTIONALE);
}
result.put(COD_MOT_RIF, codiceMotRif);
result.put(MOTIVO_RIF, "descrizione motivo del rifiuto");
}else{
result.put(STATO_RICHIESTA, "0");
result.put(COD_MOT_RIF, "");
result.put(MOTIVO_RIF, "");
result.put(CAUSALE_RIFIUTO, "");
}
result.put(DATA_ESPL, DateUtils.toDate(toString(new Date(), DATE_PATTERN), DATE_PATTERN));
result.put(DAC, AggDac>0? DateUtils.aggiungiGiorniLavorativiTodate(rec.getDacCalcolata(), AggDac):rec.getDac());
result.put(DATA_NOTIFICA, DateUtils.toDate(toString(new Date(), DATE_PATTERN), DATE_PATTERN));
result.put(DRO, DateUtils.toDate(toString(new Date(), DATE_PATTERN), DATE_PATTERN));
return result;
}
}

View File

@@ -0,0 +1,291 @@
package it.valueteam.gnpsim.generator.flat;
import it.telecomitalia.xsd.crm.xdsl.order.DatiPrequalifica;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument.NOTIFICAOLOBITSTREAM;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument.NOTIFICAOLOBITSTREAM.INTESTAZIONE;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument.NOTIFICAOLOBITSTREAM.RICHIESTA;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument.NOTIFICAOLOBITSTREAM.RICHIESTA.DATIACCESSO;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument.NOTIFICAOLOBITSTREAM.RICHIESTA.DATIMIGRAZIONI;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument.NOTIFICAOLOBITSTREAM.RICHIESTA.DATIPrequalifica;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument.NOTIFICAOLOBITSTREAM.RICHIESTA.DATIREFERENTE;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument.NOTIFICAOLOBITSTREAM.RICHIESTA.DATIUserVlan;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument.NOTIFICAOLOBITSTREAM.RICHIESTA.DATIVC;
import it.telecomitalia.xsd.crm.xdsl.order.NOTIFICAOLOBITSTREAMDocument.NOTIFICAOLOBITSTREAM.RICHIESTA.DATIVLAN;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRec;
//import it.valueteam.gnp.dao.xml.pitagoraxdsl.pitagoraxdsltodbcfx.DATI_ACCESSO;
//import it.valueteam.gnp.dao.xml.pitagoraxdsl.pitagoraxdsltodbcfx.DATI_MIGRAZIONI;
//import it.valueteam.gnp.dao.xml.pitagoraxdsl.pitagoraxdsltodbcfx.DATI_VC;
//import it.valueteam.gnp.dao.xml.pitagoraxdsl.pitagoraxdsltodbcfx.INTESTAZIONE;
//import it.valueteam.gnp.dao.xml.pitagoraxdsl.pitagoraxdsltodbcfx.NOTIFICA_OLO_BITSTREAM;
//import it.valueteam.gnp.dao.xml.pitagoraxdsl.pitagoraxdsltodbcfx.RICHIESTA;
import it.valueteam.gnp.obj.StatoRichiestaRec;
import it.valueteam.gnpsim.base.SimGenerator;
import it.valueteam.gnpsim.database.SimDAO;
import it.valueteam.gnpsim.utility.DateUtils;
import it.valueteam.gnpsim.utility.IOUtility;
import it.valueteam.gnpsim.utility.SimConfFile;
import it.valueteam.gnpsim.utility.XmlUtility;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;
public class FlatPitagoraXdslGenerator extends SimGenerator implements FlatGeneratorIF{
private static Properties propXdsl = SimConfFile.getInstance().ReadSection("pitagoraxdsl");
//campi fissi del tracciato
private static final String DATE_10_FORMAT= "dd/MM/yyyy";
private static final String DATE_8_FORMAT= "ddMMyyyy";
private static final String DATE_16_FORMAT= "dd/MM/yyyy HH:mm";
private static final String INTEST_SISTEMA= "PITAGORA";
private static final String INTEST_COD_ISP= "002";
private static final String EMPTY= "";
private static final String COD_ISP_TELECOM= "002";
private static final String TIPO_RICHIESTA_MIG="MIG";
private static final String TIPO_SERVIZIO_I="I";
@SuppressWarnings("unused")
private static final String STATO_ACQUISIZIONE="AQ";
@SuppressWarnings("unused")
private static final String STATO_VER_TECNICHE="VT";
@SuppressWarnings("unused")
private static final String STATO_ACCETTAZIONE="AC";
private static final String COD_OPERATORE_REC= "TLC";
public FlatPitagoraXdslGenerator() {
}
/**
* generateFlat
*
* @param args String[]
* @return String
*/
public void generateFlat(String[] args) throws Exception{
if(args.length<5)
throw new IllegalArgumentException("Numero di parametri insufficienti");
try{
String tipoFlusso=args[0]; //5, 6, ALL
String esito = args[1]; //OK,KO
String stato = args[2]; //AQ|AC|CS|VT
int aggiungiADac = NO_DAC;
String fileNameXML = null;
String fileNameCTR = null;
GnpRichiesteRec[] richieste = null;
String xml = null;
String codModRif = null;
if(!args[3].equals("NULL"))
aggiungiADac = Integer.parseInt(args[3]);
if(!args[4].equals("NULL"))
codModRif = args[4];
String dateFileName = toString(new Date(),
propXdsl.getProperty("FORMAT_DATE_FILE_NAME"));
fileNameXML = propXdsl.getProperty("PREFIX_FILE_VALIDAZIONE")+dateFileName+propXdsl.getProperty("SUFFIX_FILE_VALIDAZIONE")+propXdsl.getProperty("EXTENSION_FILE_VALIDAZIONE");
fileNameCTR = propXdsl.getProperty("PREFIX_FILE_VALIDAZIONE")+dateFileName+propXdsl.getProperty("SUFFIX_FILE_VALIDAZIONE")+propXdsl.getProperty("EXTENSION_FILE_CTR");
richieste=getRequestToSend(tipoFlusso);
if(richieste!=null && richieste.length>0){
xml = createXml(richieste, esito, fileNameXML, aggiungiADac,codModRif, tipoFlusso.equals("ALL")?true:false, stato);
String[] records= {xml};
IOUtility.writeFile(propXdsl.getProperty("GEN_PATH_XDSL") +fileNameXML,records);
System.out.println("Creato File " + fileNameXML);
IOUtility.writeFile(propXdsl.getProperty("GEN_PATH_XDSL") +fileNameCTR,null);
System.out.println("Creato File " + fileNameCTR);
}else{
System.out.println("NESSUN FILE DA CREARE");
}
}catch(Exception ex){
System.out.println("ERRORE DURANTE LA GENERAZIONE DEL FILE PER PITAGORA XDSL");
ex.printStackTrace();
}
}
private GnpRichiesteRec[] getRequestToSend(String tipoFlusso) throws Exception {
SimDAO dao = new SimDAO();
GnpRichiesteRec[] richieste = null;
int stato = SimDAO.ALL_STATES_PITAGORA_XDSL;
if(tipoFlusso.equals("ALL")){
richieste = dao.getAll_TO_SEND_PITAGORA_XDSL(SimDAO.ALL_STATES_PITAGORA_XDSL);
}else{
if(tipoFlusso.equals(TIPO_COM_PIC)){
stato = StatoRichiestaRec.INVIATAPITAGORA;
}else if (tipoFlusso.equals(TIPO_COM_VALIDAZIONE)){
stato = StatoRichiestaRec.ACQUISITAPITAGORA;
}else{
throw new Exception("TIPO FLUSSO SCONOSCIUTO");
}
richieste = dao.getAll_TO_SEND_PITAGORA_XDSL(stato);
}
System.out.println("TROVATE " + richieste.length + " RICHIESTE DA GENERARE");
return richieste;
}
private String createXml(GnpRichiesteRec[] list, String esito, String nomeFile, int aggiungiADac, String codMotRif, boolean all, String stato) throws Exception{
//componenti del file xml
NOTIFICAOLOBITSTREAMDocument doc = NOTIFICAOLOBITSTREAMDocument.Factory.newInstance();
NOTIFICAOLOBITSTREAM notifica =doc.addNewNOTIFICAOLOBITSTREAM();
RICHIESTA richiesta = null;
INTESTAZIONE intest = null;
//creo l'intestazione
intest = createIntestazione(nomeFile);
ArrayList<RICHIESTA> app = new ArrayList<RICHIESTA>();
for(int i=0; i<list.length; i++){
notifica.setINTESTAZIONE(intest);
richiesta = createRichiesta(createDatiAccesso(list[i], getTipoCom(list[i].getStato()), esito, stato),
createDatiMigrazione(list[i], getTipoCom(list[i].getStato()), esito, aggiungiADac, codMotRif));
app.add(richiesta);
if (all&&list[i].getStato()==StatoRichiestaRec.INVIATAPITAGORA) {
notifica.setINTESTAZIONE(intest);
richiesta = createRichiesta(createDatiAccesso(list[i], TIPO_COM_VALIDAZIONE, esito, stato),
createDatiMigrazione(list[i], TIPO_COM_VALIDAZIONE, esito, aggiungiADac, codMotRif));
app.add(richiesta);
}
}
RICHIESTA[] rics = new RICHIESTA[app.size()];
for(int h=0;h<app.size();h++){
rics[h]=app.get(h);
}
notifica.setRICHIESTAArray(rics);
return doc.xmlText();
}
private RICHIESTA createRichiesta(DATIACCESSO accesso, DATIMIGRAZIONI migrazione) {
RICHIESTA richiesta = RICHIESTA.Factory.newInstance();
richiesta.setDATIACCESSO(accesso);
richiesta.setDATIMIGRAZIONI(migrazione);
richiesta.setDATIVC(DATIVC.Factory.newInstance());
richiesta.setDATIPrequalifica(DATIPrequalifica.Factory.newInstance());
richiesta.setDATIREFERENTE(DATIREFERENTE.Factory.newInstance());
richiesta.setDATIUserVlan(DATIUserVlan.Factory.newInstance());
richiesta.setDATIVLAN(DATIVLAN.Factory.newInstance());
return richiesta;
}
private String getTipoCom(Long stato) throws Exception {
if (StatoRichiestaRec.INVIATAPITAGORA==stato.intValue()) {
return TIPO_COM_PIC;
}
else if (StatoRichiestaRec.ACQUISITAPITAGORA==stato.intValue()){
return TIPO_COM_VALIDAZIONE;
}
else {
throw new Exception("Impossibile determinare il tipo di comunicazione per lo stato: " +stato);
}
}
private DATIACCESSO createDatiAccesso(GnpRichiesteRec rec, String tipoCom, String esito, String stato) throws Exception {
DATIACCESSO datiAccesso = DATIACCESSO.Factory.newInstance();
// populateBeanWithUnicValue(datiAccesso, EMPTY);
datiAccesso.setCODICEISP(COD_ISP_TELECOM);
datiAccesso.setCODICEORDINEISP(rec.getIdEsigenza());
datiAccesso.setTIPORICHIESTA(TIPO_RICHIESTA_MIG);
datiAccesso.setTIPOSERVIZIO(TIPO_SERVIZIO_I);
datiAccesso.setDATANOTIFICA(DateUtils.toString(new Date(),DATE_8_FORMAT));
datiAccesso.setSTATO(stato);
// if (TIPO_COM_PIC.equals(tipoCom)) {
// datiAccesso.setSTATO(STATO_ACQUISIZIONE);
// }
// else if (TIPO_COM_VALIDAZIONE.equals(tipoCom)) {
// if(esito.equals(ESITO_KO)){
// datiAccesso.setSTATO(STATO_VER_TECNICHE);
// }else{
// datiAccesso.setSTATO(STATO_ACCETTAZIONE);
// }
// }
// else {
// throw new Exception("Tipo Comunicazione Errato");
// }
return datiAccesso;
}
private DATIMIGRAZIONI createDatiMigrazione(GnpRichiesteRec rec,String tipoCom, String esito, int aggiungiADac, String codMotRif) throws Exception {
DATIMIGRAZIONI datiMig = DATIMIGRAZIONI.Factory.newInstance();
Date dataRif = new Date();
// populateBeanWithUnicValue(datiMig, EMPTY);
datiMig.setCODICEOPERATORERECIPIENT(COD_OPERATORE_REC);
datiMig.setCODICEORDINERECIPIENT(rec.getIdEsigenza());
datiMig.setCODICERISORSA1(rec.getCor());
datiMig.setDATAESPLETAMENTOORDINE(DateUtils.toString(dataRif, DATE_10_FORMAT));
datiMig.setDATANOTIFICA(DateUtils.toString(dataRif, DATE_10_FORMAT));
datiMig.setDATARICEZIONEORDINE(DateUtils.toString(dataRif, DATE_10_FORMAT));
datiMig.setSTATO(esito);
datiMig.setDAC(DateUtils.toString(rec.getDac(), DATE_10_FORMAT));
datiMig.setCODICEOPERATOREDONATING(rec.getCow());
datiMig.setCODICEORDINEPITAGORA(rec.getIdEsigenza());
datiMig.setCODICESESSIONE1(rec.getCodiceSessioneOlo());
if(rec.getDacCalcolata() != null)
datiMig.setDAC(DateUtils.aggiungiGiorniLavorativi(DateUtils.toString(rec.getDacCalcolata(), DATE_10_FORMAT), aggiungiADac));
if (TIPO_COM_PIC.equals(tipoCom)) {
datiMig.setTIPOCOMUNICAZIONE(TIPO_COM_PIC);
if(esito.equals(ESITO_KO)){
datiMig.setCAUSALERIFIUTO("1");
datiMig.setCODICEMOTIVORIFIUTO(codMotRif);
datiMig.setMOTIVORIFIUTO("motivo rifiuto");
}
}
else if (TIPO_COM_VALIDAZIONE.equals(tipoCom)) {
datiMig.setTIPOCOMUNICAZIONE(TIPO_COM_VALIDAZIONE);
if(esito.equals(ESITO_KO)){
datiMig.setCAUSALERIFIUTO("1");
datiMig.setCODICEMOTIVORIFIUTO(codMotRif);
datiMig.setMOTIVORIFIUTO("motivo rifiuto");
}else{
datiMig.setCAUSALERIFIUTO("");
datiMig.setCODICEMOTIVORIFIUTO("");
datiMig.setMOTIVORIFIUTO("");
}
}
else {
throw new Exception("Tipo Comunicazione Errato");
}
return datiMig;
}
private INTESTAZIONE createIntestazione(String nomeFile) throws Exception {
INTESTAZIONE intest = INTESTAZIONE.Factory.newInstance();
//populateBeanWithUnicValue(intest, EMPTY);
Date dataRif = new Date();
intest.setCODICEISP(INTEST_COD_ISP);
intest.setNOMEFILE(nomeFile);
intest.setSISTEMA(INTEST_SISTEMA);
intest.setDATACREAZIONEFILE(DateUtils.toString(dataRif, DATE_16_FORMAT));
intest.setNUMEROPRATICHE("000000");
intest.setNUMEROPRATICHECHIUSEOK("000000");
intest.setNUMEROPRATICHECHIUSEKO("000000");
intest.setNUMERONOTIFICHEINTERMEDIE("000000");
return intest;
}
}

View File

@@ -0,0 +1,548 @@
package it.valueteam.gnpsim.generator.ib;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRec;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRecExt;
import it.valueteam.gnp.dao.xml.crm.crmtodbcfx.NotificaFromCRM;
import it.valueteam.gnp.dao.xml.crm.crmtodbcfx.voip35.DN;
import it.valueteam.gnp.dao.xml.crm.crmtodbcfx.voip35.NotificaVOIPFromCRM;
import it.valueteam.gnp.obj.CRMMap;
import it.valueteam.gnp.obj.ProcessMapper;
import it.valueteam.gnpsim.base.SimGenerator;
import it.valueteam.gnpsim.database.SimDAO;
import it.valueteam.gnpsim.obj.SystemMap;
import it.valueteam.gnpsim.utility.DateUtils;
import java.util.Date;
public class XMLCrmGenerator extends SimGenerator implements XMLGeneratorIF {
private static int MIN_PARAMS_NUMBER = 2; // Numero minimo di parametri
private static int MIN_PARAMS_NUMBER_RIENTRO = 7; // Numero minimo di parametri per Rientro
private static int MIN_PARAMS_NUMBER_RIENTRO_DD = 12; // Numero minimo di parametri se Rientro Doppio Donating
private static int IDX_TIPO_CHIAMATA = 0; // Indice del parametro Tipo Chiamata
private static int IDX_TIPO_EVENTO = 1; // Indice del parametro Tipo Evento
private static int IDX_PIATT_PROV = 2; // Indice del parametro Piattaforma di Provenienza
private static int IDX_COW = 3; // Indice del parametro COW
private static int IDX_NUM_TOT_RICH = 4; // Indice del parametro Numero Totale di Richieste
private static int IDX_COS = 5; // Indice del parametro COS
private static int IDX_FLAG_DICHIARAZIONE=6; // Indice del parametro Flag Dichiarazione
private static int IDX_ID_PADRE=7; // Indice del parametro Id-esigenza padre
private static int IDX_COW2=8; // Indice del parametro COW2 se Doppio Donating
private static int IDX_COS2 = 9; // Indice del parametro COS2 se Doppio Donating
private static int IDX_FLAG_NAKED=10; // Indice del parametro FLAG_NAKED se Doppio Donating
private static int IDX_FLAG_GNR=11; // Indice del parametro FLAG_GNR se Doppio Donating
private static int IDX_FLAG_CONSIP=12; // Indice del parametro FLAG_CONSIP se Doppio Donating
private static int IDX_CODICE_PROGETTO=13; // Indice del parametro CODICE_PROGETTO
private static int IDX_FLAG_SKY = 14; // Indice del parametro FLAG_SKY
private static int IDX_FLAG_VERTICALIZZATO = 15;// Indice del parametro FLAG_VERTICALIZZATO
private static int IDX_RN = 16;// Indice del parametro FLAG_VERTICALIZZATO
private static int IDX_SECOND_DONOR = 17;// Indice del parametro SECOND DONOR
private static String NULL_VALUE_STRING = "NULL"; // Stringa che rappresenta il valore nullo
public XMLCrmGenerator() {
}
/**
* generateXml
*
* @param args String[]
* @return String
*/
public String generateXml(String[] args, int tipoSistema) throws Exception {
if(args.length<MIN_PARAMS_NUMBER)
throw new IllegalArgumentException("Numero di parametri insufficienti");
boolean isDoppioDonating = args[IDX_TIPO_CHIAMATA].equals(CRMMap.CHIAMATA_DOPPIO_DONATING);
if(isDoppioDonating)
return generateXmlDD(args, tipoSistema);
boolean isRientro = args[IDX_TIPO_EVENTO].equals(CRMMap.EVENTO_RIENTRO) || args[IDX_TIPO_EVENTO].equals(CRMMap.EVENTO_RIENTRO_NATIVIOLO);
if(isRientro && args.length < MIN_PARAMS_NUMBER_RIENTRO)
throw new IllegalArgumentException("Numero di parametri insufficienti per RIENTRO");
String idEsigenzaSolution = null;
NotificaFromCRM notifica = new NotificaFromCRM();
notifica.setTIPO_CHIAMATA(args[IDX_TIPO_CHIAMATA]);
notifica.setTIPO_EVENTO(args[IDX_TIPO_EVENTO]);
//se l'evento e' di rientro allora creo un nuovo id
if(isRientro)
{
idEsigenzaSolution = getIdEsigenzaSolution();
notifica.setID_ESIGENZA(idEsigenzaSolution);
notifica.setID_SOLUTION(idEsigenzaSolution);
notifica.setCANALE_PROVENIENZA(randomCanaleProvenienzaCRM());
String numeroTelefono = getTelefono(10);
notifica.setNUMERO_TELEFONO(numeroTelefono);
notifica.setFLAG_DICHIARAZIONE(args[IDX_FLAG_DICHIARAZIONE]);
notifica.setPIATTAFORMA_PROVENIENZA(args[IDX_PIATT_PROV]);
if("ALL".equals(args[IDX_COW]))
notifica.setCOW(randomCodiceOlo());
else
notifica.setCOW(args[IDX_COW]);
String numTotRichieste = args[IDX_NUM_TOT_RICH];
String cos = null;
if(NULL_VALUE_STRING.equals(args[IDX_COS]))
cos = getRandomCos();
else
cos = args[IDX_COS];
/*
* ATTENZIONE: l'XSD aggiornato prevede che se COS = 007,
* TIPO_CHIAMATA deve valere NAKED
*/
String cor = getTelefono(12);
notifica.setCOS(cos);
notifica.setCOS2(cos);
notifica.setCOR(cor);
notifica.setCODICE_FISCALE_PARTIVA_IVA(getCodiceFiscalePartitaIVA());
notifica.setRECAPITO_ALTERNATIVO(getTelefono(15));
notifica.setNOMINATIVO_CLIENTE(randomNomeCliente()+" "+ randomCognomeCliente());
notifica.setSLA(getSla());
notifica.setDAC(getDacCrm());
notifica.setCOR2(cor);
//String dn = getTelefono(10);
int numToRichiesteInt = 0;
if(!numTotRichieste.equals(NULL_VALUE_STRING)) {
numToRichiesteInt = Integer.parseInt(numTotRichieste);
}
notifica.setDN1(numeroTelefono);
if( numToRichiesteInt >= 2 ){
notifica.setDN2(getTelefono(10));
notifica.setSTATO_DN2("OK");
}
if( numToRichiesteInt >= 3 ){
notifica.setDN3(getTelefono(10));
notifica.setSTATO_DN3("OK");
}
if( numToRichiesteInt >= 4 ){
notifica.setDN4(getTelefono(10));
notifica.setSTATO_DN4("OK");
}
if( numToRichiesteInt >= 5 ){
notifica.setDN5(getTelefono(10));
notifica.setSTATO_DN5("OK");
}
if( numToRichiesteInt >= 6 ){
notifica.setDN6(getTelefono(10));
notifica.setSTATO_DN6("OK");
}
if( numToRichiesteInt >= 7 ){
notifica.setDN7(getTelefono(10));
notifica.setSTATO_DN7("OK");
}
if( numToRichiesteInt >= 8 ){
notifica.setDN8(getTelefono(10));
notifica.setSTATO_DN8("OK");
}
if( numToRichiesteInt >= 9 ){
notifica.setDN9(getTelefono(10));
notifica.setSTATO_DN9("OK");
}
if( numToRichiesteInt >= 10 ){
notifica.setDN10(getTelefono(10));
notifica.setSTATO_DN10("OK");
}
notifica.setCOD_CANALE_VENDITA(getRandomCanaleVendita());
notifica.setCOD_MARCAGGIO_CLIENTE(getRandomMarcaggio());
if(!numTotRichieste.equals(NULL_VALUE_STRING)){
//notifica.setCOD_CORRELAZIONE(getCodiceCorrelazioneCRM());
notifica.setNUM_TOT_RICHIESTE(numTotRichieste);
}
notifica.setFLAG_GNR("N");
notifica.setID_OL("G-ID0000");
notifica.setCODICE_OL("000");
notifica.setFLAG_CONSIP("N");
// aggiunta cristiano X6 2013
notifica.setMODULO_CC("modulo_cc");
notifica.setMODULO_PARTNER("modulo_partner");
notifica.setPROTOCOLLO_DMS("protocollo_DMS");
notifica.setDATA_CREAZIONE_SR("12-12-2012 12:12:12");
notifica.setDATA_CHIUSURA_CRM("12-12-2012 12:12:12");
notifica.setCAUSALE_KO("Non si accomoda piu'");
if (args[IDX_ID_PADRE]!= null && !NULL_VALUE_STRING.equals(args[IDX_ID_PADRE]) ) notifica.setID_PADRE(args[IDX_ID_PADRE]);
if (args.length > IDX_CODICE_PROGETTO && !NULL_VALUE_STRING.equals(args[IDX_CODICE_PROGETTO]) ) {
notifica.setCODICE_PROGETTO(args[IDX_CODICE_PROGETTO]);
}
else {
notifica.setCODICE_PROGETTO(getRandomCodiceProgetto());
}
// MULTI_DONOR
if(2 == numToRichiesteInt) {
if (((args[IDX_TIPO_CHIAMATA].equals(CRMMap.CHIAMATA_NATIVIOLO) ||
(args[IDX_TIPO_CHIAMATA].equals(CRMMap.CHIAMATA_NATIVIOLO103))) &&
args[IDX_TIPO_EVENTO].equals(CRMMap.EVENTO_RIENTRO_NATIVIOLO)) ||
((args[IDX_TIPO_CHIAMATA].equals(CRMMap.CHIAMATA_NPg35) ||
(args[IDX_TIPO_CHIAMATA].equals(CRMMap.CHIAMATA_NPg103))) &&
args[IDX_TIPO_EVENTO].equals(CRMMap.EVENTO_RIENTRO))) {
if("ALL".equals(args[IDX_SECOND_DONOR])) {
notifica.setTI_COW_DN2(randomCodiceOlo());
} else {
notifica.setTI_COW_DN2(args[IDX_SECOND_DONOR]);
}
}
}
// TIPO_CHIAMATA=OLO35 e TIPO_EVENTO=NATIVIOLO
if ((args[IDX_TIPO_CHIAMATA].equals(CRMMap.CHIAMATA_NATIVIOLO) ||
(args[IDX_TIPO_CHIAMATA].equals(CRMMap.CHIAMATA_NATIVIOLO103))) &&
args[IDX_TIPO_EVENTO].equals(CRMMap.EVENTO_RIENTRO_NATIVIOLO)) {
// Imposta COW e COW2
if ("ALL".equals(args[IDX_COW2]))
notifica.setCOW2(randomCodiceOlo());
else
notifica.setCOW2(args[IDX_COW2]);
if (NULL_VALUE_STRING.equals(args[IDX_COS2]))
notifica.setCOS2(getRandomCos());
else
notifica.setCOS2(args[IDX_COS2]);
}
if (tipoSistema == SystemMap.SISTEMA_CRMR) {
if (args.length > IDX_FLAG_SKY && !NULL_VALUE_STRING.equals(args[IDX_FLAG_SKY])) {
notifica.setFLAG_SKY(args[IDX_FLAG_SKY]);
} else {
notifica.setFLAG_SKY(getRandomFlag());
}
}
}
else //altrimenti prendo quello settato nel properties come ID_ESIGENZA_MANUALE
{
idEsigenzaSolution = getIdEsigenzaManuale();
setValuesFromDB(notifica, idEsigenzaSolution);
notifica.setFLAG_GNR("N");
notifica.setFLAG_CONSIP("N");
}
if (args.length > IDX_FLAG_VERTICALIZZATO && !NULL_VALUE_STRING.equals(args[IDX_FLAG_VERTICALIZZATO])) {
notifica.setFLAG_VERTICALIZZATO(args[IDX_FLAG_VERTICALIZZATO]);
} else {
notifica.setFLAG_VERTICALIZZATO("N");
}
if (args.length > IDX_RN && !NULL_VALUE_STRING.equals(args[IDX_RN])) {
notifica.setRN(args[IDX_RN]);
}
if(args[IDX_TIPO_EVENTO].equals(CRMMap.EVENTO_ESPLETAMENTO) && args[IDX_TIPO_CHIAMATA].equals(ProcessMapper.proc_RIENTRO_ADSL)){
notifica.setDET(getDetCrm());
}
if(args[IDX_TIPO_EVENTO].equals(CRMMap.EVENTO_KO_PITAGORA) && args[IDX_TIPO_CHIAMATA].equals(ProcessMapper.proc_RIENTRO_FONIA)){
notifica.setCAUSALE_RIFIUTO("1:CAUSALE DA PITAGORA");
}
notifica.setDATA_OPERAZIONE(DateUtils.toString(new Date(),"dd-MM-yyyy HH:mm:ss"));
return getXmlFromCastorObject(notifica,true);
}
// Generazione per Doppio Donating
private String generateXmlDD(String[] args, int tipoSistema) throws Exception {
if(args.length < MIN_PARAMS_NUMBER)
throw new IllegalArgumentException("Numero di parametri insufficienti (Doppio Donating)");
boolean isRientro = args[IDX_TIPO_EVENTO].equals(CRMMap.EVENTO_RIENTRO);
if(isRientro && args.length < MIN_PARAMS_NUMBER_RIENTRO_DD)
throw new IllegalArgumentException("Numero di parametri insufficienti per RIENTRO Doppio Donating");
String idEsigenzaSolution = null;
String tipoChiamata = args[IDX_TIPO_CHIAMATA];
NotificaFromCRM notifica = new NotificaFromCRM();
notifica.setTIPO_CHIAMATA(tipoChiamata);
notifica.setTIPO_EVENTO(args[IDX_TIPO_EVENTO]);
if(isRientro)
{
idEsigenzaSolution = getIdEsigenzaSolution();
notifica.setPIATTAFORMA_PROVENIENZA(args[IDX_PIATT_PROV]);
notifica.setID_ESIGENZA(idEsigenzaSolution);
notifica.setID_SOLUTION(idEsigenzaSolution);
notifica.setCANALE_PROVENIENZA(randomCanaleProvenienzaCRM());
notifica.setNUMERO_TELEFONO(getTelefono(10));
notifica.setFLAG_DICHIARAZIONE(args[IDX_FLAG_DICHIARAZIONE]);
// Imposta COW e COW2
if("ALL".equals(args[IDX_COW]))
notifica.setCOW(randomCodiceOlo());
else
notifica.setCOW(args[IDX_COW]);
// Imposta COW e COW2
if("ALL".equals(args[IDX_COW2]))
notifica.setCOW2(randomCodiceOlo());
else
notifica.setCOW2(args[IDX_COW2]);
String numTotRichieste = args[IDX_NUM_TOT_RICH];
// Imposta COS e COS2
String cos = null;
if(NULL_VALUE_STRING.equals(args[IDX_COS])){
cos = getRandomCos();
// se cos='007' tipochiamata DEVE essere Naked
while( !"NAKED".equals(tipoChiamata) && "007".equals(cos) )
cos = getRandomCos();
}
else
cos = args[IDX_COS];
String cos2 = null;
if(NULL_VALUE_STRING.equals(args[IDX_COS2]))
cos2 = getRandomCos();
else
cos2 = args[IDX_COS2];
String cor = getTelefono(12);
String cor2 = getTelefono(12);
notifica.setCOS(cos);
notifica.setCOS2(cos2);
notifica.setCOR(cor);
notifica.setCODICE_FISCALE_PARTIVA_IVA(getCodiceFiscalePartitaIVA());
notifica.setRECAPITO_ALTERNATIVO(getTelefono(15));
notifica.setNOMINATIVO_CLIENTE(randomNomeCliente()+" "+ randomCognomeCliente());
notifica.setSLA(getSla());
notifica.setDAC(getDacCrm());
notifica.setCOR2(cor2);
String dn = getTelefono(12);
notifica.setDN1(dn);
notifica.setDN2(dn);
notifica.setDN3(dn);
notifica.setDN4(dn);
notifica.setDN5(dn);
notifica.setDN6(dn);
notifica.setDN7(dn);
notifica.setDN8(dn);
notifica.setDN9(dn);
notifica.setDN10(dn);
notifica.setDATA_OPERAZIONE(DateUtils.toString(new Date(),"dd-MM-yyyy HH:mm:ss"));
if(!numTotRichieste.equals(NULL_VALUE_STRING)){
// codice correlazione va settato solo se la richiesta viene da CRM-Business
// if("B".equals(args[IDX_PIATT_PROV]))
// notifica.setCOD_CORRELAZIONE(getCodiceCorrelazioneCRM());
notifica.setNUM_TOT_RICHIESTE(numTotRichieste);
}
notifica.setCOD_CANALE_VENDITA(getRandomCanaleVendita());
notifica.setCOD_MARCAGGIO_CLIENTE(getRandomMarcaggio());
if(NULL_VALUE_STRING.equals(args[IDX_FLAG_NAKED]))
notifica.setFLAG_NAKED("");
else
notifica.setFLAG_NAKED(args[IDX_FLAG_NAKED]);
if(NULL_VALUE_STRING.equals(args[IDX_FLAG_GNR]))
notifica.setFLAG_GNR("");
else
notifica.setFLAG_GNR(args[IDX_FLAG_GNR]);
if(NULL_VALUE_STRING.equals(args[IDX_FLAG_CONSIP]))
notifica.setFLAG_CONSIP("");
else
notifica.setFLAG_CONSIP(args[IDX_FLAG_CONSIP]);
if (tipoSistema == SystemMap.SISTEMA_CRMR) {
if (args.length > IDX_FLAG_SKY && !NULL_VALUE_STRING.equals(args[IDX_FLAG_SKY])) {
notifica.setFLAG_SKY(args[IDX_FLAG_SKY]);
} else {
notifica.setFLAG_SKY(getRandomFlag());
}
}
}
else //altrimenti prendo quello settato nel properties come ID_ESIGENZA_MANUALE
{
idEsigenzaSolution = getIdEsigenzaManuale();
setValuesFromDB(notifica, idEsigenzaSolution);
}
return getXmlFromCastorObject(notifica,true);
}
protected void setValuesFromDB(NotificaFromCRM notifica, String idEsigenza)
throws Exception
{
SimDAO simDao = new SimDAO();
GnpRichiesteRec richiesta = simDao.getByIdEsigenza(idEsigenza);
if(richiesta == null)
throw new Exception("Richiesta non trovata per ID_ESIGENZA " + idEsigenza);
notifica.setID_ESIGENZA(idEsigenza);
notifica.setID_SOLUTION(idEsigenza);
notifica.setCANALE_PROVENIENZA(richiesta.getCanaleProvenienza());
notifica.setNUMERO_TELEFONO(richiesta.getNumeroTelefono());
notifica.setPIATTAFORMA_PROVENIENZA(richiesta.getPiattaformaProvenienza());
notifica.setCOW(richiesta.getCow());
if(richiesta.getCow2() != null)
notifica.setCOW2(richiesta.getCow2());
if(richiesta.getFlagDichiarazione() != null)
notifica.setFLAG_DICHIARAZIONE(richiesta.getFlagDichiarazione());
else
notifica.setFLAG_DICHIARAZIONE("1");
if(richiesta.getCos() != null)
notifica.setCOS(richiesta.getCos());
if(richiesta.getCos2() != null)
notifica.setCOS2(richiesta.getCos2());
if(richiesta.getCor() != null)
notifica.setCOR(richiesta.getCor());
if(richiesta.getCor2() != null)
notifica.setCOR2(richiesta.getCor2());
if(richiesta.getCodiceFiscalePartitaIva() != null)
notifica.setCODICE_FISCALE_PARTIVA_IVA(richiesta.getCodiceFiscalePartitaIva());
if(richiesta.getRecapitoAlternativo() != null)
notifica.setRECAPITO_ALTERNATIVO(richiesta.getRecapitoAlternativo());
if(richiesta.getNominativoCliente() != null)
notifica.setNOMINATIVO_CLIENTE(richiesta.getNominativoCliente());
// Questi vanno comunque letti da property
notifica.setSLA(getSla());
notifica.setDAC(getDacCrm());
if(richiesta.getDn1() != null)
notifica.setDN1(richiesta.getDn1());
if(richiesta.getDn2() != null)
notifica.setDN2(richiesta.getDn2());
if(richiesta.getDn3() != null)
notifica.setDN3(richiesta.getDn3());
if(richiesta.getDn4() != null)
notifica.setDN4(richiesta.getDn4());
if(richiesta.getDn5() != null)
notifica.setDN5(richiesta.getDn5());
if(richiesta.getDn6() != null)
notifica.setDN6(richiesta.getDn6());
if(richiesta.getDn7() != null)
notifica.setDN7(richiesta.getDn7());
if(richiesta.getDn8() != null)
notifica.setDN8(richiesta.getDn8());
if(richiesta.getDn9() != null)
notifica.setDN9(richiesta.getDn9());
if(richiesta.getDn10() != null)
notifica.setDN10(richiesta.getDn10());
GnpRichiesteRecExt richiestaExt = simDao.getRichiestaExtById(richiesta.getIdRichiesta());
if(richiestaExt != null && richiestaExt.getCanaleVendita() != null)
notifica.setCOD_CANALE_VENDITA(richiestaExt.getCanaleVendita());
if(richiestaExt != null && richiestaExt.getMarcaggio() != null)
notifica.setCOD_MARCAGGIO_CLIENTE(richiestaExt.getMarcaggio());
if(richiesta.getFlagNaked() != null)
notifica.setFLAG_NAKED(richiesta.getFlagNaked().toString());
}
/**
* generateXml
*
* @param args String[]
* @return String
*/
public String generateXmlVoip(String[] args) throws Exception {
if (args.length < MIN_PARAMS_NUMBER)
throw new IllegalArgumentException("Numero di parametri insufficienti");
boolean isRientro = args[IDX_TIPO_EVENTO].equals(CRMMap.EVENTO_RIENTRO);
if (isRientro && args.length < MIN_PARAMS_NUMBER_RIENTRO)
throw new IllegalArgumentException("Numero di parametri insufficienti per RIENTRO");
NotificaVOIPFromCRM notifica = new NotificaVOIPFromCRM();
String idEsigenzaSolution = null;
//se l'evento e' di rientro allora creo un nuovo id
if (isRientro) {
idEsigenzaSolution = getIdEsigenzaSolution();
notifica.setTIPO_CHIAMATA(args[IDX_TIPO_CHIAMATA]);
notifica.setTIPO_EVENTO(args[IDX_TIPO_EVENTO]);
notifica.setID_ESIGENZA(idEsigenzaSolution);
notifica.setPIATTAFORMA_PROVENIENZA(args[IDX_PIATT_PROV]);
if ("ALL".equals(args[IDX_COW]))
notifica.setCOW(randomCodiceOlo());
else
notifica.setCOW(args[IDX_COW]);
//String numTotRichieste = args[IDX_NUM_TOT_RICH];
notifica.setNOMINATIVO_CLIENTE(randomNomeCliente() + " " + randomCognomeCliente());
notifica.setCODICE_FISCALE_PARTIVA_IVA(getCodiceFiscalePartitaIVA());
notifica.setRECAPITO_ALTERNATIVO(getTelefono(15));
notifica.setDAC(getDacCrm());
notifica.setRNB("");
notifica.setDATA_OPERAZIONE(DateUtils.toString(new Date(), "dd-MM-yyyy HH:mm:ss"));
notifica.setCOD_CANALE_VENDITA(getRandomCanaleVendita());
notifica.setCOD_MARCAGGIO_CLIENTE(getRandomMarcaggio());
notifica.setID_OL_FITTIZIO("G-ID0000");
notifica.setFLAG_CONSIP("N");
notifica.setCODICE_PROGETTO("COD_PROGETTO");
notifica.setMODULO_CC("modulo_cc");
notifica.setMODULO_PARTNER("modulo_partner");
notifica.setPROTOCOLLO_DMS("protocollo_DMS");
notifica.setDATA_CREAZIONE_SR("12-12-2013 15:16:17");
notifica.setDATA_CHIUSURA_SR("12-12-2013 15:16:17");
notifica.setCAUSALE_KO_PDC("Non si accomoda piu'");
if (args[IDX_ID_PADRE] != null && !NULL_VALUE_STRING.equals(args[IDX_ID_PADRE])) {
notifica.setID_PADRE(args[IDX_ID_PADRE]);
}
String numeroTelefono = getTelefono(12);
DN dn = new DN();
dn.setNUM_TEL(numeroTelefono);
dn.setDONOR(randomCodiceOlo());
dn.setPRIMARIO(null);
dn.setRADICALE("");
dn.setCLASSIFICAZIONE("");
} else { //altrimenti prendo quello settato nel properties come ID_ESIGENZA_MANUALE
idEsigenzaSolution = getIdEsigenzaManuale();
//setValuesFromDB(notifica, idEsigenzaSolution);
notifica.setFLAG_CONSIP("N");
}
return getXmlFromCastorObject(notifica, true);
}
}

View File

@@ -0,0 +1,6 @@
package it.valueteam.gnpsim.generator.ib;
public interface XMLGeneratorIF {
public String generateXml(String[] args, int tipoSistema) throws Exception;
}

View File

@@ -0,0 +1,27 @@
package it.valueteam.gnpsim.generator.ib;
import java.util.Date;
import it.valueteam.gnp.dao.xml.crm.crmtodbcfx.NotificaHZFromCRM;
import it.valueteam.gnpsim.base.SimGenerator;
import it.valueteam.gnpsim.utility.DateUtils;
public class XMLHZCrmrGenerator extends SimGenerator implements XMLGeneratorIF {
private static final String NIP_N_TIM = "NIP N TIM";
private static final String ESPLETAMENTO = "ESPLETAMENTO";
public String generateXml(String[] args, int tipoSistema) throws Exception {
NotificaHZFromCRM notifica = new NotificaHZFromCRM();
notifica.setID_SOLUTION(getIdEsigenzaSolution());
notifica.setNUMERO_TELEFONO(getTelefono(10));
notifica.setTIPO_CHIAMATA(NIP_N_TIM);
notifica.setTIPO_EVENTO(ESPLETAMENTO);
notifica.setDET(DateUtils.toString(new Date(),"dd-MM-yyyy HH:mm:ss"));
notifica.setDATA_OPERAZIONE(DateUtils.toString(new Date(),"dd-MM-yyyy HH:mm:ss"));
return getXmlFromCastorObject(notifica,true);
}
}

View File

@@ -0,0 +1,163 @@
package it.valueteam.gnpsim.generator.olo;
import it.valueteam.gnp.dao.xml.olo.gnpolo.response.Parametri;
import it.valueteam.gnp.dao.xml.olo.gnpolo.response.Response;
import it.valueteam.gnp.dao.xml.olo.gnpolo.response.Xml2;
import it.valueteam.gnp.dao.xml.olo.gnpolo.response.types.Type_causaleRifiuto;
import it.valueteam.gnp.dao.xml.olo.gnpolo.response.types.Type_statoRichiesta;
import it.valueteam.gnp.obj.ApplicationCostants;
import it.valueteam.gnp.obj.StatoRichiestaDoppioDonating;
import it.valueteam.gnp.obj.StatoRichiestaRec;
import it.valueteam.gnpsim.base.SimGenerator;
import it.valueteam.gnpsim.obj.CausaliRifiutoOloDTO;
import it.valueteam.gnpsim.obj.OloReplyDto;
public class OLOGenerator extends SimGenerator implements OLOGeneratorIF {
private static final int PARAM_MIN=1; // Numero minimo di parametri
private static final int IDX_TIPO_ESITO=0; // Indice del parametro del tipo di esito da OLO
private static final int IDX_TIPO_KO=1; // Indice del parametro che tipo KO (opzionale)
private static final int TIPO_RICH_STANDARD=1;
// private static final int TIPO_RICH_DOPPIO_DONATING=2;
private int tipoRichieste;
// TIPI DI FLUSSO DA GENERARE
private static final int FILE_ACCETTAZIONE = 1;
private static final int FILE_VALIDAZIONE = 2;
private static final int FILE_MUTATA_VOLONTA = 3;
// TIPI DI COMUNICAZIONE
private static final int TIPO_COMUNICAZIONE_FORMALE = 2;
private static final int TIPO_COMUNICAZIONE_GESTIONALE = 3;
private static final int TIPO_COMUNICAZIONE_MUT_VOL = 5;
public OLOGenerator(int tipoRichieste) {
this.tipoRichieste = tipoRichieste;
}
/**
* generate
*
* @param args
* String[]
* @return String
*/
public String generate(String[] args, String olo, int tipoFile) throws Exception {
if (args.length < PARAM_MIN)
throw new Exception("Numero di parametri insufficienti!");
String esito = args[IDX_TIPO_ESITO];
int tipoKO=DEFAULT_KO;
if(args.length > PARAM_MIN)
try{
tipoKO = Integer.parseInt(args[IDX_TIPO_KO]);
}catch(Exception ex){
System.out.println("Parametro tipoKO non numerico, in tipoKO randomico, forse avrai fortuna...");
}
switch (tipoFile) {
case FILE_ACCETTAZIONE: {
return generaXML(olo, esito,TIPO_COMUNICAZIONE_FORMALE, tipoKO);
}
case FILE_VALIDAZIONE: {
return generaXML(olo, esito, TIPO_COMUNICAZIONE_GESTIONALE, tipoKO);
}
case FILE_MUTATA_VOLONTA: {
return generaXML(olo, esito, TIPO_COMUNICAZIONE_MUT_VOL, tipoKO);
}
default:
throw new Exception("Tipo flusso sconosciuto!");
}
}
private String generaXML(String codOlo, String esito, int tipoComunicazione, int tipoKO) throws Exception {
String xmlResult = null;
OloReplyDto[] request= getRequestToReply(codOlo, getStatoByTipoComunicazione(tipoComunicazione), tipoRichieste);
if (request != null && request.length > 0) {
Xml2 listaRisposte = new Xml2();
for (int i = 0; i < request.length; i++) {
Response response = new Response();
Parametri parametri = new Parametri();
parametri.setTipoComunicazione(String.valueOf(tipoComunicazione));
parametri.setCodiceOperatoreRecipient(ApplicationCostants.COD_OLO_TELECOM);
parametri.setCodiceOrdineRecipient(request[i].getIdEsigenza());
parametri.setCodiceOLODonating(codOlo);
parametri.setCodiceRisorsa1(request[i].getCor());
parametri.setCodiceRisorsa2(!isNull(request[i].getCor2())?request[i].getCor():"");
if(esito.equals("OK")){
// value 0
parametri.setStatoRichiesta(Type_statoRichiesta.VALUE_1);
//value ""
parametri.setCausaleRifiuto(Type_causaleRifiuto.VALUE_0);
parametri.setCodiceMotivoRifiuto("");
parametri.setMotivoRifiuto("");
}else{
CausaliRifiutoOloDTO causali = getInfoOloKO(tipoComunicazione, tipoKO);
// value 0
parametri.setStatoRichiesta(Type_statoRichiesta.VALUE_2);
//value causali.getCausaleRifiuto()
parametri.setCausaleRifiuto(Type_causaleRifiuto.valueOf(causali.getCausaleRifiuto()));
//parametri.setStatoRichiesta(String.valueOf(ESITO_KO));
//parametri.setCausaleRifiuto(Type_causaleRifiuto(causali.getCausaleRifiuto().toString()));
parametri.setCodiceMotivoRifiuto(causali.getCodiceMotivo_rifiuto().toString());
parametri.setMotivoRifiuto(causali.getMotivoRifiuto());
}
parametri.setNumerazioneErrata("");
response.setParametri(parametri);
response.setCodiceOrdineRecipient(request[i].getIdEsigenza());
parametri.setCodiceSessione(getCodiceSessione());
listaRisposte.addResponse(response);
}
xmlResult = getXmlFromCastorObject(listaRisposte, true);
}
return xmlResult;
}
private int getStatoByTipoComunicazione(int tipoComunicazione) throws Exception{
switch(tipoComunicazione){
case TIPO_COMUNICAZIONE_FORMALE:
if(tipoRichieste == TIPO_RICH_STANDARD)
return StatoRichiestaRec.INVIATA;
else
return StatoRichiestaDoppioDonating.INVIATA;
case TIPO_COMUNICAZIONE_GESTIONALE:
if(tipoRichieste == TIPO_RICH_STANDARD)
return StatoRichiestaRec.ACCETTATA;
else
return StatoRichiestaDoppioDonating.ACCETTATA;
case TIPO_COMUNICAZIONE_MUT_VOL:
return -1;
default:
throw new Exception("Tipo comunicazione sconosciuto: " + tipoComunicazione);
}
}
}

View File

@@ -0,0 +1,8 @@
package it.valueteam.gnpsim.generator.olo;
public interface OLOGeneratorIF {
public String generate(String[] args, String olo, int tipoFile) throws Exception;
}

View File

@@ -0,0 +1,322 @@
package it.valueteam.gnpsim.generator.ws;
import it.telecomitalia.crmaffari.dbcfx.acqservicev1.NotificaFromCRM;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRec;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRecExt;
import it.valueteam.gnp.obj.CRMMap;
import it.valueteam.gnp.obj.ProcessMapper;
import it.valueteam.gnpsim.database.SimDAO;
import it.valueteam.gnpsim.utility.DateUtils;
import java.util.Date;
import java.util.Random;
public class WSCRMAGenerator extends WSGeneratorIF {
private final static String soapHeaderOpen = "<soapenv:Header><head:SOAPHeader>";
private final static String soapHeaderClose = "</head:SOAPHeader></soapenv:Header>";
private static int MIN_PARAMS_NUMBER = 2; // Numero minimo di parametri
private static int MIN_PARAMS_NUMBER_RIENTRO = 6; // Numero minimo di parametri per Rientro
private static int IDX_TIPO_CHIAMATA = 0; // Indice del parametro Tipo Chiamata
private static int IDX_TIPO_EVENTO = 1; // Indice del parametro Tipo Evento
private static int IDX_COW = 2; // Indice del parametro COW
private static int IDX_NUM_TOT_RICH = 3; // Indice del parametro Numero Totale di Richieste
private static int IDX_COS = 4; // Indice del parametro COS
private static int IDX_FLAG_DICHIARAZIONE=5;// Indice del parametro Flag Dichiarazione
private static String NULL_VALUE_STRING = "NULL"; // Stringa che rappresenta il valore nullo
private String tipoChiamata;
private String tipoEvento;
private String cow;
private String numTotRichieste;
private String cos;
private String flagDichiarazione;
private String idEsigenzaSolution = null;
public WSCRMAGenerator(String args[])
{
if(args.length<MIN_PARAMS_NUMBER)
throw new IllegalArgumentException("Numero di parametri insufficienti");
tipoChiamata = args[IDX_TIPO_CHIAMATA];
tipoEvento = args[IDX_TIPO_EVENTO];
// Questa parte solo in caso di RIENTRO
if(tipoEvento.equals(CRMMap.EVENTO_RIENTRO))
{
if(args.length < MIN_PARAMS_NUMBER_RIENTRO)
throw new IllegalArgumentException("Numero di parametri insufficienti per RIENTRO");
cow = args[IDX_COW];
numTotRichieste = args[IDX_NUM_TOT_RICH];
cos = args[IDX_COS];
flagDichiarazione = args[IDX_FLAG_DICHIARAZIONE];
idEsigenzaSolution = getIdEsigenzaSolution();
}
else
{
idEsigenzaSolution = getIdEsigenzaManuale();
}
}
@Override
public String getSOAPEpilogue() {
return "</soapenv:Envelope>";
}
@Override
public String getSOAPHeader(Object obj) {
StringBuffer buffer = new StringBuffer();
buffer.append(soapHeaderOpen);
buffer.append("<head:IDMsg>");
buffer.append(calcRandomID(30));
buffer.append("</head:IDMsg>");
buffer.append("<head:SRC>");
buffer.append("CRM_A");
buffer.append("</head:SRC>");
buffer.append("<head:SIDMsgType>");
buffer.append("NOTIFICA_RIENTRO");
buffer.append("</head:SIDMsgType>");
buffer.append("<head:SIDMsgCode>");
buffer.append(tipoEvento);
buffer.append("</head:SIDMsgCode>");
buffer.append(soapHeaderClose);
return buffer.toString();
}
@Override
public String getSOAPPrologue() {
return "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
"xmlns:head=\"http://www.ESB/SOAP/Header\" " +
"xmlns:acq=\"http://telecomitalia.it/crmaffari/dbcfx/acqservice-v1\">";
}
public String getSoapBodyOpen()
{
return "<soapenv:Body>";
}
public String getSoapBodyClose()
{
return "</soapenv:Body>";
}
private NotificaFromCRM getNotificaFromCRM()
throws Exception
{
NotificaFromCRM notificaFromCRMA = new NotificaFromCRM();
notificaFromCRMA.setTIPO_CHIAMATA(tipoChiamata);
notificaFromCRMA.setTIPO_EVENTO(tipoEvento);
notificaFromCRMA.setSLA(getSla());
notificaFromCRMA.setDAC(getDacCrm());
notificaFromCRMA.setDATA_OPERAZIONE(DateUtils.toString(new Date(),"dd-MM-yyyy HH:mm:ss"));
if(tipoEvento.equals(CRMMap.EVENTO_RIENTRO))
newNotificaFromCRM(notificaFromCRMA);
else
setValuesFromDB(notificaFromCRMA);
return notificaFromCRMA;
}
private void newNotificaFromCRM(NotificaFromCRM notificaFromCRMA)
throws Exception
{
notificaFromCRMA.setID_ESIGENZA(idEsigenzaSolution);
notificaFromCRMA.setID_SOLUTION(idEsigenzaSolution);
notificaFromCRMA.setPIATTAFORMA_PROVENIENZA("A");
if("ALL".equals(cow))
notificaFromCRMA.setCOW(randomCodiceOlo());
else
notificaFromCRMA.setCOW(cow);
notificaFromCRMA.setCANALE_PROVENIENZA(randomCanaleProvenienzaCRM());
notificaFromCRMA.setNUMERO_TELEFONO(getTelefono(10));
notificaFromCRMA.setFLAG_DICHIARAZIONE(flagDichiarazione);
if(NULL_VALUE_STRING.equals(cos))
notificaFromCRMA.setCOS(getRandomCos());
else
notificaFromCRMA.setCOS(cos);
notificaFromCRMA.setCOR(getTelefono(12));
notificaFromCRMA.setCODICE_FISCALE_PARTIVA_IVA(getCodiceFiscalePartitaIVA());
notificaFromCRMA.setRECAPITO_ALTERNATIVO(getTelefono(15));
notificaFromCRMA.setNOMINATIVO_CLIENTE(randomNomeCliente()+" "+ randomCognomeCliente());
notificaFromCRMA.setDN1(getTelefono(12));
if(numTotRichieste != null && !numTotRichieste.equals(NULL_VALUE_STRING)){
notificaFromCRMA.setCOD_CORRELAZIONE(getCodiceCorrelazioneCRM());
notificaFromCRMA.setNUM_TOT_RICHIESTE(numTotRichieste);
}
notificaFromCRMA.setCOD_CANALE_VENDITA(getRandomCanaleVendita());
notificaFromCRMA.setCOD_MARCAGGIO_CLIENTE(getRandomMarcaggio());
}
private void setValuesFromDB(NotificaFromCRM notificaFromCRMA)
throws Exception
{
SimDAO simDao = new SimDAO();
GnpRichiesteRec richiesta = simDao.getByIdEsigenza(idEsigenzaSolution);
if(richiesta == null)
throw new Exception("Richiesta non trovata");
if(tipoEvento.equals(CRMMap.EVENTO_MIGRAZIONE)) {
if(!richiesta.getPiattaformaProvenienza().equals(CRMMap.PIATTAFORMA_B))
throw new Exception("Evento MIGRAZIONE incompatibile con ID_ESIGENZA " + idEsigenzaSolution);
}
notificaFromCRMA.setID_ESIGENZA(idEsigenzaSolution);
notificaFromCRMA.setPIATTAFORMA_PROVENIENZA(richiesta.getPiattaformaProvenienza());
notificaFromCRMA.setCOW(richiesta.getCow());
notificaFromCRMA.setCANALE_PROVENIENZA(richiesta.getCanaleProvenienza());
notificaFromCRMA.setNUMERO_TELEFONO(richiesta.getNumeroTelefono());
if(richiesta.getFlagDichiarazione() != null )
notificaFromCRMA.setFLAG_DICHIARAZIONE(richiesta.getFlagDichiarazione());
else
notificaFromCRMA.setFLAG_DICHIARAZIONE("1");
notificaFromCRMA.setCOS(richiesta.getCos());
notificaFromCRMA.setCOR(richiesta.getCor());
notificaFromCRMA.setCODICE_FISCALE_PARTIVA_IVA(richiesta.getCodiceFiscalePartitaIva());
notificaFromCRMA.setRECAPITO_ALTERNATIVO(richiesta.getRecapitoAlternativo());
notificaFromCRMA.setNOMINATIVO_CLIENTE(richiesta.getNominativoCliente());
notificaFromCRMA.setDN1(richiesta.getDn1());
GnpRichiesteRecExt richiestaExt = simDao.getRichiestaExtById(richiesta.getIdRichiesta());
if(richiestaExt != null && richiestaExt.getCanaleVendita() != null)
notificaFromCRMA.setCOD_CANALE_VENDITA(richiestaExt.getCanaleVendita());
else
notificaFromCRMA.setCOD_CANALE_VENDITA("");
if(richiestaExt != null && richiestaExt.getMarcaggio() != null)
notificaFromCRMA.setCOD_MARCAGGIO_CLIENTE(richiestaExt.getMarcaggio());
else
notificaFromCRMA.setCOD_MARCAGGIO_CLIENTE("");
if(tipoEvento.equals(CRMMap.EVENTO_ESPLETAMENTO) && tipoChiamata.equals(ProcessMapper.proc_RIENTRO_ADSL)){
notificaFromCRMA.setDET(getDetCrm());
}
if(tipoEvento.equals(CRMMap.EVENTO_KO_PITAGORA) && tipoChiamata.equals(ProcessMapper.proc_RIENTRO_FONIA)){
notificaFromCRMA.setCAUSALE_RIFIUTO("1:CAUSALE DA PITAGORA");
}
if(tipoEvento.equals(CRMMap.EVENTO_MIGRAZIONE)) {
notificaFromCRMA.setID_SOLUTION(getIdEsigenzaSolution());
notificaFromCRMA.setPIATTAFORMA_PROVENIENZA("A");
}
}
@Override
public String getData(Object obj) throws Exception {
StringBuffer buffer = new StringBuffer();
NotificaFromCRM notificaFromCRMA = getNotificaFromCRM();
buffer.append("<acq:NotificaFromCRM>");
buffer.append("<ID_ESIGENZA>");
buffer.append(notificaFromCRMA.getID_ESIGENZA());
buffer.append("</ID_ESIGENZA>");
buffer.append("<ID_SOLUTION>");
buffer.append(notificaFromCRMA.getID_SOLUTION());
buffer.append("</ID_SOLUTION>");
buffer.append("<TIPO_CHIAMATA>");
buffer.append(notificaFromCRMA.getTIPO_CHIAMATA());
buffer.append("</TIPO_CHIAMATA>");
buffer.append("<TIPO_EVENTO>");
buffer.append(notificaFromCRMA.getTIPO_EVENTO());
buffer.append("</TIPO_EVENTO>");
buffer.append("<PIATTAFORMA_PROVENIENZA>");
buffer.append(notificaFromCRMA.getPIATTAFORMA_PROVENIENZA());
buffer.append("</PIATTAFORMA_PROVENIENZA>");
buffer.append("<COW>");
buffer.append(notificaFromCRMA.getCOW());
buffer.append("</COW>");
buffer.append("<CANALE_PROVENIENZA>");
buffer.append(notificaFromCRMA.getCANALE_PROVENIENZA());
buffer.append("</CANALE_PROVENIENZA>");
buffer.append("<NUMERO_TELEFONO>");
buffer.append(notificaFromCRMA.getNUMERO_TELEFONO());
buffer.append("</NUMERO_TELEFONO>");
buffer.append("<FLAG_DICHIARAZIONE>");
buffer.append(notificaFromCRMA.getFLAG_DICHIARAZIONE());
buffer.append("</FLAG_DICHIARAZIONE>");
buffer.append("<COS>");
buffer.append(notificaFromCRMA.getCOS());
buffer.append("</COS>");
buffer.append("<COR>");
buffer.append(notificaFromCRMA.getCOR());
buffer.append("</COR>");
buffer.append("<CODICE_FISCALE_PARTIVA_IVA>");
buffer.append(notificaFromCRMA.getCODICE_FISCALE_PARTIVA_IVA());
buffer.append("</CODICE_FISCALE_PARTIVA_IVA>");
buffer.append("<RECAPITO_ALTERNATIVO>");
buffer.append(notificaFromCRMA.getRECAPITO_ALTERNATIVO());
buffer.append("</RECAPITO_ALTERNATIVO>");
buffer.append("<NOMINATIVO_CLIENTE>");
buffer.append(notificaFromCRMA.getNOMINATIVO_CLIENTE());
buffer.append("</NOMINATIVO_CLIENTE>");
buffer.append("<SLA>");
buffer.append(notificaFromCRMA.getSLA());
buffer.append("</SLA>");
buffer.append("<DAC>");
buffer.append(notificaFromCRMA.getDAC());
buffer.append("</DAC>");
if(notificaFromCRMA.getDET() != null){
buffer.append("<DET>");
buffer.append(notificaFromCRMA.getDET());
buffer.append("</DET>");
}
buffer.append("<DN1>");
buffer.append(getTelefono(12));
buffer.append("</DN1>");
if(notificaFromCRMA.getCAUSALE_RIFIUTO() != null){
buffer.append("<CAUSALE_RIFIUTO>");
buffer.append(notificaFromCRMA.getCAUSALE_RIFIUTO());
buffer.append("</CAUSALE_RIFIUTO>");
}
buffer.append("<DATA_OPERAZIONE>");
buffer.append(notificaFromCRMA.getDATA_OPERAZIONE());
buffer.append("</DATA_OPERAZIONE>");
if(notificaFromCRMA.getCOD_CORRELAZIONE() != null){
buffer.append("<COD_CORRELAZIONE>");
buffer.append(notificaFromCRMA.getCOD_CORRELAZIONE());
buffer.append("</COD_CORRELAZIONE>");
buffer.append("<NUM_TOT_RICHIESTE>");
buffer.append(notificaFromCRMA.getNUM_TOT_RICHIESTE());
buffer.append("</NUM_TOT_RICHIESTE>");
}
buffer.append("<COD_CANALE_VENDITA>");
buffer.append(notificaFromCRMA.getCOD_CANALE_VENDITA());
buffer.append("</COD_CANALE_VENDITA>");
buffer.append("<COD_MARCAGGIO_CLIENTE>");
buffer.append(notificaFromCRMA.getCOD_MARCAGGIO_CLIENTE());
buffer.append("</COD_MARCAGGIO_CLIENTE>");
buffer.append("</acq:NotificaFromCRM>");
return buffer.toString();
}
private String calcRandomID(int len) {
Random random = new Random();
int num = (int)Math.ceil(Math.pow(2, 63)/len);
return Long.toString(Math.abs(random.nextLong()), num);
}
@Override
public String getFileName(Object obj) {
return "CRMA_" + tipoEvento + "_" + idEsigenzaSolution + ".xml";
}
}

View File

@@ -0,0 +1,147 @@
package it.valueteam.gnpsim.generator.ws;
import dbcfx.soa.esitofrodimgmt.x20160229.EsitoFrodiRequest;
import dbcfx.soa.wirelinenumberportabilitymgmt.x20160229.RichiestaAttivazioneRequest;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRec;
import it.valueteam.gnp.obj.CRMMap;
import it.valueteam.gnpsim.base.SimGenerator;
import it.valueteam.gnpsim.database.SimDAO;
import it.valueteam.gnpsim.utility.DateUtils;
import java.util.Date;
import java.util.Random;
public class WSDBSSGenerator extends SimGenerator {
private static final String DATE_FORMAT = "dd-MM-yyyy HH:mm:ss";
private String idEsigenzaSolution;
public WSDBSSGenerator(String args[])
{
String tipoEvento = args[2];
//solo in caso di RIENTRO
if(tipoEvento.equals(CRMMap.EVENTO_RIENTRO))
{
idEsigenzaSolution = getIdEsigenzaSolution();
}
else
{
idEsigenzaSolution = getIdEsigenzaManuale();
}
}
public RichiestaAttivazioneRequest[] generateRichiestaAttivazioneRequest(int n, String[] args) {
RichiestaAttivazioneRequest[] reqs = new RichiestaAttivazioneRequest[n];
//RichiestaAttivazioneRequest req = null;
try {
for (int i = 0; i < n; i++) {
if (!CRMMap.EVENTO_RIENTRO.equals(args[2])) {
reqs[i] = getDataFromDb(args);
} else {
reqs[i] = new RichiestaAttivazioneRequest();
reqs[i].setID_ESIGENZA(getIdEsigenzaSolution());
}
reqs[i].setORDER_ITEM_ID(getRandomString(30, false));
reqs[i].setID_SOLUTION(getIdEsigenzaSolution());
reqs[i].setTIPO_EVENTO(args[2]);
reqs[i].setTIPO_CHIAMATA(args[3]);
reqs[i].setPIATTAFORMA_PROVENIENZA("D");
if (!args[4].equalsIgnoreCase("NULL")) {
reqs[i].setCANALE_PROVENIENZA(args[4]);
} else {
reqs[i].setCANALE_PROVENIENZA(randomCanaleProvenienzaDBSS());
}
reqs[i].setNUMERO_TELEFONO(args[5]);
reqs[i].setCOR(getTelefono(12));
reqs[i].setCOW(args[6]);
if (!args[7].equalsIgnoreCase("NULL")) reqs[i].setCOS(args[7]);
reqs[i].setNOMINATIVO_CLIENTE(randomNomeCliente() + " " + randomCognomeCliente());
reqs[i].setCODICE_FISCALE_PARTIVA_IVA(getCodiceFiscalePartitaIVA());
reqs[i].setRECAPITO_ALTERNATIVO(getTelefono(15));
reqs[i].setSLA(getSla());
reqs[i].setDAC(getDacCrm());
reqs[i].setDET(getDetCrm());
reqs[i].setCOR2(getTelefono(12));
if (!args[8].equalsIgnoreCase("NULL")) reqs[i].setCOS2(args[8]);
reqs[i].setDN1(getTelefono(12));
reqs[i].setDATA_OPERAZIONE(DateUtils.toString(new Date(), DATE_FORMAT));
reqs[i].setCOD_MARCAGGIO_CLIENTE(getRandomMarcaggio());
reqs[i].setCOD_CANALE_VENDITA(getRandomCanaleVendita());
reqs[i].setFLAG_DICHIARAZIONE(args[9]);
reqs[i].setFLAG_GNR(args[10]);
reqs[i].setFLAG_CONSIP(args[11]);
reqs[i].setCODICE_OL("000");
reqs[i].setID_OL("G-ID0000");
reqs[i].setCOW2(new SimGenerator().randomCodiceOlo());
}
}
catch (Exception e) {
System.out.println("errore nella generazione della request");
e.printStackTrace();
}
return reqs;
}
public EsitoFrodiRequest generateEsitoFrodiRequest(String[] args) {
String orderItem = args[1];
String codiceEsito = args[2];
String descrizioneEsito = args.length > 3 && args[3] != null && !args[3].equals("NULL") ? args[3] : null;
EsitoFrodiRequest req = new EsitoFrodiRequest();
req.setORDER_ITEM_ID(orderItem);
req.setCODICE_ESITO(codiceEsito);
if (descrizioneEsito != null) {
req.setDESCRIZIONE_ESITO(descrizioneEsito);
}
return req;
}
private String getRandomString(int length, boolean lowerCase){
Random rand = new Random();
StringBuffer tempStr = new StringBuffer();
tempStr.append("");
for (int i = 0; i < length; i++) {
int c = rand.nextInt(122 - 48) + 48;
if((c >= 58 && c <= 64) || (c >= 91 && c <= 96)){
i--;
continue;
}
tempStr.append((char)c);
}
String toRet = tempStr.toString();
if (lowerCase) {
return toRet.toLowerCase();
}
return toRet;
}
private RichiestaAttivazioneRequest getDataFromDb(String[] args) throws Exception{
RichiestaAttivazioneRequest req = new RichiestaAttivazioneRequest();
SimDAO simDao = new SimDAO();
GnpRichiesteRec richiesta = null;
try {
richiesta = simDao.getByIdEsigenza(idEsigenzaSolution);
}
catch (Exception e) {
System.out.println("errore in get data from db " );
e.printStackTrace();
}
String tipoEvento = args[2];
if(tipoEvento.equals(CRMMap.EVENTO_MIGRAZIONE)) {
if(richiesta != null && !richiesta.getPiattaformaProvenienza().equals(CRMMap.PIATTAFORMA_B))
throw new Exception("Evento MIGRAZIONE incompatibile con ID_ESIGENZA " + idEsigenzaSolution);
}
req.setID_ESIGENZA(idEsigenzaSolution);
return req;
}
}

View File

@@ -0,0 +1,27 @@
package it.valueteam.gnpsim.generator.ws;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRec;
import it.valueteam.gnpsim.base.SimGenerator;
public abstract class WSGeneratorIF extends SimGenerator {
public String getSoapBody(Object obj) throws Exception
{
GnpRichiesteRec rec = (GnpRichiesteRec)obj;
return getSoapBodyOpen() + getData(rec) + getSoapBodyClose();
}
public abstract String getSoapBodyOpen();
public abstract String getSoapBodyClose();
public abstract String getData(Object obj) throws Exception;
public abstract String getSOAPPrologue();
public abstract String getSOAPHeader(Object obj);
public abstract String getSOAPEpilogue();
public abstract String getFileName(Object obj);
public String generateSOAPMessage(Object obj) throws Exception {
String soapMessage = getSOAPPrologue() + getSOAPHeader(obj) + getSoapBody(obj) + getSOAPEpilogue();
return soapMessage;
}
}

View File

@@ -0,0 +1,131 @@
package it.valueteam.gnpsim.generator.ws;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRec;
import it.valueteam.gnp.obj.ProcessMapper;
import it.valueteam.gnp.obj.StatoRichiestaRec;
import it.valueteam.gnpsim.utility.DateUtils;
public class WSPitagoraEsitoGenerator extends WSGeneratorIF {
private static final String soapDataOpen = "<dbc:getEsito><dbc:esito>";
private static final String soapDataClose = "</dbc:esito></dbc:getEsito>";
private static final int MIN_ARGS_LEN=1;
private static final int IDX_STATO_RICHIESTA=0;
private static final int IDX_COD_KO=1;
private static final int IDX_DESC_KO=2;
private static final String PATTERN_CHECK_DATE = "yyyyMMdd";
private String statoRichiesta;
private String codiceKO;
private String descKO;
public WSPitagoraEsitoGenerator(String args[]) throws Exception
{
if(args.length < MIN_ARGS_LEN)
throw new Exception("Parametri non sufficienti");
statoRichiesta = args[IDX_STATO_RICHIESTA];
if(args.length > IDX_COD_KO)
codiceKO = args[IDX_COD_KO];
if(args.length > IDX_DESC_KO)
descKO = args[IDX_DESC_KO];
}
public String getSOAPPrologue()
{
return "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
"xmlns:dbc=\"http://dbcfx.org\" xmlns:j=\"java:it.valueteam.gnp.obj.wsPitagora\">";
}
public String getSOAPHeader(Object obj)
{
return "<soapenv:Header/>";
}
public String getSoapBodyOpen()
{
return "<soapenv:Body>";
}
public String getSoapBodyClose()
{
return "</soapenv:Body>";
}
public String getData(Object obj) throws Exception
{
GnpRichiesteRec rec = (GnpRichiesteRec)obj;
StringBuffer buffer = new StringBuffer();
buffer.append(soapDataOpen);
buffer.append("<j:TipoComunicazione>RV</j:TipoComunicazione>");
buffer.append("<j:CodiceOrdine>");
buffer.append(rec.getIdEsigenza());
buffer.append("</j:CodiceOrdine>");
buffer.append("<j:TipoProcesso>");
if(rec.getProcesso().equals(ProcessMapper.proc_RIENTRO_ADSL) || rec.getProcesso().equals(ProcessMapper.proc_RIENTRO_ADSL_BKL) ||
rec.getProcesso().equals(ProcessMapper.proc_RIENTRO_NAKED) || rec.getProcesso().equals(ProcessMapper.proc_RIENTRO_NAKED_BKL) ||
(ProcessMapper.isDoppioDonating(rec.getProcesso()) && rec.getStato().intValue() == StatoRichiestaRec.ATTESAVERIFICA_DATI))
{
buffer.append("S");
}
else
{
buffer.append("R");
}
buffer.append("</j:TipoProcesso>");
buffer.append("<j:TipoAtterraggio>");
if(rec.getAtterraggio().equals(ProcessMapper.proc_RIENTRO_NAKED))
{
buffer.append("N");
}
else
{
buffer.append("F");
}
buffer.append("</j:TipoAtterraggio>");
buffer.append("<j:IdLinea>");
buffer.append(rec.getNumeroTelefono());
buffer.append("</j:IdLinea>");
buffer.append("<j:CodiceRisorsa>");
buffer.append(rec.getCor());
buffer.append("</j:CodiceRisorsa>");
buffer.append("<j:DataCheck>");
buffer.append(DateUtils.toString(rec.getDataCheck(), PATTERN_CHECK_DATE));
buffer.append("</j:DataCheck>");
buffer.append("<j:StatoRichiesta>");
buffer.append(statoRichiesta);
buffer.append("</j:StatoRichiesta>");
if(codiceKO != null)
{
buffer.append("<j:CodiceKO>");
buffer.append(codiceKO);
buffer.append("</j:CodiceKO>");
}
if(descKO != null)
{
buffer.append("<j:DescrizioneKO>");
buffer.append(descKO);
buffer.append("</j:DescrizioneKO>");
}
buffer.append(soapDataClose);
return buffer.toString();
}
@Override
public String getSOAPEpilogue() {
return "</soapenv:Envelope>";
}
@Override
public String getFileName(Object obj) {
return "Request_" + ((GnpRichiesteRec)obj).getIdEsigenza() + ".xml";
}
}