use of it.cnr.si.spring.storage.StorageObject in project sigla-main by consiglionazionaledellericerche.
the class ContrattoService method findAllegatiContratto.
public List<AllegatoContrattoDocumentBulk> findAllegatiContratto(ContrattoBulk contratto) throws ApplicationException {
List<AllegatoContrattoDocumentBulk> result = new ArrayList<AllegatoContrattoDocumentBulk>();
List<StorageObject> children = findNodeAllegatiContratto(contratto);
if (children != null) {
for (StorageObject child : children) {
if (!contratto.isFromFlussoAcquisti()) {
AllegatoContrattoDocumentBulk allegato = AllegatoContrattoDocumentBulk.construct(child);
allegato.setContentType(child.<String>getPropertyValue(StoragePropertyNames.CONTENT_STREAM_MIME_TYPE.value()));
allegato.setNome(child.<String>getPropertyValue("sigla_contratti_attachment:original_name"));
allegato.setDescrizione(child.<String>getPropertyValue(StoragePropertyNames.DESCRIPTION.value()));
allegato.setTitolo(child.<String>getPropertyValue(StoragePropertyNames.TITLE.value()));
allegato.setType(child.<String>getPropertyValue(StoragePropertyNames.OBJECT_TYPE_ID.value()));
allegato.setLink(child.<String>getPropertyValue("sigla_contratti_aspect_link:url"));
allegato.setCrudStatus(OggettoBulk.NORMAL);
result.add(allegato);
}
}
}
return result;
}
use of it.cnr.si.spring.storage.StorageObject in project sigla-main by consiglionazionaledellericerche.
the class ContrattoService method changeProgressivoNodeRef.
public void changeProgressivoNodeRef(StorageObject oldStorageObject, ContrattoBulk contratto) throws ApplicationException {
List<StorageObject> children = getChildren(oldStorageObject.getKey());
for (StorageObject child : children) {
AllegatoContrattoDocumentBulk allegato = AllegatoContrattoDocumentBulk.construct(child);
allegato.setNome(child.<String>getPropertyValue("sigla_contratti_attachment:original_name"));
allegato.setType(child.<String>getPropertyValue(StoragePropertyNames.OBJECT_TYPE_ID.value()));
allegato.setTitolo(child.<String>getPropertyValue(StoragePropertyNames.TITLE.value()));
allegato.setDescrizione(child.<String>getPropertyValue(StoragePropertyNames.DESCRIPTION.value()));
allegato.setContrattoBulk(contratto);
updateProperties(allegato, child);
if (contratto.isDefinitivo() && !allegato.getType().equals(AllegatoContrattoDocumentBulk.GENERICO))
costruisciAlberaturaAlternativa(allegato, child);
}
updateProperties(contratto, oldStorageObject);
}
use of it.cnr.si.spring.storage.StorageObject 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!");
}
}
}
}
use of it.cnr.si.spring.storage.StorageObject in project sigla-main by consiglionazionaledellericerche.
the class CRUDDistintaCassiereBP method scaricaDistinta.
public void scaricaDistinta(ActionContext actioncontext) throws Exception {
Distinta_cassiereBulk distinta = (Distinta_cassiereBulk) getModel();
final HttpActionContext httpActionContext = (HttpActionContext) actioncontext;
Optional.ofNullable(this.getParametriCnr()).map(Parametri_cnrBulk::getFl_tesoreria_unica).filter(tesoreriaUnica -> tesoreriaUnica.equals(Boolean.TRUE)).ifPresent(tesoreriaUnica -> {
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))).ifPresent(storageObject -> {
httpActionContext.getResponse().setCharacterEncoding("UTF-8");
httpActionContext.getResponse().setContentType(storageObject.getPropertyValue(StoragePropertyNames.CONTENT_STREAM_MIME_TYPE.value()));
httpActionContext.getResponse().setDateHeader("Expires", 0);
try {
IOUtils.copyLarge(documentiContabiliService.getResource(storageObject), httpActionContext.getResponse().getOutputStream());
} catch (IOException e) {
throw new StorageException(StorageException.Type.GENERIC, e);
}
});
});
}
use of it.cnr.si.spring.storage.StorageObject in project sigla-main by consiglionazionaledellericerche.
the class CRUDDistintaCassiereBP method inviaSiopeplus.
public void inviaSiopeplus(ActionContext context, FirmaOTPBulk firmaOTPBulk) throws Exception {
Map<String, String> subjectDN = Optional.ofNullable(documentiContabiliService.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()) {
documentiContabiliService.controllaCodiceFiscale(subjectDN, ((CNRUserInfo) context.getUserInfo()).getUtente());
}
Distinta_cassiereBulk distinta = (Distinta_cassiereBulk) getModel();
final String storePath = distinta.getStorePath();
final String baseIdentificativoFlusso = distinta.getBaseIdentificativoFlusso();
Optional<StorageObject> optStorageObject = Optional.ofNullable(documentiContabiliService.getStorageObjectByPath(Arrays.asList(storePath, distinta.getFileNameXML()).stream().collect(Collectors.joining(StorageDriver.SUFFIX))));
if (!optStorageObject.isPresent()) {
optStorageObject = documentiContabiliService.getChildren(documentiContabiliService.getStorageObjectByPath(storePath).getKey()).stream().filter(storageObject1 -> storageObject1.<String>getPropertyValue(StoragePropertyNames.NAME.value()).startsWith(baseIdentificativoFlusso)).max(Comparator.comparing(storageObject1 -> storageObject1.getPropertyValue("cmis:lastModificationDate")));
}
StorageObject storageObject = optStorageObject.orElseThrow(() -> new ApplicationException("Flusso ordinativi siope+ non trovato!"));
if (!documentiContabiliService.hasAspect(storageObject, SIGLAStoragePropertyNames.CNR_SIGNEDDOCUMENT.value())) {
ArubaSignServiceClient client = documentiContabiliService.getArubaSignServiceClient();
byte[] contentSigned;
try {
contentSigned = client.xmlSignature(firmaOTPBulk.getUserName(), firmaOTPBulk.getPassword(), firmaOTPBulk.getOtp(), IOUtils.toByteArray(documentiContabiliService.getResource(storageObject)), XmlSignatureType.XMLENVELOPED);
} catch (ArubaSignServiceException _ex) {
logger.error("SIOPE+ firma flusso ", _ex);
throw new ApplicationException(FirmaOTPBulk.errorMessage(_ex.getMessage()));
}
storageObject = documentiContabiliService.updateStream(storageObject.getKey(), new ByteArrayInputStream(contentSigned), MimeTypes.XML.mimetype());
documentiContabiliService.updateProperties(Collections.singletonMap(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value(), Optional.ofNullable(storageObject.<List<String>>getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value())).map(strings -> {
strings.add(SIGLAStoragePropertyNames.CNR_SIGNEDDOCUMENT.value());
return strings;
}).orElse(Arrays.asList(SIGLAStoragePropertyNames.CNR_SIGNEDDOCUMENT.value()))), storageObject);
}
try {
ordinativiSiopePlusService.validateFlussoOrdinativi(documentiContabiliService.getResource(storageObject));
} catch (SAXException _ex) {
documentiContabiliService.updateProperties(Collections.singletonMap(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value(), Optional.ofNullable(storageObject.<List<String>>getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value())).map(strings -> {
strings.remove(SIGLAStoragePropertyNames.CNR_SIGNEDDOCUMENT.value());
return strings;
}).orElse(Collections.emptyList())), storageObject);
distinta.setStato(Distinta_cassiereBulk.Stato.PROVVISORIA);
distinta.setPg_distinta_def(null);
distinta.setToBeUpdated();
setModel(context, createComponentSession().modificaConBulk(context.getUserContext(), distinta));
commitUserTransaction();
setMessage("File formalmente errato, la distinta è stata riportata in stato PROVVISORIO!\n" + _ex.getMessage());
return;
}
Risultato risultato = null;
try {
risultato = ordinativiSiopePlusService.postFlusso(documentiContabiliService.getResource(storageObject));
} catch (SIOPEPlusServiceUnavailable _ex) {
throw handleException(new ApplicationException("Invio flusso non possibile!\nIl sistema è aperto dalle ore 05.00 " + "alle ore 23.00 di tutti i giorni lavorativi del calendario\n" + "nazionale inclusi i sabati non festivi (con orario ridotto fino alle ore 13.00)."));
}
it.cnr.contab.doccont00.ejb.DistintaCassiereComponentSession distintaComp = (it.cnr.contab.doccont00.ejb.DistintaCassiereComponentSession) createComponentSession();
distinta = distintaComp.inviaDistintaSiopePlus(context.getUserContext(), distinta, risultato.getProgFlusso());
setModel(context, createComponentSession().modificaConBulk(context.getUserContext(), distinta));
commitUserTransaction();
archiviaStampa(context, distinta);
setMessage("Invio effettuato correttamente.");
}
Aggregations