Search in sources :

Example 1 with StorageFile

use of it.cnr.si.spring.storage.bulk.StorageFile in project sigla-main by consiglionazionaledellericerche.

the class DistintaCassiereComponent method generaFlussoSiopeplus.

public StorageObject generaFlussoSiopeplus(UserContext userContext, Distinta_cassiereBulk distinta) throws ComponentException, RemoteException {
    try {
        final DocumentiContabiliService documentiContabiliService = SpringUtil.getBean("documentiContabiliService", DocumentiContabiliService.class);
        DateTimeFormatter formatterTime = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
        JAXBContext jc = JAXBContext.newInstance("it.siopeplus");
        // creo i file del flusso
        // Testata
        final ObjectFactory objectFactory = new ObjectFactory();
        it.siopeplus.FlussoOrdinativi currentFlusso = objectFactory.createFlussoOrdinativi();
        Configurazione_cnrComponentSession sess = (Configurazione_cnrComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRCONFIG00_EJB_Configurazione_cnrComponentSession");
        String codiceAbi = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_ABI_BT)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_ABI_BT]"));
        String codiceA2A = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_A2A)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_A2A]"));
        String codiceEnte = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_ENTE)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_ENTE]"));
        String codiceEnteBT = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_ENTE_BT)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_ENTE_BT]"));
        String codiceTramiteBT = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_TRAMITE_BT)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_TRAMITE_BT]"));
        String codiceIstatEnte = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_ISTAT_ENTE)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_ISTAT_ENTE]"));
        final CtTestataFlusso testataFlusso = objectFactory.createCtTestataFlusso();
        testataFlusso.setCodiceABIBT(codiceAbi);
        testataFlusso.setRiferimentoEnte(codiceA2A);
        testataFlusso.setIdentificativoFlusso(distinta.getIdentificativoFlusso());
        testataFlusso.setDataOraCreazioneFlusso(DatatypeFactory.newInstance().newXMLGregorianCalendar(formatterTime.format(it.cnr.jada.util.ejb.EJBCommonServices.getServerTimestamp().toLocalDateTime())));
        testataFlusso.setCodiceEnte(codiceEnte);
        testataFlusso.setCodiceEnteBT(codiceEnteBT);
        testataFlusso.setCodiceTramiteEnte(codiceA2A);
        testataFlusso.setCodiceTramiteBT(codiceTramiteBT);
        AnagraficoComponentSession component = (AnagraficoComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRANAGRAF00_EJB_AnagraficoComponentSession");
        AnagraficoBulk uoEnte = component.getAnagraficoEnte(userContext);
        testataFlusso.setDescrizioneEnte(uoEnte.getRagione_sociale());
        testataFlusso.setCodiceIstatEnte(codiceIstatEnte);
        testataFlusso.setCodiceFiscaleEnte(uoEnte.getCodice_fiscale());
        currentFlusso.getContent().add(objectFactory.createTestataFlusso(testataFlusso));
        currentFlusso.getContent().add(objectFactory.createEsercizio(CNRUserContext.getEsercizio(userContext)));
        List dettagliRev = dettagliDistinta(userContext, distinta, it.cnr.contab.doccont00.core.bulk.Numerazione_doc_contBulk.TIPO_REV);
        // Elaboriamo prima le reversali
        Reversale currentReversale = null;
        for (Iterator i = dettagliRev.iterator(); i.hasNext(); ) {
            V_mandato_reversaleBulk bulk = (V_mandato_reversaleBulk) i.next();
            currentFlusso.getContent().add(objectFactory.createReversale(creaReversaleFlussoSiopeplus(userContext, bulk)));
        }
        List dettagliMan = dettagliDistinta(userContext, distinta, it.cnr.contab.doccont00.core.bulk.Numerazione_doc_contBulk.TIPO_MAN);
        // Mandati
        Mandato currentMandato = null;
        for (Iterator i = dettagliMan.iterator(); i.hasNext(); ) {
            V_mandato_reversaleBulk bulk = (V_mandato_reversaleBulk) i.next();
            currentFlusso.getContent().add(objectFactory.createMandato(creaMandatoFlussoSiopeplus(userContext, bulk)));
        }
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        Marshaller jaxbMarshaller = jc.createMarshaller();
        jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
        jaxbMarshaller.marshal(currentFlusso, byteArrayOutputStream);
        // FIX per firma xml
        String out = new String(byteArrayOutputStream.toByteArray(), StandardCharsets.UTF_8);
        out = out.replace("</flusso_ordinativi>", "\n</flusso_ordinativi>");
        StorageFile storageFile = new StorageFile(out.getBytes(StandardCharsets.UTF_8), MimeTypes.XML.mimetype(), distinta.getFileNameXML());
        final StorageObject storageObject = documentiContabiliService.getStorageObjectBykey(documentiContabiliService.restoreSimpleDocument(storageFile, new ByteArrayInputStream(storageFile.getBytes()), storageFile.getContentType(), storageFile.getFileName(), distinta.getStorePath(), true).getKey());
        final BigInteger dimension = storageObject.<BigInteger>getPropertyValue(StoragePropertyNames.CONTENT_STREAM_LENGTH.value()).divide(BigInteger.valueOf(1024));
        if (dimension.add(BigInteger.valueOf(7)).compareTo(DistintaCassiereComponentSession.MAX_OPI_DIMENSION) > 0) {
            throw new ApplicationMessageFormatException("La dimensione del flusso {0}kbytes supera la dimensione massima consentita {1}kbytes!", dimension.add(BigInteger.valueOf(7)), DistintaCassiereComponentSession.MAX_OPI_DIMENSION);
        }
        return storageObject;
    } catch (Exception e) {
        throw handleException(e);
    }
}
Also used : DocumentiContabiliService(it.cnr.contab.doccont00.service.DocumentiContabiliService) JAXBContext(javax.xml.bind.JAXBContext) RemoteIterator(it.cnr.jada.util.RemoteIterator) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) Configurazione_cnrComponentSession(it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession) Marshaller(javax.xml.bind.Marshaller) StorageObject(it.cnr.si.spring.storage.StorageObject) it.siopeplus(it.siopeplus) AnagraficoBulk(it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk) DatatypeConfigurationException(javax.xml.datatype.DatatypeConfigurationException) CRUDNotDeletableException(it.cnr.jada.comp.CRUDNotDeletableException) CompletionException(java.util.concurrent.CompletionException) RemoteException(java.rmi.RemoteException) BusinessProcessException(it.cnr.jada.action.BusinessProcessException) EJBException(javax.ejb.EJBException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) SQLException(java.sql.SQLException) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) ComponentException(it.cnr.jada.comp.ComponentException) ApplicationException(it.cnr.jada.comp.ApplicationException) AnagraficoComponentSession(it.cnr.contab.anagraf00.ejb.AnagraficoComponentSession) StorageFile(it.cnr.si.spring.storage.bulk.StorageFile) BigInteger(java.math.BigInteger) DateTimeFormatter(java.time.format.DateTimeFormatter)

Example 2 with StorageFile

use of it.cnr.si.spring.storage.bulk.StorageFile in project sigla-main by consiglionazionaledellericerche.

the class TrasmissioneFatture method salvaFileSuDocumentale.

private void salvaFileSuDocumentale(DataHandler data, String nomeFile, Fattura_attivaBulk fattura, StorageDocAmmAspect aspect) throws IOException, ApplicationException {
    logger.info("Inizio Salvataggio sul Documentale");
    DocumentiCollegatiDocAmmService documentiCollegatiDocAmmService = SpringUtil.getBean("documentiCollegatiDocAmmService", DocumentiCollegatiDocAmmService.class);
    StorageFile storageFile = new StorageFileFatturaAttiva(data.getInputStream(), data.getContentType(), nomeFile, fattura);
    if (storageFile != null) {
        String path = storageFile.getStorageParentPath();
        try {
            StorageObject storageObject = documentiCollegatiDocAmmService.restoreSimpleDocument(storageFile, storageFile.getInputStream(), storageFile.getContentType(), storageFile.getFileName(), path, true);
            documentiCollegatiDocAmmService.addAspect(storageObject, aspect.value());
            storageFile.setStorageObject(storageObject);
            logger.info("Salvato file sul Documentale");
        } catch (StorageException e) {
            if (e.getType().equals(StorageException.Type.CONSTRAINT_VIOLATED))
                throw new ApplicationException("CMIS - File Ricevuta Consegna [" + storageFile.getFileName() + "] già presente o non completo di tutte le proprietà obbligatorie. Inserimento non possibile!");
            throw new ApplicationException("CMIS - Errore nella registrazione del file Ricevuta Consegna  sul Documentale (" + e.getMessage() + ")");
        }
    }
}
Also used : StorageObject(it.cnr.si.spring.storage.StorageObject) ApplicationException(it.cnr.jada.comp.ApplicationException) DocumentiCollegatiDocAmmService(it.cnr.contab.docamm00.service.DocumentiCollegatiDocAmmService) StorageFileFatturaAttiva(it.cnr.contab.docamm00.storage.StorageFileFatturaAttiva) StorageFile(it.cnr.si.spring.storage.bulk.StorageFile) StorageException(it.cnr.si.spring.storage.StorageException)

Example 3 with StorageFile

use of it.cnr.si.spring.storage.bulk.StorageFile in project sigla-main by consiglionazionaledellericerche.

the class CRUDDistintaCassiereBP method invia.

public void invia(ActionContext context, FirmaOTPBulk firmaOTPBulk) throws Exception {
    Map<String, String> subjectDN = Optional.ofNullable(SpringUtil.getBean("documentiContabiliService", DocumentiContabiliService.class).getCertSubjectDN(firmaOTPBulk.getUserName(), firmaOTPBulk.getPassword())).orElseThrow(() -> new ApplicationException("Errore nella lettura dei certificati!\nVerificare Nome Utente e Password!"));
    if (Optional.ofNullable(controlloCodiceFiscale).filter(s -> s.equalsIgnoreCase("Y")).isPresent()) {
        SpringUtil.getBean("documentiContabiliService", DocumentiContabiliService.class).controllaCodiceFiscale(subjectDN, ((CNRUserInfo) context.getUserInfo()).getUtente());
    }
    if (!this.isFlusso() && !this.isAnnulli() && isAttivoSiopeplus()) {
        Distinta_cassiereBulk distintaProvvisoria = (Distinta_cassiereBulk) getModel();
        // spostato nel salva definitivo anche in questo caso
        StorageObject distintaStorageObject = Optional.ofNullable(distintaProvvisoria.getPg_distinta_def()).map(paDistintaDef -> documentiContabiliService.getStorageObjectByPath(distintaProvvisoria.getStorePath().concat(StorageDriver.SUFFIX).concat(distintaProvvisoria.getCMISName()))).orElse(inviaDistinta(context, distintaProvvisoria));
        Distinta_cassiereBulk distinta = (Distinta_cassiereBulk) getModel();
        List<String> nodes = new ArrayList<String>();
        nodes.add(distintaStorageObject.getPropertyValue(StoragePropertyNames.ALFCMIS_NODEREF.value()));
        List<V_mandato_reversaleBulk> dettagliRev = ((DistintaCassiereComponentSession) createComponentSession()).dettagliDistinta(context.getUserContext(), distinta, it.cnr.contab.doccont00.core.bulk.Numerazione_doc_contBulk.TIPO_REV);
        dettagliRev.stream().map(v_mandato_reversaleBulk -> documentiContabiliService.getDocumentKey(v_mandato_reversaleBulk, true)).filter(s -> s != null).forEach(s -> nodes.add(s));
        List<V_mandato_reversaleBulk> dettagliMan = ((DistintaCassiereComponentSession) createComponentSession()).dettagliDistinta(context.getUserContext(), distinta, it.cnr.contab.doccont00.core.bulk.Numerazione_doc_contBulk.TIPO_MAN);
        dettagliMan.stream().map(v_mandato_reversaleBulk -> documentiContabiliService.getDocumentKey(v_mandato_reversaleBulk, true)).filter(s -> s != null).forEach(s -> nodes.add(s));
        PdfSignApparence pdfSignApparence = new PdfSignApparence();
        pdfSignApparence.setNodes(nodes);
        pdfSignApparence.setUsername(firmaOTPBulk.getUserName());
        pdfSignApparence.setPassword(firmaOTPBulk.getPassword());
        pdfSignApparence.setOtp(firmaOTPBulk.getOtp());
        Apparence apparence = new Apparence(null, "Rome", "Firma ", "per invio all'Istituto cassiere\nFirmato dal " + getTitolo() + "\n" + subjectDN.get("GIVENNAME") + " " + subjectDN.get("SURNAME"), 400, 120, 1, 550, 80);
        // 300, 40,  1, 550, 80);
        pdfSignApparence.setApparence(apparence);
        try {
            documentiContabiliService.signDocuments(pdfSignApparence, "service/sigla/firma/doccont");
        } catch (StorageException _ex) {
            throw new ApplicationException(FirmaOTPBulk.errorMessage(_ex.getMessage()));
        }
        try {
            if (!this.isAnnulli()) {
                if (distinta.getEsercizio() != null && distinta.getPg_distinta_def() != null)
                    documentiContabiliService.inviaDistintaPEC(nodes, this.isSepa(), distinta.getEsercizio() + "/" + distinta.getPg_distinta_def());
                else
                    documentiContabiliService.inviaDistintaPEC(nodes, this.isSepa(), null);
            }
            distinta.setDt_invio_pec(DateServices.getDt_valida(context.getUserContext()));
            distinta.setUser(context.getUserContext().getUser());
            distinta.setToBeUpdated();
            setModel(context, createComponentSession().modificaConBulk(context.getUserContext(), distinta));
            commitUserTransaction();
            setMessage("Invio effettuato correttamente.");
        } catch (IOException e) {
            throw new BusinessProcessException(e);
        } catch (Exception e) {
            throw new BusinessProcessException(e);
        }
    } else {
        Distinta_cassiereBulk distinta = (Distinta_cassiereBulk) getModel();
        generaXML(context);
        File file = new File(System.getProperty("tmp.dir.SIGLAWeb") + getFile());
        StorageFile storageFile = new StorageFile(file, file.getName());
        if (storageFile != null) {
            // E' previsto solo l'inserimento ma non l'aggiornamento
            try {
                StorageObject storageObject = documentiContabiliService.restoreSimpleDocument(storageFile, storageFile.getInputStream(), storageFile.getContentType(), storageFile.getFileName(), distinta.getStorePath(), false);
                storageFile.setStorageObject(storageObject);
            } catch (StorageException e) {
                if (e.getType().equals(StorageException.Type.CONSTRAINT_VIOLATED))
                    throw new ApplicationException("File [" + storageFile.getFileName() + "] già presente o non completo di tutte le proprietà obbligatorie. Inserimento non possibile!");
                throw new ApplicationException("Errore nella registrazione del file XML sul Documentale (" + e.getMessage() + ")");
            }
            if (storageFile.getStorageObject().<BigInteger>getPropertyValue(StoragePropertyNames.CONTENT_STREAM_LENGTH.value()).intValue() > 0) {
                Optional.ofNullable(documentiContabiliService.getStorageObjectByPath(distinta.getStorePath().concat(StorageDriver.SUFFIX).concat(String.valueOf(distinta.getEsercizio())).concat("-").concat(distinta.getCd_unita_organizzativa()).concat("-").concat(String.valueOf(distinta.getPg_distinta_def())).concat("-I.").concat(formatoflusso).concat(".p7m"))).ifPresent(storageObject -> documentiContabiliService.delete(storageObject));
                String nomeFile = file.getName();
                String nomeFileP7m = nomeFile + ".p7m";
                SignP7M signP7M = new SignP7M(storageFile.getStorageObject().getPropertyValue(StoragePropertyNames.ALFCMIS_NODEREF.value()), firmaOTPBulk.getUserName(), firmaOTPBulk.getPassword(), firmaOTPBulk.getOtp(), nomeFileP7m);
                try {
                    final String signDocument = documentiContabiliService.signDocuments(signP7M, "service/sigla/firma/p7m", distinta.getStorePath());
                    documentiContabiliService.inviaDistintaPEC(Arrays.asList(signDocument), this.isSepa(), "<acquisizione_flusso_ordinativi_sepa>");
                    distinta.setDt_invio_pec(DateServices.getDt_valida(context.getUserContext()));
                    distinta.setUser(context.getUserContext().getUser());
                    distinta.setToBeUpdated();
                    final OggettoBulk oggettoBulk = createComponentSession().modificaConBulk(context.getUserContext(), distinta);
                    commitUserTransaction();
                    initializeModelForEdit(context, oggettoBulk);
                    setMessage("Invio effettuato correttamente.");
                } catch (StorageException _ex) {
                    throw new ApplicationException(FirmaOTPBulk.errorMessage(_ex.getMessage()));
                }
            } else {
                throw new ApplicationException("Errore durante il processo di firma elettronica. Ripetere l'operazione di firma!");
            }
        }
    }
}
Also used : ObjectFactory(it.cnr.contab.doccont00.intcass.xmlbnl.ObjectFactory) Format(java.text.Format) ServletException(javax.servlet.ServletException) LoggerFactory(org.slf4j.LoggerFactory) ActionContext(it.cnr.jada.action.ActionContext) DatatypeFactory(javax.xml.datatype.DatatypeFactory) Button(it.cnr.jada.util.jsp.Button) StatoTrasmissione(it.cnr.contab.doccont00.intcass.bulk.StatoTrasmissione) BigDecimal(java.math.BigDecimal) StorageException(it.cnr.si.spring.storage.StorageException) FlussoOrdinativi(it.cnr.contab.doccont00.intcass.xmlbnl.FlussoOrdinativi) DistintaCassiereComponent(it.cnr.contab.doccont00.comp.DistintaCassiereComponent) Reversale(it.cnr.contab.doccont00.intcass.xmlbnl.Reversale) DatatypeConstants(javax.xml.datatype.DatatypeConstants) XmlSignatureType(it.cnr.si.firmadigitale.firma.arss.stub.XmlSignatureType) BigInteger(java.math.BigInteger) PrintService(it.cnr.contab.reports.service.PrintService) Print_spooler_paramBulk(it.cnr.contab.reports.bulk.Print_spooler_paramBulk) StorageObject(it.cnr.si.spring.storage.StorageObject) it.cnr.contab.util(it.cnr.contab.util) EJBCommonServices(it.cnr.jada.util.ejb.EJBCommonServices) Risultato(it.cnr.si.siopeplus.model.Risultato) Parametri_cnrBulk(it.cnr.contab.config00.bulk.Parametri_cnrBulk) Collectors(java.util.stream.Collectors) OrdinativiSiopePlusService(it.cnr.si.siopeplus.service.OrdinativiSiopePlusService) RemoteException(java.rmi.RemoteException) BusinessProcessException(it.cnr.jada.action.BusinessProcessException) FirmaOTPBulk(it.cnr.contab.firma.bulk.FirmaOTPBulk) StorageDriver(it.cnr.si.spring.storage.StorageDriver) IOUtils(org.apache.commons.io.IOUtils) AbstractPrintBP(it.cnr.jada.util.action.AbstractPrintBP) SAXException(org.xml.sax.SAXException) StoragePropertyNames(it.cnr.si.spring.storage.config.StoragePropertyNames) AnagraficoBulk(it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk) SpringUtil(it.cnr.contab.service.SpringUtil) ArubaSignServiceClient(it.cnr.si.firmadigitale.firma.arss.ArubaSignServiceClient) UserContext(it.cnr.jada.UserContext) HttpActionContext(it.cnr.jada.action.HttpActionContext) Classificazione(it.cnr.contab.doccont00.intcass.xmlbnl.Mandato.InformazioniBeneficiario.Classificazione) OggettoBulk(it.cnr.jada.bulk.OggettoBulk) java.util(java.util) Unita_organizzativaBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk) V_mandato_reversaleBulk(it.cnr.contab.doccont00.intcass.bulk.V_mandato_reversaleBulk) PageContext(javax.servlet.jsp.PageContext) Marshaller(javax.xml.bind.Marshaller) DistintaCassiereComponentSession(it.cnr.contab.doccont00.ejb.DistintaCassiereComponentSession) SimpleDateFormat(java.text.SimpleDateFormat) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk) HttpServletRequest(javax.servlet.http.HttpServletRequest) AllegatiCRUDBP(it.cnr.contab.util00.bp.AllegatiCRUDBP) CRUDComponentSession(it.cnr.jada.ejb.CRUDComponentSession) DocumentiContabiliService(it.cnr.contab.doccont00.service.DocumentiContabiliService) BancaBulk(it.cnr.contab.anagraf00.core.bulk.BancaBulk) RemoteIterator(it.cnr.jada.util.RemoteIterator) SIOPEPlusServiceUnavailable(it.cnr.si.siopeplus.exception.SIOPEPlusServiceUnavailable) Distinta_cassiereBulk(it.cnr.contab.doccont00.intcass.bulk.Distinta_cassiereBulk) RemoteDetailCRUDController(it.cnr.jada.util.action.RemoteDetailCRUDController) JAXBContext(javax.xml.bind.JAXBContext) VDocumentiFlussoBulk(it.cnr.contab.doccont00.intcass.bulk.VDocumentiFlussoBulk) AbilitatoFirma(it.cnr.contab.utenze00.bulk.AbilitatoFirma) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) Configurazione_cnrComponentSession(it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession) ApplicationException(it.cnr.jada.comp.ApplicationException) Logger(org.slf4j.Logger) Rif_modalita_pagamentoBulk(it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk) Print_spoolerBulk(it.cnr.contab.reports.bulk.Print_spoolerBulk) HttpServletResponse(javax.servlet.http.HttpServletResponse) UtenteFirmaDettaglioBulk(it.cnr.contab.utenze00.bulk.UtenteFirmaDettaglioBulk) MandatoBulk(it.cnr.contab.doccont00.core.bulk.MandatoBulk) StorageFile(it.cnr.si.spring.storage.bulk.StorageFile) XMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar) AllegatoGenericoBulk(it.cnr.contab.util00.bulk.storage.AllegatoGenericoBulk) DateServices(it.cnr.contab.doccont00.comp.DateServices) Report(it.cnr.contab.reports.bulk.Report) ArubaSignServiceException(it.cnr.si.firmadigitale.firma.arss.ArubaSignServiceException) CNRUserInfo(it.cnr.contab.utenze00.bulk.CNRUserInfo) MimeTypes(it.cnr.si.spring.storage.MimeTypes) java.io(java.io) UtenteComponentSession(it.cnr.contab.utente00.ejb.UtenteComponentSession) JSPUtils(it.cnr.jada.util.jsp.JSPUtils) DateTimeFormatter(java.time.format.DateTimeFormatter) StatoVariazioneSostituzione(it.cnr.contab.util.enumeration.StatoVariazioneSostituzione) Liquid_coriComponentSession(it.cnr.contab.cori00.ejb.Liquid_coriComponentSession) ReversaleBulk(it.cnr.contab.doccont00.core.bulk.ReversaleBulk) Mandato(it.cnr.contab.doccont00.intcass.xmlbnl.Mandato) OfflineReportPrintBP(it.cnr.contab.reports.bp.OfflineReportPrintBP) ComponentException(it.cnr.jada.comp.ComponentException) CompoundFindClause(it.cnr.jada.persistency.sql.CompoundFindClause) DocumentiContabiliService(it.cnr.contab.doccont00.service.DocumentiContabiliService) StorageObject(it.cnr.si.spring.storage.StorageObject) OggettoBulk(it.cnr.jada.bulk.OggettoBulk) BusinessProcessException(it.cnr.jada.action.BusinessProcessException) ServletException(javax.servlet.ServletException) StorageException(it.cnr.si.spring.storage.StorageException) RemoteException(java.rmi.RemoteException) BusinessProcessException(it.cnr.jada.action.BusinessProcessException) SAXException(org.xml.sax.SAXException) ApplicationException(it.cnr.jada.comp.ApplicationException) ArubaSignServiceException(it.cnr.si.firmadigitale.firma.arss.ArubaSignServiceException) ComponentException(it.cnr.jada.comp.ComponentException) ApplicationException(it.cnr.jada.comp.ApplicationException) V_mandato_reversaleBulk(it.cnr.contab.doccont00.intcass.bulk.V_mandato_reversaleBulk) Distinta_cassiereBulk(it.cnr.contab.doccont00.intcass.bulk.Distinta_cassiereBulk) DistintaCassiereComponentSession(it.cnr.contab.doccont00.ejb.DistintaCassiereComponentSession) StorageFile(it.cnr.si.spring.storage.bulk.StorageFile) BigInteger(java.math.BigInteger) StorageException(it.cnr.si.spring.storage.StorageException) StorageFile(it.cnr.si.spring.storage.bulk.StorageFile)

Example 4 with StorageFile

use of it.cnr.si.spring.storage.bulk.StorageFile in project sigla-main by consiglionazionaledellericerche.

the class DocumentiContabiliService method messaggioACK.

private void messaggioACK(Risultato risultato) throws RemoteException, ComponentException {
    final MessaggioXML<MessaggioAckSiope> messaggioXML = ordinativiSiopePlusService.getLocation(risultato.getLocation(), MessaggioAckSiope.class);
    final MessaggioAckSiope messaggioAckSiope = messaggioXML.getObject();
    logger.info("Identificativo flusso: {}", messaggioAckSiope.getIdentificativoFlusso());
    Distinta_cassiereBulk distinta = fetchDistinta_cassiereBulk(messaggioAckSiope.getIdentificativoFlusso());
    /**
     * Carico il file del messaggio
     */
    StorageFile storageFile = new StorageFile(messaggioXML.getContent(), MimeTypes.XML.mimetype(), messaggioXML.getName());
    storageFile.setTitle("Acquisito il " + formatter.format(risultato.getDataProduzione().toInstant().atZone(ZoneId.systemDefault())));
    final Integer progFlusso = risultato.getProgFlusso();
    StringBuffer description = new StringBuffer();
    switch(messaggioAckSiope.getStatoFlusso()) {
        case WARNING:
            {
                description.append("WARNING:\n");
                messaggioAckSiope.getWarning().stream().map(ctErroreACK -> ctErroreACK.getDescrizione().concat(" - ").concat(ctErroreACK.getElemento())).peek(logger::warn).forEach(s -> {
                    description.append(s.concat("\n"));
                });
                Optional.ofNullable(distinta.getStato()).filter(s -> s.equals(Distinta_cassiereBulk.Stato.TRASMESSA.value())).ifPresent(s -> distinta.setStato(Distinta_cassiereBulk.Stato.ACCETTATO_SIOPEPLUS));
                break;
            }
        case OK:
            {
                Optional.ofNullable(distinta.getStato()).filter(s -> s.equals(Distinta_cassiereBulk.Stato.TRASMESSA.value())).ifPresent(s -> distinta.setStato(Distinta_cassiereBulk.Stato.ACCETTATO_SIOPEPLUS));
                break;
            }
        case KO:
            {
                description.append("ERROR:\n");
                messaggioAckSiope.getErrore().stream().map(ctErroreACK -> ctErroreACK.getDescrizione().concat(" - ").concat(ctErroreACK.getElemento())).peek(logger::error).forEach(s -> {
                    description.append(s.concat("\n"));
                });
                distinta.setStato(Distinta_cassiereBulk.Stato.RIFIUTATO_SIOPEPLUS);
                break;
            }
    }
    storageFile.setDescription(description.toString());
    final StorageObject storageObject = restoreSimpleDocument(storageFile, new ByteArrayInputStream(storageFile.getBytes()), storageFile.getContentType(), storageFile.getFileName(), distinta.getStorePath(), true);
    distinta.setToBeUpdated();
    crudComponentSession.modificaConBulk(userContext, distinta);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) WSUserContext(it.cnr.contab.utenze00.bp.WSUserContext) FlussoGiornaleDiCassaKey(it.cnr.contab.doccont00.intcass.giornaliera.FlussoGiornaleDiCassaKey) LoggerFactory(org.slf4j.LoggerFactory) SendMail(it.cnr.jada.util.SendMail) FlussoGiornaleDiCassa(it.cnr.si.siopeplus.giornaledicassa.FlussoGiornaleDiCassa) Autowired(org.springframework.beans.factory.annotation.Autowired) MessaggiEsitoApplicativo(it.cnr.si.siopeplus.MessaggiEsitoApplicativo) GsonBuilder(com.google.gson.GsonBuilder) PDFMergerUtility(org.apache.pdfbox.multipdf.PDFMergerUtility) StatoTrasmissione(it.cnr.contab.doccont00.intcass.bulk.StatoTrasmissione) DistintaCassiereComponent(it.cnr.contab.doccont00.comp.DistintaCassiereComponent) MovimentoContoEvidenzaBulk(it.cnr.contab.doccont00.intcass.giornaliera.MovimentoContoEvidenzaBulk) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) InformazioniContoEvidenzaBulk(it.cnr.contab.doccont00.intcass.giornaliera.InformazioniContoEvidenzaBulk) NotImplementedException(org.apache.commons.lang.NotImplementedException) UtilService(it.cnr.contab.spring.service.UtilService) V_ext_cassiere00Bulk(it.cnr.contab.doccont00.intcass.bulk.V_ext_cassiere00Bulk) EsitoOperazione(it.cnr.contab.util.enumeration.EsitoOperazione) ReversaleIBulk(it.cnr.contab.doccont00.core.bulk.ReversaleIBulk) MessaggioRifiutoFlusso(it.cnr.si.siopeplus.MessaggioRifiutoFlusso) UtenteBulk(it.cnr.contab.utenze00.bulk.UtenteBulk) Timestamp(java.sql.Timestamp) MandatoIBulk(it.cnr.contab.doccont00.core.bulk.MandatoIBulk) SIOPEPlusEsitoBulk(it.cnr.contab.siope.plus.bulk.SIOPEPlusEsitoBulk) it.cnr.contab.util(it.cnr.contab.util) EJBCommonServices(it.cnr.jada.util.ejb.EJBCommonServices) Risultato(it.cnr.si.siopeplus.model.Risultato) Collectors(java.util.stream.Collectors) OrdinativiSiopePlusService(it.cnr.si.siopeplus.service.OrdinativiSiopePlusService) ZoneId(java.time.ZoneId) RemoteException(java.rmi.RemoteException) IOUtils(org.apache.commons.io.IOUtils) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) Principal(java.security.Principal) Stream(java.util.stream.Stream) MandatoComponentSession(it.cnr.contab.doccont00.ejb.MandatoComponentSession) SIOPEPlusRisultatoBulk(it.cnr.contab.siope.plus.bulk.SIOPEPlusRisultatoBulk) EmailException(org.apache.commons.mail.EmailException) Esito(it.cnr.si.siopeplus.model.Esito) StoragePropertyNames(it.cnr.si.spring.storage.config.StoragePropertyNames) ArubaSignServiceClient(it.cnr.si.firmadigitale.firma.arss.ArubaSignServiceClient) UserContext(it.cnr.jada.UserContext) OggettoBulk(it.cnr.jada.bulk.OggettoBulk) java.util(java.util) V_mandato_reversaleBulk(it.cnr.contab.doccont00.intcass.bulk.V_mandato_reversaleBulk) GiornaleDiCassaSiopePlusService(it.cnr.si.siopeplus.service.GiornaleDiCassaSiopePlusService) LocalDateTime(java.time.LocalDateTime) DistintaCassiereComponentSession(it.cnr.contab.doccont00.ejb.DistintaCassiereComponentSession) AtomicReference(java.util.concurrent.atomic.AtomicReference) InitializingBean(org.springframework.beans.factory.InitializingBean) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk) Value(org.springframework.beans.factory.annotation.Value) EmailAttachment(org.apache.commons.mail.EmailAttachment) SimplePECMail(it.cnr.jada.util.mail.SimplePECMail) ReversaleComponentSession(it.cnr.contab.doccont00.ejb.ReversaleComponentSession) CRUDComponentSession(it.cnr.jada.ejb.CRUDComponentSession) it.siopeplus(it.siopeplus) InformazioniContoEvidenza(it.siopeplus.giornaledicassa.InformazioniContoEvidenza) Distinta_cassiereBulk(it.cnr.contab.doccont00.intcass.bulk.Distinta_cassiereBulk) Configurazione_cnrComponentSession(it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) Logger(org.slf4j.Logger) Rif_modalita_pagamentoBulk(it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk) EsitoFlusso(it.cnr.si.siopeplus.EsitoFlusso) MandatoBulk(it.cnr.contab.doccont00.core.bulk.MandatoBulk) StorageFile(it.cnr.si.spring.storage.bulk.StorageFile) Lista(it.cnr.si.siopeplus.model.Lista) MemoryUsageSetting(org.apache.pdfbox.io.MemoryUsageSetting) ArubaSignServiceException(it.cnr.si.firmadigitale.firma.arss.ArubaSignServiceException) java.io(java.io) FlussoGiornaleDiCassaBulk(it.cnr.contab.doccont00.intcass.giornaliera.FlussoGiornaleDiCassaBulk) DateTimeFormatter(java.time.format.DateTimeFormatter) DataSource(javax.activation.DataSource) MessaggioXML(it.cnr.si.siopeplus.model.MessaggioXML) ReversaleBulk(it.cnr.contab.doccont00.core.bulk.ReversaleBulk) ComponentException(it.cnr.jada.comp.ComponentException) it.cnr.si.spring.storage(it.cnr.si.spring.storage) Distinta_cassiereBulk(it.cnr.contab.doccont00.intcass.bulk.Distinta_cassiereBulk) StorageFile(it.cnr.si.spring.storage.bulk.StorageFile)

Example 5 with StorageFile

use of it.cnr.si.spring.storage.bulk.StorageFile in project sigla-main by consiglionazionaledellericerche.

the class DocumentiCollegatiDocAmmService method archiviaFileCMIS.

private void archiviaFileCMIS(UserContext userContext, DocumentiCollegatiDocAmmService documentiCollegatiDocAmmService, Fattura_attivaBulk fattura, File file) throws ComponentException {
    List<StorageFile> storageFileCreate = new ArrayList<StorageFile>();
    List<StorageFile> storageFileAnnullati = new ArrayList<StorageFile>();
    try {
        StorageFileFatturaAttiva storageFile = new StorageFileFatturaAttiva(file, fattura, "application/pdf", "FAPP" + fattura.constructCMISNomeFile() + ".pdf");
        String path = storageFile.getStorageParentPath();
        StorageObject folder = documentiCollegatiDocAmmService.getStorageObjectByPath(path);
        try {
            Optional.ofNullable(documentiCollegatiDocAmmService.restoreSimpleDocument(storageFile, storageFile.getInputStream(), storageFile.getContentType(), storageFile.getFileName(), path, true)).ifPresent(storageObject -> {
                List<String> aspects = storageObject.<List<String>>getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value());
                aspects.add(StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_STAMPA_FATTURA_PRIMA_PROTOCOLLO.value());
                documentiCollegatiDocAmmService.updateProperties(storageFile.getCMISFolder(fattura), folder);
                documentiCollegatiDocAmmService.updateProperties(Collections.singletonMap(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value(), aspects), storageObject);
                storageFile.setStorageObject(storageObject);
                storageFileCreate.add(storageFile);
            });
        } catch (StorageException _ex) {
            if (_ex.getType().equals(StorageException.Type.CONSTRAINT_VIOLATED))
                throw new ApplicationException("CMIS - File [" + storageFile.getFileName() + "] già presente o non completo di tutte le proprietà obbligatorie. Inserimento non possibile!");
            throw new ApplicationException("CMIS - Errore nella registrazione del file XML sul Documentale (" + _ex.getMessage() + ")");
        }
    } catch (Exception e) {
        // Codice per riallineare il documentale allo stato precedente rispetto alle modifiche
        for (StorageFile storageFile : storageFileCreate) documentiCollegatiDocAmmService.delete(storageFile.getStorageObject());
        for (StorageFile storageFile : storageFileAnnullati) {
            String cmisFileName = storageFile.getFileName();
            String cmisFileEstensione = cmisFileName.substring(cmisFileName.lastIndexOf(".") + 1);
            String stringToDelete = cmisFileName.substring(cmisFileName.indexOf("-ANNULLATO"));
            storageFile.setFileName(cmisFileName.replace(stringToDelete, "." + cmisFileEstensione));
            documentiCollegatiDocAmmService.updateProperties(storageFile, storageFile.getStorageObject());
        }
        throw new ApplicationException(e.getMessage());
    }
}
Also used : StorageObject(it.cnr.si.spring.storage.StorageObject) ApplicationException(it.cnr.jada.comp.ApplicationException) StorageFileFatturaAttiva(it.cnr.contab.docamm00.storage.StorageFileFatturaAttiva) StorageFile(it.cnr.si.spring.storage.bulk.StorageFile) StorageException(it.cnr.si.spring.storage.StorageException) GenerazioneReportException(it.cnr.jada.comp.GenerazioneReportException) StorageException(it.cnr.si.spring.storage.StorageException) ApplicationException(it.cnr.jada.comp.ApplicationException) DetailedException(it.cnr.jada.DetailedException) RemoteException(java.rmi.RemoteException) ComponentException(it.cnr.jada.comp.ComponentException)

Aggregations

StorageFile (it.cnr.si.spring.storage.bulk.StorageFile)13 ApplicationException (it.cnr.jada.comp.ApplicationException)7 ComponentException (it.cnr.jada.comp.ComponentException)6 StorageObject (it.cnr.si.spring.storage.StorageObject)6 RemoteException (java.rmi.RemoteException)6 StorageException (it.cnr.si.spring.storage.StorageException)5 PersistencyException (it.cnr.jada.persistency.PersistencyException)4 Configurazione_cnrBulk (it.cnr.contab.config00.bulk.Configurazione_cnrBulk)3 Configurazione_cnrComponentSession (it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession)3 StorageFileFatturaAttiva (it.cnr.contab.docamm00.storage.StorageFileFatturaAttiva)3 Distinta_cassiereBulk (it.cnr.contab.doccont00.intcass.bulk.Distinta_cassiereBulk)3 StorageFileAssegniRicerca (it.cnr.contab.incarichi00.bulk.storage.StorageFileAssegniRicerca)3 StorageFileBorseStudio (it.cnr.contab.incarichi00.bulk.storage.StorageFileBorseStudio)3 StorageFileIncarichi (it.cnr.contab.incarichi00.bulk.storage.StorageFileIncarichi)3 ContrattiService (it.cnr.contab.incarichi00.service.ContrattiService)3 DateTimeFormatter (java.time.format.DateTimeFormatter)3 AnagraficoBulk (it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk)2 Rif_modalita_pagamentoBulk (it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk)2 DistintaCassiereComponent (it.cnr.contab.doccont00.comp.DistintaCassiereComponent)2 MandatoBulk (it.cnr.contab.doccont00.core.bulk.MandatoBulk)2