Blame | Last modification | View Log | Download | RSS feed
package it.liguriadigitale.sxcrj.console.business.dbi.impl;
import it.liguriadigitale.framework.business.BusinessHelper;
import it.liguriadigitale.framework.business.exceptions.BusinessException;
import it.liguriadigitale.framework.business.util.DateUtil;
import it.liguriadigitale.framework.integration.dao.SequenceDAO;
import it.liguriadigitale.sxcrj.console.business.dbi.impl.level1.ClientSoap;
import it.liguriadigitale.sxcrj.console.business.dbi.services.DbiService;
import it.liguriadigitale.sxcrj.console.business.staging.impl.level1.caricamento.fornitura.xsd.parser.ParserFactory;
import it.liguriadigitale.sxcrj.console.business.staging.impl.level1.caricamento.fornitura.xsd.parser.util.FirmaUtil;
import it.liguriadigitale.sxcrj.console.business.util.CalcoloDateUtil;
import it.liguriadigitale.sxcrj.console.integration.dao.common.ProvinciaDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.common.StatoScarico;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.FornituraCatastaleDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.RicercaNomeFornituraDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.RicercaPeriodoValdiazioneDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.RicercaSezioniDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.scarico.RicercaDatiServizioDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.scarico.RicercaScarichiFlussiDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.schedulazioni.RicercaFlussiIncrementaliSchedulabiliDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.schedulazioni.RicercaUltimoTentativoScaricoDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti01ComuniDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti02ServiziDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti04ServizidettaglioDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti05ErrlogDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti06PeriodicitaDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti09CatalogostatoDAO;
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti11FileinterscambioDAO;
import it.liguriadigitale.sxcrj.console.pojo.common.Provincia;
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti01Comuni;
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti02Servizi;
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti03Servizirichiesti;
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti04Servizidettaglio;
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti05Errlog;
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti06Periodicita;
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti07Protocolli;
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti09Catalogostato;
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti11Fileinterscambio;
import it.liguriadigitale.sxcrj.console.pojo.dbi.scarico.DatiScarico;
import it.liguriadigitale.sxcrj.console.pojo.dbi.scarico.RichiestaScarico;
import it.liguriadigitale.sxcrj.console.pojo.dbi.schedulazioni.DatiSchedulazione;
import it.liguriadigitale.sxcrj.console.pojo.fornitura.FornituraImpiantoCatastale;
import it.liguriadigitale.sxcrj.console.pojo.impianto.censuario.DateValidazione;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.sql.rowset.serial.SerialException;
import javax.xml.bind.JAXBException;
import javax.xml.soap.AttachmentPart;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFault;
import javax.xml.soap.SOAPMessage;
import javax.xml.stream.XMLStreamException;
import javax.xml.transform.TransformerException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class DbiServiceImpl implements DbiService{
protected Log log = LogFactory.getLog(this.getClass());
@SuppressWarnings("unchecked")
@Override
public List<FornituraImpiantoCatastale> getForniture(String nomeFornitura) throws BusinessException {
FornituraCatastaleDAO fornituraDAO = new FornituraCatastaleDAO(nomeFornitura);
BusinessHelper helper = new BusinessHelper(fornituraDAO);
return helper.cercaOggetti();
}
@SuppressWarnings("unchecked")
@Override
public List<Provincia> getProvince() throws BusinessException {
ProvinciaDAO dao = new ProvinciaDAO();
BusinessHelper helper = new BusinessHelper(dao);
return helper.cercaOggetti();
}
@SuppressWarnings("unchecked")
@Override
public List<S3Ti01Comuni> getComuni() throws BusinessException {
S3Ti01ComuniDAO dao = new S3Ti01ComuniDAO(new S3Ti01Comuni());
BusinessHelper helper = new BusinessHelper(dao);
return helper.cercaOggetti();
}
@SuppressWarnings("unchecked")
@Override
public List<S3Ti01Comuni> getComuni(String provincia) throws BusinessException {
S3Ti01Comuni comune = new S3Ti01Comuni();
comune.setTi01Prov(provincia);
S3Ti01ComuniDAO dao = new S3Ti01ComuniDAO(comune);
BusinessHelper helper = new BusinessHelper(dao);
return helper.cercaOggetti();
}
@SuppressWarnings("unchecked")
@Override
public List<S3Ti09Catalogostato> getStatoSchedulazioni() throws BusinessException {
S3Ti09Catalogostato stato = new S3Ti09Catalogostato();
S3Ti09CatalogostatoDAO dao = new S3Ti09CatalogostatoDAO(stato);
BusinessHelper helper = new BusinessHelper(dao);
return helper.cercaOggetti();
}
@SuppressWarnings("unchecked")
@Override
public List<S3Ti02Servizi> getServiziAgenzia() throws BusinessException {
S3Ti02ServiziDAO dao = new S3Ti02ServiziDAO(new S3Ti02Servizi());
BusinessHelper helper = new BusinessHelper(dao);
return helper.cercaOggetti();
}
@Override
@SuppressWarnings("unchecked")
public List<String> getSezioniComuni(S3Ti01Comuni comuni) throws BusinessException {
S3Ti01Comuni comune = new S3Ti01Comuni();
comune.setTi01Keycom(comuni.getTi01Keycom());
RicercaSezioniDAO dao = new RicercaSezioniDAO(comuni);
BusinessHelper helper = new BusinessHelper(dao);
List<String> listaSezioni = helper.cercaOggetti();
List<String> listaSezioniValide = new ArrayList<String>();
for(String sezione : listaSezioni){
if(sezione != null && sezione.isEmpty()){
listaSezioniValide.add(sezione);
}
}
return listaSezioniValide;
}
@SuppressWarnings("unchecked")
@Override
public List<S3Ti06Periodicita> getPeriodicitĂ () throws BusinessException {
S3Ti06Periodicita periodicita = new S3Ti06Periodicita();
S3Ti06PeriodicitaDAO dao = new S3Ti06PeriodicitaDAO(periodicita);
BusinessHelper helper = new BusinessHelper(dao);
return helper.cercaOggetti();
}
@SuppressWarnings("unchecked")
@Override
public boolean schedulaRichiesteFlussiIncrementali() throws BusinessException {
boolean execute = true;
RicercaFlussiIncrementaliSchedulabiliDAO dao = new RicercaFlussiIncrementaliSchedulabiliDAO();
BusinessHelper helper = new BusinessHelper(dao);
List<S3Ti03Servizirichiesti> listaFlussiSchedulabili = helper.cercaOggetti();
for(S3Ti03Servizirichiesti flussiSchedulabili : listaFlussiSchedulabili){
DatiSchedulazione schedulazione = calcolaPeriodo(flussiSchedulabili.getTi03Periodicita().longValue(),flussiSchedulabili.getTi03Dataunatantum());
if(schedulazione.isSchedulabile()){
int numeroIscrizioni = (flussiSchedulabili.getTi03Progiscrizioneass() != null) ? 2 : 1;
for(int iscrizione = 0; iscrizione < numeroIscrizioni; iscrizione ++){
RicercaUltimoTentativoScaricoDAO ricercaUtilmoTentativoDAO = new RicercaUltimoTentativoScaricoDAO(flussiSchedulabili,schedulazione);
helper.setDao(ricercaUtilmoTentativoDAO);
int maxDettaglio = (int) helper.cercaOggetto();
if(maxDettaglio == 0){
int giorno = DateUtil.formatDayAsInt(new Date());
if(giorno >= flussiSchedulabili.getTi03Inislot().intValue() && giorno <= flussiSchedulabili.getTi03Finslot().intValue()){
int numeroTentativo = maxDettaglio +1;
S3Ti04Servizidettaglio dettaglioSchedulazione = new S3Ti04Servizidettaglio();
dettaglioSchedulazione.setTi04Progiscrizione(flussiSchedulabili.getTi03Progiscrizione());
dettaglioSchedulazione.setTi04Keydett(new Long(numeroTentativo));
dettaglioSchedulazione.setTi04FlagAss(iscrizione>0);
dettaglioSchedulazione.setTi04Codstato(StatoScarico.IN_SCHEDULAZIONE.getId());
dettaglioSchedulazione.setTi04PeriodoA(schedulazione.getPeriodoA());
dettaglioSchedulazione.setTi04PeriodoDa(schedulazione.getPeriodoDa());
dettaglioSchedulazione.setTi04DatatimeSched(new Date());
dettaglioSchedulazione.setTi04Progiscrizioneass(flussiSchedulabili.getTi03Progiscrizioneass());
dettaglioSchedulazione.setTi04NFile(0L);
dettaglioSchedulazione.setTi04NFileTot(0L);
dettaglioSchedulazione.setTi04Riavvio(0L);
dettaglioSchedulazione.setTi04PresenzaFile(false);
S3Ti04ServizidettaglioDAO dettaglioSchedulazioneDao = new S3Ti04ServizidettaglioDAO(dettaglioSchedulazione);
helper.setDao(dettaglioSchedulazioneDao);
helper.inserisciOggetto();
}
} else {
S3Ti04Servizidettaglio dettaglioSchedulazione = new S3Ti04Servizidettaglio();
dettaglioSchedulazione.setTi04Progiscrizione(flussiSchedulabili.getTi03Progiscrizione());
dettaglioSchedulazione.setTi04Keydett(new Long(maxDettaglio));
dettaglioSchedulazione.setTi04FlagAss(iscrizione>0);
dettaglioSchedulazione.setTi04PeriodoA(schedulazione.getPeriodoA());
dettaglioSchedulazione.setTi04PeriodoDa(schedulazione.getPeriodoDa());
S3Ti04ServizidettaglioDAO dettaglioSchedulazioneDao = new S3Ti04ServizidettaglioDAO(dettaglioSchedulazione);
helper.setDao(dettaglioSchedulazioneDao);
S3Ti04Servizidettaglio ultimaSchedulazione = (S3Ti04Servizidettaglio) helper.cercaOggettoByKey();
if(ultimaSchedulazione != null){
if(ultimaSchedulazione.getTi04Codstato().longValue() == StatoScarico.ERRORE_WEB_SERVICE.getId() &&
CalcoloDateUtil.calcoloNumeroGiorni(ultimaSchedulazione.getTi04DatatimeSched(), new Date())> 0){
int numeroTentativo = ultimaSchedulazione.getTi04Keydett().intValue() +1;
S3Ti04Servizidettaglio nuovaSchedulazione = new S3Ti04Servizidettaglio();
nuovaSchedulazione.setTi04Progiscrizione(flussiSchedulabili.getTi03Progiscrizione());
nuovaSchedulazione.setTi04Keydett(new Long(numeroTentativo));
nuovaSchedulazione.setTi04FlagAss(iscrizione>0);
nuovaSchedulazione.setTi04Codstato(StatoScarico.IN_SCHEDULAZIONE.getId());
nuovaSchedulazione.setTi04PeriodoA(schedulazione.getPeriodoA());
nuovaSchedulazione.setTi04PeriodoDa(schedulazione.getPeriodoDa());
nuovaSchedulazione.setTi04DatatimeSched(new Date());
nuovaSchedulazione.setTi04Progiscrizioneass(flussiSchedulabili.getTi03Progiscrizioneass());
nuovaSchedulazione.setTi04NFile(0L);
nuovaSchedulazione.setTi04NFileTot(0L);
nuovaSchedulazione.setTi04Riavvio(0L);
nuovaSchedulazione.setTi04PresenzaFile(false);
S3Ti04ServizidettaglioDAO nuovaSchedulazioneDao = new S3Ti04ServizidettaglioDAO(nuovaSchedulazione);
helper.setDao(nuovaSchedulazioneDao);
helper.inserisciOggetto();
} else if (ultimaSchedulazione.getTi04Codstato().longValue() == StatoScarico.ERRORE_WEB_SERVICE_RIAVVIABILE.getId()){
ultimaSchedulazione.setTi04Riavvio(ultimaSchedulazione.getTi04Riavvio().longValue() + 1L);
ultimaSchedulazione.setTi04Codstato(StatoScarico.IN_SCHEDULAZIONE.getId());
S3Ti04ServizidettaglioDAO nuovaSchedulazioneDao = new S3Ti04ServizidettaglioDAO(ultimaSchedulazione);
helper.setDao(nuovaSchedulazioneDao);
helper.aggiornaOggettoByKey();
}
} else {
log.error("Errore nessuna schedulazione trovata per progressivo " + flussiSchedulabili.getTi03Progiscrizione());
execute = false;
}
}
}
}
}
return execute;
}
@Override
@SuppressWarnings("unchecked")
public boolean scaricaFlussiIncrementali() throws BusinessException {
boolean execute = true;
RicercaScarichiFlussiDAO daoScarico = new RicercaScarichiFlussiDAO();
BusinessHelper helper = new BusinessHelper(daoScarico);
List<RichiestaScarico> richiesteScarico = helper.cercaOggetti();
for(RichiestaScarico richiestaScarico : richiesteScarico){
richiestaScarico.setTi04Codstato(StatoScarico.SCHEDULATO.getId());
S3Ti04ServizidettaglioDAO daoServizio = new S3Ti04ServizidettaglioDAO(richiestaScarico);
helper.setDao(daoServizio);
helper.aggiornaOggettoByKey();
RicercaDatiServizioDAO daoDatiScarico = new RicercaDatiServizioDAO(richiestaScarico);
helper.setDao(daoDatiScarico);
DatiScarico datiScarico = (DatiScarico) helper.cercaOggetto();
if(datiScarico == null){
log.error("Nessun servizio configurato");
throw new BusinessException("Nessun servizio configurato");
}
if(richiestaScarico.getTi04Riavvio().longValue() == 0L){
richiestaScarico.setTi04NFile(1L);
} else if (!richiestaScarico.getTi04PresenzaFile()){
if(richiestaScarico.getTi04NFile().longValue() == 0L)
richiestaScarico.setTi04NFile(1L);
} else {
S3Ti11Fileinterscambio fileinterscambio = new S3Ti11Fileinterscambio();
fileinterscambio.setTi11Progiscrizione(richiestaScarico.getTi04Progiscrizione());
fileinterscambio.setTi11PeriodoA(richiestaScarico.getTi04PeriodoA());
fileinterscambio.setTi11PeriodoDa((richiestaScarico.getTi04PeriodoDa()));
fileinterscambio.setTi11FlagAss(richiestaScarico.getTi04FlagAss());
fileinterscambio.setTi11Keydett(richiestaScarico.getTi04Keydett());
fileinterscambio.setTi11Idfile(richiestaScarico.getTi04NFile());
S3Ti11FileinterscambioDAO daoFileInterscambio = new S3Ti11FileinterscambioDAO(fileinterscambio);
helper.setDao(daoFileInterscambio);
helper.deleteOggettoByKey();
richiestaScarico.setTi04PresenzaFile(Boolean.FALSE);
S3Ti04ServizidettaglioDAO daoServizioDettaglio = new S3Ti04ServizidettaglioDAO(richiestaScarico);
helper.setDao(daoServizioDettaglio);
helper.aggiornaOggettoByKey();
}
String codiceUfficio = richiestaScarico.getTi04Progiscrizione().substring(0, 2);
long numeroFile = richiestaScarico.getTi04NFile().longValue();
long numeroFileTotale = numeroFile;
do{
String nomeFile = richiestaScarico.getTi04Progiscrizione()+"_" + richiestaScarico.getPeriodoDaXML() + numeroFile;
if(richiestaScarico.getTi04FlagAss()){
nomeFile = richiestaScarico.getTi04Progiscrizioneass()+"_" + richiestaScarico.getPeriodoDaXML() + numeroFile;
}
ClientSoap clientSoap = new ClientSoap(codiceUfficio);
try {
SOAPMessage risposta = clientSoap.inviaRichiestaScarico(datiScarico, richiestaScarico,numeroFile);
File fornituraZip = clientSoap.creaFileZipDaSalvare(nomeFile, risposta,richiestaScarico.getTi04FlagAss());
clientSoap.aggiornaTraccia(fornituraZip);
FileInputStream fornituraZipStream = new FileInputStream(fornituraZip);
byte[] fileBlob = IOUtils.toByteArray(fornituraZipStream);
IOUtils.closeQuietly(fornituraZipStream);
S3Ti11Fileinterscambio fileinterscambio = new S3Ti11Fileinterscambio();
fileinterscambio.setTi11Progiscrizione(richiestaScarico.getTi04Progiscrizione());
fileinterscambio.setTi11PeriodoA(richiestaScarico.getTi04PeriodoA());
fileinterscambio.setTi11PeriodoDa((richiestaScarico.getTi04PeriodoDa()));
fileinterscambio.setTi11FlagAss(richiestaScarico.getTi04FlagAss());
fileinterscambio.setTi11Keydett(richiestaScarico.getTi04Keydett());
fileinterscambio.setTi11Idfile(numeroFile);
fileinterscambio.setTi11Progiscrizioneass(richiestaScarico.getTi04Progiscrizioneass());
fileinterscambio.setFornituraZip(fileBlob);
S3Ti11FileinterscambioDAO daoFornitura = new S3Ti11FileinterscambioDAO(fileinterscambio);
helper.setDao(daoFornitura);
helper.inserisciOggetto();
Long idStato = StatoScarico.WEB_SERVICE_TERMINATO_CORRETTAMENTE.getId();
SOAPFault fault = risposta.getSOAPBody().getFault();
if(fault != null){
S3Ti05Errlog logError = new S3Ti05Errlog();
logError.setTi05Keyerrore(20006L);
logError.setTi05Erroredett("(20006)" + fault.getFaultString());
logError.setTi05Datetime(new Date());
logError.setTi05Progiscrizione(richiestaScarico.getTi04Progiscrizione());
logError.setTi05Keydett(richiestaScarico.getTi04Keydett());
logError.setTi05FlagAss(richiestaScarico.getTi04FlagAss());
logError.setTi05PeriodoA(richiestaScarico.getTi04PeriodoA());
logError.setTi05PeriodoDa(richiestaScarico.getTi04PeriodoDa());
logError.setTi05Progiscrizioneass(richiestaScarico.getTi04Progiscrizioneass());
logError.setTi05NFile(richiestaScarico.getTi04NFile());
logError.setTi05IdTraccia(clientSoap.getTracciaRichieste().getTi17IdTraccia());
inserisciErrore(logError);
idStato = StatoScarico.ERRORE_WEB_SERVICE.getId();
log.error("(20006)" + fault.getFaultString());
execute = false;
}
numeroFileTotale = getNumeroFileDaScaricare(risposta, datiScarico,richiestaScarico.getTi04FlagAss().booleanValue());
richiestaScarico.setTi04NFile(numeroFile);
richiestaScarico.setTi04NFileTot(numeroFileTotale);
richiestaScarico.setTi04PresenzaFile(Boolean.TRUE);
richiestaScarico.setTi04DatatimeInizio(new Date());
richiestaScarico.setTi04DatatimeFine(new Date());
S3Ti04ServizidettaglioDAO daoServizioDettaglio = new S3Ti04ServizidettaglioDAO(richiestaScarico);
richiestaScarico.setTi04Codstato(idStato);
helper.setDao(daoServizioDettaglio);
helper.aggiornaOggettoByKey();
numeroFile = numeroFile +1;
} catch (SOAPException | XMLStreamException | JAXBException | IOException | TransformerException e) {
log.error("Errore durante chiamata al web service Agenzia " + e.getMessage(),e);
e.printStackTrace();
S3Ti05Errlog logError = new S3Ti05Errlog();
logError.setTi05Keyerrore(20015L);
logError.setTi05Erroredett("(20015)" + e.getMessage());
logError.setTi05Datetime(new Date());
logError.setTi05Progiscrizione(richiestaScarico.getTi04Progiscrizione());
logError.setTi05Keydett(richiestaScarico.getTi04Keydett());
logError.setTi05FlagAss(richiestaScarico.getTi04FlagAss());
logError.setTi05PeriodoA(richiestaScarico.getTi04PeriodoA());
logError.setTi05PeriodoDa(richiestaScarico.getTi04PeriodoDa());
logError.setTi05Progiscrizioneass(richiestaScarico.getTi04Progiscrizioneass());
logError.setTi05NFile(richiestaScarico.getTi04NFile());
logError.setTi05IdTraccia(clientSoap.getTracciaRichieste().getTi17IdTraccia());
inserisciErrore(logError);
richiestaScarico.setTi04Codstato(StatoScarico.ERRORE_WEB_SERVICE_RIAVVIABILE.getId());
S3Ti04ServizidettaglioDAO daoServizioDettaglio = new S3Ti04ServizidettaglioDAO(richiestaScarico);
helper.setDao(daoServizioDettaglio);
helper.aggiornaOggettoByKey();
break;
}
} while(numeroFile <= numeroFileTotale);
}
return execute;
}
private DatiSchedulazione calcolaPeriodo(Long periodicita, Date dataUnaTantum) {
DatiSchedulazione datiSchedulazione = new DatiSchedulazione();
int numeroMesi=0;
switch (periodicita.intValue()) {
case 0:
numeroMesi = 0;
break;
case 1:
numeroMesi = 12;
break;
case 2:
numeroMesi = 6;
break;
case 3:
numeroMesi = 4;
break;
case 4:
numeroMesi = 3;
break;
case 5:
numeroMesi = 2;
break;
case 6:
numeroMesi = 1;
break;
}
if (numeroMesi != 0) {
Date periodoA = CalcoloDateUtil.calcolaUltimoDelMese(CalcoloDateUtil.addMonthsToDate(new Date(),-1));
datiSchedulazione.setPeriodoA(periodoA);
int mese = CalcoloDateUtil.getMese(periodoA);
if ((mese % numeroMesi) != 0) {
datiSchedulazione.setSchedulabile(false);
} else {
datiSchedulazione.setSchedulabile(true);
Date periodoDa = CalcoloDateUtil.calcolaPrimoDelMese(periodoA);
datiSchedulazione.setPeriodoDa(periodoDa);
}
} else {
Date periodoDa = CalcoloDateUtil.calcolaPrimoDelMese(dataUnaTantum);
Date periodoA = CalcoloDateUtil.calcolaUltimoDelMese(dataUnaTantum);
datiSchedulazione.setPeriodoA(periodoA);
datiSchedulazione.setPeriodoDa(periodoDa);
datiSchedulazione.setSchedulabile(true);
}
return datiSchedulazione;
}
private int getNumeroFileDaScaricare(SOAPMessage risposta,DatiScarico dati,boolean isAssociato) throws BusinessException{
int numeroFileTotali=0;
try{
Iterator<?> filesInviati = risposta.getAttachments();
while (filesInviati.hasNext()) {
AttachmentPart filePart = (AttachmentPart) filesInviati.next();
if(filePart.getContentType().toLowerCase().contains("text")){
byte[] byteFileXML = filePart.getRawContentBytes();
ByteArrayInputStream fileXML = new ByteArrayInputStream(byteFileXML);
String xml = FirmaUtil.getXML(fileXML);
numeroFileTotali=ParserFactory.getInstance().getNumeroFileDaScaricare(xml, Long.parseLong(dati.getServizio()),isAssociato);
break;
}
}
return numeroFileTotali;
} catch(XMLStreamException |SOAPException | NumberFormatException | JAXBException e){
log.error("Errore parsing xml richiesta " + e.getMessage(),e);
throw new BusinessException(e);
}
}
@Override
@SuppressWarnings("unchecked")
public S3Ti01Comuni getComune(String codiceComune,String sezione) throws BusinessException{
S3Ti01Comuni comune = new S3Ti01Comuni();
comune.setTi01Keycom(codiceComune);
comune.setTi01Keysez(sezione);
S3Ti01ComuniDAO dao = new S3Ti01ComuniDAO(comune);
BusinessHelper helper = new BusinessHelper(dao);
List<S3Ti01Comuni> listaComuni = helper.cercaOggetti();
return listaComuni.size() > 0 ? listaComuni.get(0) : null;
}
@Override
public InputStream getDatiZip(S3Ti11Fileinterscambio fileInterscambio) throws BusinessException {
try {
S3Ti11FileinterscambioDAO dao = new S3Ti11FileinterscambioDAO(fileInterscambio);
BusinessHelper helper = new BusinessHelper(dao);
S3Ti11Fileinterscambio scarico = (S3Ti11Fileinterscambio) helper.cercaOggettoByKey();
return scarico.getTi11Blob().getBinaryStream();
} catch (SerialException e) {
log.error("Errore dato zip " + e.getMessage());
throw new BusinessException(e);
}
}
@Override
public DateValidazione getPeriodoValidazione(String codComune) throws BusinessException {
S3Ti01Comuni comune = new S3Ti01Comuni();
comune.setTi01Keycom(codComune);
RicercaPeriodoValdiazioneDAO ricercaDAO = new RicercaPeriodoValdiazioneDAO(comune);
BusinessHelper helper = new BusinessHelper(ricercaDAO);
return (DateValidazione) helper.cercaOggetto();
}
@Override
public S3Ti07Protocolli getNomeFornitura(String nomeFornitura) throws BusinessException {
S3Ti07Protocolli protocolli = new S3Ti07Protocolli();
protocolli.setTi07NomeFornitura(nomeFornitura);
RicercaNomeFornituraDAO ricercaDAO = new RicercaNomeFornituraDAO(protocolli);
BusinessHelper helper = new BusinessHelper(ricercaDAO);
return (S3Ti07Protocolli) helper.cercaOggetto();
}
public void inserisciErrore(S3Ti05Errlog errore) throws BusinessException{
SequenceDAO sequenceDAO = new SequenceDAO("TI05_SEQ");
BusinessHelper helper = new BusinessHelper(sequenceDAO);
Long id = (Long)helper.cercaOggetto();
errore.setTi05Id(new BigDecimal(id));
S3Ti05ErrlogDAO daoErrrore = new S3Ti05ErrlogDAO(errore);
helper.setDao(daoErrrore);
helper.inserisciOggetto();
}
}