file = new FileInputStream(fileInput);
in = new BufferedReader(new InputStreamReader(file));
ArrayList<String> mioFile = new ArrayList<String>();
while ((inputLine = in.readLine()) != null) {
if (inputLine.length() != 120) {
throw new EsitoInvioFlussiBonificoException(messages.getMessage("gestionePratica.invioBonifico.lunghezzaRecordErrata"));
} else {
mioFile.add(inputLine);
}
}
if (!mioFile.get(0).startsWith(" EP")) {
throw new EsitoInvioFlussiBonificoException(messages.getMessage("gestionePratica.invioBonifico.recordTestaNonValido"));
} else if (!mioFile.get(mioFile.size() - 1).startsWith(" EF")) {
throw new EsitoInvioFlussiBonificoException(messages.getMessage("gestionePratica.invioBonifico.recordCodaNonValido"));
} else {
for (int i = 0; i < mioFile.size(); i++)
{
String record = mioFile.get(i);
if (record.startsWith(" EP")) { //record di testa
codiceSiaFlusso = record.substring(8,13);
dataEsitoFlusso = convertiDataFlusso(record.substring(13,19));
if (!codiceSia.equals(codiceSiaFlusso)) {
throw new EsitoInvioFlussiBonificoException(messages.getMessage("gestionePratica.invioBonifico.codiceSiaErrato"));
}
}
Double importo = 0d;
int pgrLiq = 0;
long nrMutuo = 0l;
if (record.startsWith(" 10")) {
contaDisposizioni++;
importo = Double.parseDouble(record.substring(40,53));
totImporti += importo;
String tipoRiferimento = record.substring(58,59);
//se tipoRiferimento=1 then riferimento=cro /// se tipoRiferimento=2 then riferimento=codice interno banca
String codiceRiferimento = record.substring(59,94);
String errorCode = StringUtility.checkNull(record.substring(99,100)).trim();
/* Nella posizione 11-40 ho l'id che originariamente ho messo nella posizione 71-100
del record 70 della richiesta, cio� 3 caratteri per pgr liquidazione + 8 caratteri per num mutuo */
nrMutuo = Long.parseLong(record.substring(13,21));
pgrLiq = Integer.parseInt(record.substring(10,13));
//recupero la liquidazione corrispondente
LiquidazioneMutuo liq = new LiquidazioneMutuo();
liq = getLiquidazioneMutuo(nrMutuo, pgrLiq);
if(liq == null)
throw new EsitoInvioFlussiBonificoException(messages.getMessage("gestionePratica.invioBonifico.errorLoadingDisp"));
EsitoDisposizioniPerInvioBonifici esito = new EsitoDisposizioniPerInvioBonifici(); //lista liquidazioni per il fe
esito.setLiquidazione(liq);
esito.setEsitoFlusso(errorCode);
esito.setNumeroMutuo(nrMutuo);
esito.setProgressivoLiq(pgrLiq);
esito.setNumProtocollo(liq.getProtocolloDocumento());
esito.setImportoDisposizione(importo/100);
esito.setDataEsito(dataEsitoFlusso);
esito.setTipoRiferimento(tipoRiferimento);
esito.setCodiceRiferimento(codiceRiferimento);
//intestatario bonifico
String tipoBeneficiario = StringUtility.checkNull(liq.getTipoBeneficiario());
if(tipoBeneficiario.equals(""))
tipoBeneficiario = "S";
long numBeneficiario = 0l;
if(tipoBeneficiario.equalsIgnoreCase("C")) {
numBeneficiario = connettoreAnagraficaService.getPrimoCointestatario(liq.getNumeroBeneficiario());
} else {
numBeneficiario = liq.getNumeroBeneficiario().longValue();
}
esito.setNumBeneficiario(numBeneficiario);
DatiSoggetto datiSogg = connettoreAnagraficaService.getDatiSoggetto( Long.valueOf(numBeneficiario) );
if(datiSogg != null)
esito.setIntestatarioBonifico(datiSogg.getDescrizioneSoggetto());
listaEsiti.add(esito);
} //fine record 10
if (record.startsWith(" EF")) { //record di coda
totDisposizioni = Long.parseLong(record.substring(45,52));
totRecord = Long.parseLong(record.substring(82,89));
totImportiFlusso = Double.parseDouble(record.substring(67,82));
if(mioFile.size() != totRecord.intValue()) {
throw new EsitoInvioFlussiBonificoException(messages.getMessage("gestionePratica.invioBonifico.numeroRecordNonValido"));
}
}
}
}
if(totDisposizioni.intValue() != contaDisposizioni) {
throw new EsitoInvioFlussiBonificoException(messages.getMessage("gestionePratica.invioBonifico.numeroDisposizioniNonValido"));
}
if(!totImporti.equals(totImportiFlusso) ) {
throw new EsitoInvioFlussiBonificoException(messages.getMessage("gestionePratica.invioBonifico.importoTotaleNonValido"));
}
} catch (IOException ioex) {
ioex.printStackTrace();
throw new EsitoInvioFlussiBonificoException(messages.getMessage("gestionePratica.invioBonifico.IOError"));
}
return listaEsiti;
}