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 | } |