Files
gateway-mnp-dbc/dbcmnpsrc/FE/mnpdev/sim/sistemi/src/xml/XMLNotificaMspCoopTcGenerator.java
2024-05-13 12:54:14 +02:00

101 lines
3.4 KiB
Java

package xml;
import java.util.ArrayList;
import java.util.List;
import mnp.xml.dao.msp.NotifyCreditTransferDonorESP;
import testUtil.TestProcessCache;
import db.ManagerDAO;
public class XMLNotificaMspCoopTcGenerator extends AbstractXmlGenerator {
protected TestProcessCache testProcessCache = TestProcessCache.getInstance();
public XMLNotificaMspCoopTcGenerator() {
managerDAO = new ManagerDAO();
}
/**
* generateXml
*
* NOTIFICA TRASFERIMENTO CREDITO
* args[0] selettore per il tipo di notifica da effettuare ('MSPCOOP_TC')
* args[1] processType (tipo di processo: DON, DON_VIRT, REC_VIRT)
* args[2] tipo evento (trasferimento = 01, sblocco credito anomalo = 02, sblocco importo = 03)
* args[3] id richiesta (id della richiesta dbc associata)
* args[4] credito residuo (xxxxx.xx)
* args[5] verifica credito anomalo (flag Y|N)
*
* @return String
* @throws Exception
*/
public String[] generateXml(String[] args) throws Exception {
if(args.length != 5)
throw new Exception("Numero parametri errato!");
String records[] = null;
String idRichiesta = args[1];
String processType = args[2];
String tipoEvento = args[3];
String creditoResiduo = args[4];
checkFields(processType, tipoEvento, creditoResiduo);
List request = new ArrayList();
NotifyCreditTransferDonorESP richiestaTc = new NotifyCreditTransferDonorESP();
if("NULL".equals(idRichiesta)){
if(tipoEvento.equals("01")){
request = managerDAO.getIdRichiestaMspCoop(processType);
} else if(tipoEvento.equals("03")) {
request = managerDAO.getIdRichiestaMspCoopByState(processType, tipoEvento);
}
//ciclo sulle coppie di id_richiesta/ business id acquisite
if(request != null && request.size() > 0){
records = new String[request.size()];
for(int i = 0; i < request.size(); i++){
richiestaTc.setID_RICHIESTA_DBC((String)request.get(i));
richiestaTc.setIMPORTO_CREDITO_RESIDUO(creditoResiduo);
richiestaTc.setTIPO_EVENTO(tipoEvento);
records[i] = getXmlFromCastorObject(richiestaTc, false);
}
} else
throw new Exception("NON SONO PRESENTI SUL DB DATI COMPATIBILI CON I PARAMETRI DI INPUT");
} else {
String businessId = managerDAO.verificaEsistenzaIdRichiestaMspCoop(processType, idRichiesta);
// if(tipoEvento.equals("01")){
// do nothing
// } else
if(tipoEvento.equals("03")) {
request = managerDAO.verificaEsistenzaRichiestaTcMspCoop(processType, idRichiesta, tipoEvento);
if(request == null || request.size() == 0)
throw new Exception("SUL DB NON E' PRESENTE NESSUNA RICHIESTA DI TC AVENTE ID RICHIESTA = " + idRichiesta);
}
richiestaTc.setID_RICHIESTA_DBC(idRichiesta);
richiestaTc.setIMPORTO_CREDITO_RESIDUO(creditoResiduo);
richiestaTc.setTIPO_EVENTO(tipoEvento);
records = new String[1];
records[0] = getXmlFromCastorObject(richiestaTc, false);
}
return records;
}
private void checkFields(String processType, String tipoEvento, String creditoResiduo) throws Exception {
if( !( processType.equals("DON") || processType.equals("DON_VIRT") || processType.equals("REC_VIRT") ) )
throw new Exception("PROCESS TYPE ERRATO!");
if( !( tipoEvento.equals("01") || tipoEvento.equals("03") ) )
throw new Exception("TIPO EVENTO ERRATO!");
String pattern = "[0-9]{1,5}[.][0-9]{2,2}";
if(!creditoResiduo.matches(pattern))
throw new Exception("VALORE CREDITO RESIDUO NON VALIDO!");
}
}