Subversion Repositories Sigmater

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 Andrea 1
package it.liguriadigitale.sxcrj.console.business.dbi.impl;
2
 
3
import it.liguriadigitale.framework.business.BusinessHelper;
4
import it.liguriadigitale.framework.business.exceptions.BusinessException;
5
import it.liguriadigitale.framework.business.util.DateUtil;
6
import it.liguriadigitale.framework.integration.dao.SequenceDAO;
7
import it.liguriadigitale.sxcrj.console.business.dbi.impl.level1.ClientSoap;
8
import it.liguriadigitale.sxcrj.console.business.dbi.services.DbiService;
9
import it.liguriadigitale.sxcrj.console.business.staging.impl.level1.caricamento.fornitura.xsd.parser.ParserFactory;
10
import it.liguriadigitale.sxcrj.console.business.staging.impl.level1.caricamento.fornitura.xsd.parser.util.FirmaUtil;
11
import it.liguriadigitale.sxcrj.console.business.util.CalcoloDateUtil;
12
import it.liguriadigitale.sxcrj.console.integration.dao.common.ProvinciaDAO;
13
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.common.StatoScarico;
14
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.FornituraCatastaleDAO;
15
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.RicercaNomeFornituraDAO;
16
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.RicercaPeriodoValdiazioneDAO;
17
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.RicercaSezioniDAO;
18
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.scarico.RicercaDatiServizioDAO;
19
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.scarico.RicercaScarichiFlussiDAO;
20
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.schedulazioni.RicercaFlussiIncrementaliSchedulabiliDAO;
21
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.ricerca.schedulazioni.RicercaUltimoTentativoScaricoDAO;
22
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti01ComuniDAO;
23
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti02ServiziDAO;
24
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti04ServizidettaglioDAO;
25
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti05ErrlogDAO;
26
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti06PeriodicitaDAO;
27
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti09CatalogostatoDAO;
28
import it.liguriadigitale.sxcrj.console.integration.dao.dbi.table.S3Ti11FileinterscambioDAO;
29
import it.liguriadigitale.sxcrj.console.pojo.common.Provincia;
30
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti01Comuni;
31
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti02Servizi;
32
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti03Servizirichiesti;
33
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti04Servizidettaglio;
34
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti05Errlog;
35
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti06Periodicita;
36
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti07Protocolli;
37
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti09Catalogostato;
38
import it.liguriadigitale.sxcrj.console.pojo.dbi.S3Ti11Fileinterscambio;
39
import it.liguriadigitale.sxcrj.console.pojo.dbi.scarico.DatiScarico;
40
import it.liguriadigitale.sxcrj.console.pojo.dbi.scarico.RichiestaScarico;
41
import it.liguriadigitale.sxcrj.console.pojo.dbi.schedulazioni.DatiSchedulazione;
42
import it.liguriadigitale.sxcrj.console.pojo.fornitura.FornituraImpiantoCatastale;
43
import it.liguriadigitale.sxcrj.console.pojo.impianto.censuario.DateValidazione;
44
 
45
import java.io.ByteArrayInputStream;
46
import java.io.File;
47
import java.io.FileInputStream;
48
import java.io.IOException;
49
import java.io.InputStream;
50
import java.math.BigDecimal;
51
import java.util.ArrayList;
52
import java.util.Date;
53
import java.util.Iterator;
54
import java.util.List;
55
 
56
import javax.sql.rowset.serial.SerialException;
57
import javax.xml.bind.JAXBException;
58
import javax.xml.soap.AttachmentPart;
59
import javax.xml.soap.SOAPException;
60
import javax.xml.soap.SOAPFault;
61
import javax.xml.soap.SOAPMessage;
62
import javax.xml.stream.XMLStreamException;
63
import javax.xml.transform.TransformerException;
64
 
65
import org.apache.commons.io.IOUtils;
66
import org.apache.commons.logging.Log;
67
import org.apache.commons.logging.LogFactory;
68
 
69
public class DbiServiceImpl implements DbiService{
70
 
71
	protected Log		log								= LogFactory.getLog(this.getClass());
72
 
73
 
74
	@SuppressWarnings("unchecked")
75
	@Override
76
	public List<FornituraImpiantoCatastale> getForniture(String nomeFornitura) throws BusinessException {
77
		FornituraCatastaleDAO fornituraDAO = new FornituraCatastaleDAO(nomeFornitura);
78
		BusinessHelper helper = new BusinessHelper(fornituraDAO);
79
		return helper.cercaOggetti();
80
	}
81
 
82
	@SuppressWarnings("unchecked")
83
	@Override
84
	public List<Provincia> getProvince() throws BusinessException {
85
		ProvinciaDAO dao = new ProvinciaDAO();
86
		BusinessHelper helper = new BusinessHelper(dao);
87
		return helper.cercaOggetti();
88
	}
89
 
90
	@SuppressWarnings("unchecked")
91
	@Override
92
	public List<S3Ti01Comuni> getComuni() throws BusinessException {
93
		S3Ti01ComuniDAO dao = new S3Ti01ComuniDAO(new S3Ti01Comuni());
94
		BusinessHelper helper = new BusinessHelper(dao);
95
		return helper.cercaOggetti();
96
	}
97
 
98
	@SuppressWarnings("unchecked")
99
	@Override
100
	public List<S3Ti01Comuni> getComuni(String provincia) throws BusinessException {
101
		S3Ti01Comuni comune = new S3Ti01Comuni();
102
		comune.setTi01Prov(provincia);
103
		S3Ti01ComuniDAO dao = new S3Ti01ComuniDAO(comune);
104
		BusinessHelper helper = new BusinessHelper(dao);
105
		return helper.cercaOggetti();
106
	}
107
 
108
	@SuppressWarnings("unchecked")
109
	@Override
110
	public List<S3Ti09Catalogostato> getStatoSchedulazioni() throws BusinessException {
111
		S3Ti09Catalogostato stato = new S3Ti09Catalogostato();
112
		S3Ti09CatalogostatoDAO dao = new S3Ti09CatalogostatoDAO(stato);
113
		BusinessHelper helper = new BusinessHelper(dao);
114
		return helper.cercaOggetti();
115
	}
116
 
117
	@SuppressWarnings("unchecked")
118
	@Override
119
	public List<S3Ti02Servizi> getServiziAgenzia() throws BusinessException {
120
		S3Ti02ServiziDAO dao = new S3Ti02ServiziDAO(new S3Ti02Servizi());
121
		BusinessHelper helper = new BusinessHelper(dao);
122
		return helper.cercaOggetti();
123
	}
124
 
125
	@Override
126
	@SuppressWarnings("unchecked")
127
	public List<String> getSezioniComuni(S3Ti01Comuni comuni) throws BusinessException {
128
		S3Ti01Comuni comune = new S3Ti01Comuni();
129
		comune.setTi01Keycom(comuni.getTi01Keycom());
130
		RicercaSezioniDAO dao = new RicercaSezioniDAO(comuni);
131
		BusinessHelper helper = new BusinessHelper(dao);
132
		List<String> listaSezioni = helper.cercaOggetti();
133
		List<String> listaSezioniValide = new ArrayList<String>();
134
		for(String sezione : listaSezioni){
135
			if(sezione != null && sezione.isEmpty()){
136
				listaSezioniValide.add(sezione);
137
			}
138
		}
139
		return listaSezioniValide;
140
	}
141
 
142
	@SuppressWarnings("unchecked")
143
	@Override
144
	public List<S3Ti06Periodicita> getPeriodicitĂ () throws BusinessException {
145
		S3Ti06Periodicita periodicita = new S3Ti06Periodicita();
146
		S3Ti06PeriodicitaDAO dao = new S3Ti06PeriodicitaDAO(periodicita);
147
		BusinessHelper helper = new BusinessHelper(dao);
148
		return helper.cercaOggetti();
149
	}
150
 
151
	@SuppressWarnings("unchecked")
152
	@Override
153
	public boolean schedulaRichiesteFlussiIncrementali() throws BusinessException {
154
		boolean execute = true;
155
		RicercaFlussiIncrementaliSchedulabiliDAO dao = new RicercaFlussiIncrementaliSchedulabiliDAO();
156
		BusinessHelper helper = new BusinessHelper(dao);
157
		List<S3Ti03Servizirichiesti> listaFlussiSchedulabili = helper.cercaOggetti();
158
		for(S3Ti03Servizirichiesti flussiSchedulabili : listaFlussiSchedulabili){
159
			DatiSchedulazione schedulazione = calcolaPeriodo(flussiSchedulabili.getTi03Periodicita().longValue(),flussiSchedulabili.getTi03Dataunatantum());
160
			if(schedulazione.isSchedulabile()){
161
				int numeroIscrizioni = (flussiSchedulabili.getTi03Progiscrizioneass() != null) ? 2 : 1;
162
				for(int iscrizione = 0; iscrizione < numeroIscrizioni; iscrizione ++){
163
					RicercaUltimoTentativoScaricoDAO ricercaUtilmoTentativoDAO = new RicercaUltimoTentativoScaricoDAO(flussiSchedulabili,schedulazione);
164
					helper.setDao(ricercaUtilmoTentativoDAO);
165
					int maxDettaglio = (int) helper.cercaOggetto();
166
					if(maxDettaglio == 0){
167
						int giorno = DateUtil.formatDayAsInt(new Date());
168
						if(giorno >= flussiSchedulabili.getTi03Inislot().intValue() && giorno <= flussiSchedulabili.getTi03Finslot().intValue()){
169
							int numeroTentativo = maxDettaglio +1;
170
							S3Ti04Servizidettaglio dettaglioSchedulazione = new S3Ti04Servizidettaglio();
171
							dettaglioSchedulazione.setTi04Progiscrizione(flussiSchedulabili.getTi03Progiscrizione());
172
							dettaglioSchedulazione.setTi04Keydett(new Long(numeroTentativo));
173
							dettaglioSchedulazione.setTi04FlagAss(iscrizione>0);
174
							dettaglioSchedulazione.setTi04Codstato(StatoScarico.IN_SCHEDULAZIONE.getId());
175
							dettaglioSchedulazione.setTi04PeriodoA(schedulazione.getPeriodoA());
176
							dettaglioSchedulazione.setTi04PeriodoDa(schedulazione.getPeriodoDa());
177
							dettaglioSchedulazione.setTi04DatatimeSched(new Date());
178
							dettaglioSchedulazione.setTi04Progiscrizioneass(flussiSchedulabili.getTi03Progiscrizioneass());
179
							dettaglioSchedulazione.setTi04NFile(0L);
180
							dettaglioSchedulazione.setTi04NFileTot(0L);
181
							dettaglioSchedulazione.setTi04Riavvio(0L);
182
							dettaglioSchedulazione.setTi04PresenzaFile(false);
183
							S3Ti04ServizidettaglioDAO dettaglioSchedulazioneDao = new S3Ti04ServizidettaglioDAO(dettaglioSchedulazione);
184
							helper.setDao(dettaglioSchedulazioneDao);
185
							helper.inserisciOggetto();
186
						}
187
					} else {
188
						S3Ti04Servizidettaglio dettaglioSchedulazione = new S3Ti04Servizidettaglio();
189
						dettaglioSchedulazione.setTi04Progiscrizione(flussiSchedulabili.getTi03Progiscrizione());
190
						dettaglioSchedulazione.setTi04Keydett(new Long(maxDettaglio));
191
						dettaglioSchedulazione.setTi04FlagAss(iscrizione>0);
192
						dettaglioSchedulazione.setTi04PeriodoA(schedulazione.getPeriodoA());
193
						dettaglioSchedulazione.setTi04PeriodoDa(schedulazione.getPeriodoDa());
194
						S3Ti04ServizidettaglioDAO dettaglioSchedulazioneDao = new S3Ti04ServizidettaglioDAO(dettaglioSchedulazione);
195
						helper.setDao(dettaglioSchedulazioneDao);
196
						S3Ti04Servizidettaglio ultimaSchedulazione = (S3Ti04Servizidettaglio) helper.cercaOggettoByKey();
197
						if(ultimaSchedulazione != null){
198
							if(ultimaSchedulazione.getTi04Codstato().longValue() == StatoScarico.ERRORE_WEB_SERVICE.getId() && 
199
									CalcoloDateUtil.calcoloNumeroGiorni(ultimaSchedulazione.getTi04DatatimeSched(), new Date())> 0){
200
								int numeroTentativo = ultimaSchedulazione.getTi04Keydett().intValue() +1;
201
								S3Ti04Servizidettaglio nuovaSchedulazione = new S3Ti04Servizidettaglio();
202
								nuovaSchedulazione.setTi04Progiscrizione(flussiSchedulabili.getTi03Progiscrizione());
203
								nuovaSchedulazione.setTi04Keydett(new Long(numeroTentativo));
204
								nuovaSchedulazione.setTi04FlagAss(iscrizione>0);
205
								nuovaSchedulazione.setTi04Codstato(StatoScarico.IN_SCHEDULAZIONE.getId());
206
								nuovaSchedulazione.setTi04PeriodoA(schedulazione.getPeriodoA());
207
								nuovaSchedulazione.setTi04PeriodoDa(schedulazione.getPeriodoDa());
208
								nuovaSchedulazione.setTi04DatatimeSched(new Date());
209
								nuovaSchedulazione.setTi04Progiscrizioneass(flussiSchedulabili.getTi03Progiscrizioneass());
210
								nuovaSchedulazione.setTi04NFile(0L);
211
								nuovaSchedulazione.setTi04NFileTot(0L);
212
								nuovaSchedulazione.setTi04Riavvio(0L);
213
								nuovaSchedulazione.setTi04PresenzaFile(false);
214
								S3Ti04ServizidettaglioDAO nuovaSchedulazioneDao = new S3Ti04ServizidettaglioDAO(nuovaSchedulazione);
215
								helper.setDao(nuovaSchedulazioneDao);
216
								helper.inserisciOggetto();
217
							} else if (ultimaSchedulazione.getTi04Codstato().longValue() == StatoScarico.ERRORE_WEB_SERVICE_RIAVVIABILE.getId()){
218
								ultimaSchedulazione.setTi04Riavvio(ultimaSchedulazione.getTi04Riavvio().longValue() + 1L);
219
								ultimaSchedulazione.setTi04Codstato(StatoScarico.IN_SCHEDULAZIONE.getId());
220
								S3Ti04ServizidettaglioDAO nuovaSchedulazioneDao = new S3Ti04ServizidettaglioDAO(ultimaSchedulazione);
221
								helper.setDao(nuovaSchedulazioneDao);
222
								helper.aggiornaOggettoByKey();
223
							}
224
						} else {
225
							log.error("Errore nessuna schedulazione trovata per progressivo " + flussiSchedulabili.getTi03Progiscrizione());
226
							execute = false;
227
						}
228
					}
229
				}
230
			}
231
		}
232
		return execute;
233
	}
234
 
235
 
236
 
237
	@Override
238
	@SuppressWarnings("unchecked")
239
	public boolean scaricaFlussiIncrementali() throws BusinessException {
240
		boolean execute = true;
241
		RicercaScarichiFlussiDAO daoScarico = new RicercaScarichiFlussiDAO();
242
		BusinessHelper helper = new BusinessHelper(daoScarico);
243
		List<RichiestaScarico> richiesteScarico = helper.cercaOggetti();
244
		for(RichiestaScarico richiestaScarico : richiesteScarico){
245
			richiestaScarico.setTi04Codstato(StatoScarico.SCHEDULATO.getId());
246
			S3Ti04ServizidettaglioDAO daoServizio = new S3Ti04ServizidettaglioDAO(richiestaScarico);
247
			helper.setDao(daoServizio);
248
			helper.aggiornaOggettoByKey();
249
			RicercaDatiServizioDAO daoDatiScarico = new RicercaDatiServizioDAO(richiestaScarico);
250
			helper.setDao(daoDatiScarico);
251
			DatiScarico datiScarico = (DatiScarico) helper.cercaOggetto();
252
			if(datiScarico == null){
253
				log.error("Nessun servizio configurato");
254
				throw new BusinessException("Nessun servizio configurato");
255
			}
256
			if(richiestaScarico.getTi04Riavvio().longValue() == 0L){
257
				richiestaScarico.setTi04NFile(1L);
258
			} else if (!richiestaScarico.getTi04PresenzaFile()){
259
				if(richiestaScarico.getTi04NFile().longValue() == 0L)
260
					richiestaScarico.setTi04NFile(1L);
261
			} else {
262
				S3Ti11Fileinterscambio fileinterscambio = new S3Ti11Fileinterscambio();
263
				fileinterscambio.setTi11Progiscrizione(richiestaScarico.getTi04Progiscrizione());
264
				fileinterscambio.setTi11PeriodoA(richiestaScarico.getTi04PeriodoA());
265
				fileinterscambio.setTi11PeriodoDa((richiestaScarico.getTi04PeriodoDa()));
266
				fileinterscambio.setTi11FlagAss(richiestaScarico.getTi04FlagAss());
267
				fileinterscambio.setTi11Keydett(richiestaScarico.getTi04Keydett());
268
				fileinterscambio.setTi11Idfile(richiestaScarico.getTi04NFile());
269
				S3Ti11FileinterscambioDAO daoFileInterscambio = new S3Ti11FileinterscambioDAO(fileinterscambio);
270
				helper.setDao(daoFileInterscambio);
271
				helper.deleteOggettoByKey();
272
				richiestaScarico.setTi04PresenzaFile(Boolean.FALSE);
273
				S3Ti04ServizidettaglioDAO daoServizioDettaglio = new S3Ti04ServizidettaglioDAO(richiestaScarico);
274
				helper.setDao(daoServizioDettaglio);
275
				helper.aggiornaOggettoByKey();
276
			}
277
			String codiceUfficio = richiestaScarico.getTi04Progiscrizione().substring(0, 2);
278
			long numeroFile = richiestaScarico.getTi04NFile().longValue();
279
			long numeroFileTotale = numeroFile;
280
			do{
281
				String nomeFile = richiestaScarico.getTi04Progiscrizione()+"_" + richiestaScarico.getPeriodoDaXML() +	numeroFile;
282
				if(richiestaScarico.getTi04FlagAss()){
283
					nomeFile = richiestaScarico.getTi04Progiscrizioneass()+"_" + richiestaScarico.getPeriodoDaXML() +	numeroFile;
284
				}
285
				ClientSoap clientSoap = new ClientSoap(codiceUfficio);
286
				try {
287
					SOAPMessage risposta = clientSoap.inviaRichiestaScarico(datiScarico, richiestaScarico,numeroFile);
288
					File fornituraZip = clientSoap.creaFileZipDaSalvare(nomeFile, risposta,richiestaScarico.getTi04FlagAss());
289
					clientSoap.aggiornaTraccia(fornituraZip);
290
 
291
					FileInputStream fornituraZipStream = new FileInputStream(fornituraZip);
292
					byte[] fileBlob = IOUtils.toByteArray(fornituraZipStream);
293
					IOUtils.closeQuietly(fornituraZipStream);
294
					S3Ti11Fileinterscambio fileinterscambio = new S3Ti11Fileinterscambio();
295
					fileinterscambio.setTi11Progiscrizione(richiestaScarico.getTi04Progiscrizione());
296
					fileinterscambio.setTi11PeriodoA(richiestaScarico.getTi04PeriodoA());
297
					fileinterscambio.setTi11PeriodoDa((richiestaScarico.getTi04PeriodoDa()));
298
					fileinterscambio.setTi11FlagAss(richiestaScarico.getTi04FlagAss());
299
					fileinterscambio.setTi11Keydett(richiestaScarico.getTi04Keydett());
300
					fileinterscambio.setTi11Idfile(numeroFile);
301
					fileinterscambio.setTi11Progiscrizioneass(richiestaScarico.getTi04Progiscrizioneass());
302
					fileinterscambio.setFornituraZip(fileBlob);
303
					S3Ti11FileinterscambioDAO daoFornitura = new S3Ti11FileinterscambioDAO(fileinterscambio);
304
					helper.setDao(daoFornitura);
305
					helper.inserisciOggetto();
306
					Long idStato = StatoScarico.WEB_SERVICE_TERMINATO_CORRETTAMENTE.getId();
307
					SOAPFault fault = risposta.getSOAPBody().getFault();
308
					if(fault != null){
309
						S3Ti05Errlog logError = new S3Ti05Errlog();
310
						logError.setTi05Keyerrore(20006L);
311
						logError.setTi05Erroredett("(20006)" + fault.getFaultString());
312
						logError.setTi05Datetime(new Date());
313
						logError.setTi05Progiscrizione(richiestaScarico.getTi04Progiscrizione());
314
						logError.setTi05Keydett(richiestaScarico.getTi04Keydett());
315
						logError.setTi05FlagAss(richiestaScarico.getTi04FlagAss());
316
						logError.setTi05PeriodoA(richiestaScarico.getTi04PeriodoA());
317
						logError.setTi05PeriodoDa(richiestaScarico.getTi04PeriodoDa());
318
						logError.setTi05Progiscrizioneass(richiestaScarico.getTi04Progiscrizioneass());
319
						logError.setTi05NFile(richiestaScarico.getTi04NFile());
320
						logError.setTi05IdTraccia(clientSoap.getTracciaRichieste().getTi17IdTraccia());
321
						inserisciErrore(logError);
322
						idStato = StatoScarico.ERRORE_WEB_SERVICE.getId();
323
						log.error("(20006)" + fault.getFaultString());
324
						execute = false;
325
					}
326
					numeroFileTotale = getNumeroFileDaScaricare(risposta, datiScarico,richiestaScarico.getTi04FlagAss().booleanValue());
327
					richiestaScarico.setTi04NFile(numeroFile);
328
					richiestaScarico.setTi04NFileTot(numeroFileTotale);
329
					richiestaScarico.setTi04PresenzaFile(Boolean.TRUE);
330
					richiestaScarico.setTi04DatatimeInizio(new Date());
331
					richiestaScarico.setTi04DatatimeFine(new Date());
332
					S3Ti04ServizidettaglioDAO daoServizioDettaglio = new S3Ti04ServizidettaglioDAO(richiestaScarico);
333
					richiestaScarico.setTi04Codstato(idStato);
334
					helper.setDao(daoServizioDettaglio);
335
					helper.aggiornaOggettoByKey();
336
					numeroFile = numeroFile +1;
337
				} catch (SOAPException | XMLStreamException | JAXBException | IOException | TransformerException e) {
338
					log.error("Errore durante chiamata al web service Agenzia " + e.getMessage(),e);
339
					e.printStackTrace();
340
					S3Ti05Errlog logError = new S3Ti05Errlog();
341
					logError.setTi05Keyerrore(20015L);
342
					logError.setTi05Erroredett("(20015)" + e.getMessage());
343
					logError.setTi05Datetime(new Date());
344
					logError.setTi05Progiscrizione(richiestaScarico.getTi04Progiscrizione());
345
					logError.setTi05Keydett(richiestaScarico.getTi04Keydett());
346
					logError.setTi05FlagAss(richiestaScarico.getTi04FlagAss());
347
					logError.setTi05PeriodoA(richiestaScarico.getTi04PeriodoA());
348
					logError.setTi05PeriodoDa(richiestaScarico.getTi04PeriodoDa());
349
					logError.setTi05Progiscrizioneass(richiestaScarico.getTi04Progiscrizioneass());
350
					logError.setTi05NFile(richiestaScarico.getTi04NFile());
351
					logError.setTi05IdTraccia(clientSoap.getTracciaRichieste().getTi17IdTraccia());
352
					inserisciErrore(logError);
353
					richiestaScarico.setTi04Codstato(StatoScarico.ERRORE_WEB_SERVICE_RIAVVIABILE.getId());
354
					S3Ti04ServizidettaglioDAO daoServizioDettaglio = new S3Ti04ServizidettaglioDAO(richiestaScarico);
355
					helper.setDao(daoServizioDettaglio);
356
					helper.aggiornaOggettoByKey();
357
					break;
358
				}
359
			} while(numeroFile <= numeroFileTotale);
360
		}
361
		return execute; 
362
	}
363
 
364
 
365
 
366
 
367
 
368
 
369
 
370
	private DatiSchedulazione calcolaPeriodo(Long periodicita, Date dataUnaTantum) {
371
 
372
		DatiSchedulazione datiSchedulazione = new DatiSchedulazione();
373
		int numeroMesi=0;
374
		switch (periodicita.intValue()) {
375
		case 0:
376
			numeroMesi = 0;
377
			break;	
378
 
379
		case 1:
380
			numeroMesi = 12;				
381
			break;	
382
 
383
		case 2:
384
			numeroMesi = 6;			
385
			break;	
386
 
387
		case 3:
388
			numeroMesi = 4;				
389
			break;	
390
 
391
		case 4:
392
			numeroMesi = 3;				
393
			break;	
394
 
395
		case 5:
396
			numeroMesi = 2;				
397
			break;	
398
 
399
		case 6:
400
			numeroMesi = 1;				
401
			break;	
402
		}
403
		if (numeroMesi != 0) {
404
			Date periodoA = CalcoloDateUtil.calcolaUltimoDelMese(CalcoloDateUtil.addMonthsToDate(new Date(),-1));
405
			datiSchedulazione.setPeriodoA(periodoA);
406
			int mese = CalcoloDateUtil.getMese(periodoA);
407
			if ((mese % numeroMesi) != 0) {
408
				datiSchedulazione.setSchedulabile(false);
409
			} else {
410
				datiSchedulazione.setSchedulabile(true);
411
				Date periodoDa = CalcoloDateUtil.calcolaPrimoDelMese(periodoA);
412
				datiSchedulazione.setPeriodoDa(periodoDa);
413
			}
414
		} else {
415
			Date periodoDa = CalcoloDateUtil.calcolaPrimoDelMese(dataUnaTantum);
416
			Date periodoA = CalcoloDateUtil.calcolaUltimoDelMese(dataUnaTantum);
417
			datiSchedulazione.setPeriodoA(periodoA);
418
			datiSchedulazione.setPeriodoDa(periodoDa);
419
			datiSchedulazione.setSchedulabile(true);
420
		}
421
		return datiSchedulazione;
422
	}
423
 
424
 
425
	private int getNumeroFileDaScaricare(SOAPMessage risposta,DatiScarico dati,boolean isAssociato) throws BusinessException{
426
		int numeroFileTotali=0;
427
		try{
428
			Iterator<?> filesInviati = risposta.getAttachments();
429
			while (filesInviati.hasNext()) {
430
				AttachmentPart  filePart = (AttachmentPart) filesInviati.next();
431
				if(filePart.getContentType().toLowerCase().contains("text")){
432
					byte[] byteFileXML = filePart.getRawContentBytes();
433
					ByteArrayInputStream fileXML = new ByteArrayInputStream(byteFileXML);
434
					String xml = FirmaUtil.getXML(fileXML);
435
					numeroFileTotali=ParserFactory.getInstance().getNumeroFileDaScaricare(xml, Long.parseLong(dati.getServizio()),isAssociato);
436
					break;
437
				} 
438
			}
439
			return numeroFileTotali;
440
		} catch(XMLStreamException |SOAPException | NumberFormatException | JAXBException e){
441
			log.error("Errore parsing xml richiesta " + e.getMessage(),e);
442
			throw new BusinessException(e);
443
		}  
444
	}
445
 
446
	@Override
447
	@SuppressWarnings("unchecked")
448
	public S3Ti01Comuni getComune(String codiceComune,String sezione) throws BusinessException{
449
		S3Ti01Comuni comune = new S3Ti01Comuni();
450
		comune.setTi01Keycom(codiceComune);
451
		comune.setTi01Keysez(sezione);
452
		S3Ti01ComuniDAO dao = new S3Ti01ComuniDAO(comune);
453
		BusinessHelper helper = new BusinessHelper(dao);
454
		List<S3Ti01Comuni> listaComuni = helper.cercaOggetti();
455
		return listaComuni.size() > 0 ? listaComuni.get(0) : null;
456
	}
457
 
458
	@Override
459
	public InputStream getDatiZip(S3Ti11Fileinterscambio fileInterscambio) 	throws BusinessException {
460
		try {
461
			S3Ti11FileinterscambioDAO dao = new S3Ti11FileinterscambioDAO(fileInterscambio);
462
			BusinessHelper helper = new BusinessHelper(dao);
463
			S3Ti11Fileinterscambio scarico = (S3Ti11Fileinterscambio) helper.cercaOggettoByKey();
464
			return scarico.getTi11Blob().getBinaryStream();
465
		} catch (SerialException e) {
466
			log.error("Errore dato zip " + e.getMessage());
467
			throw new BusinessException(e);
468
		}
469
	}
470
 
471
 
472
	@Override
473
	public DateValidazione getPeriodoValidazione(String codComune) throws BusinessException {
474
		S3Ti01Comuni comune = new S3Ti01Comuni();
475
		comune.setTi01Keycom(codComune);
476
		RicercaPeriodoValdiazioneDAO ricercaDAO = new RicercaPeriodoValdiazioneDAO(comune);
477
		BusinessHelper helper = new BusinessHelper(ricercaDAO);
478
		return (DateValidazione) helper.cercaOggetto();
479
	}
480
 
481
	@Override
482
	public S3Ti07Protocolli getNomeFornitura(String nomeFornitura) throws BusinessException {
483
		S3Ti07Protocolli protocolli = new S3Ti07Protocolli();
484
		protocolli.setTi07NomeFornitura(nomeFornitura);
485
		RicercaNomeFornituraDAO ricercaDAO = new RicercaNomeFornituraDAO(protocolli);
486
		BusinessHelper helper = new BusinessHelper(ricercaDAO);
487
		return (S3Ti07Protocolli) helper.cercaOggetto();
488
	}
489
 
490
 
491
	public void inserisciErrore(S3Ti05Errlog errore) throws BusinessException{
492
		SequenceDAO sequenceDAO  = new SequenceDAO("TI05_SEQ");
493
		BusinessHelper helper = new BusinessHelper(sequenceDAO);
494
		Long id = (Long)helper.cercaOggetto();
495
		errore.setTi05Id(new BigDecimal(id));
496
		S3Ti05ErrlogDAO daoErrrore = new S3Ti05ErrlogDAO(errore);
497
		helper.setDao(daoErrrore);
498
		helper.inserisciOggetto();
499
	}
500
 
501
 
502
}