From 13c46f877d0540f22b16f80facd7e60de74490fa Mon Sep 17 00:00:00 2001
From: Leonardo Vannucci <leonardo.vannucci@grupposistematica.it>
Date: Mon, 17 Sep 2018 16:10:40 +0200
Subject: [PATCH] Avvio istanze URP
---
dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java | 131 ++++++++++++++++++++++++++++++++++++++++---
1 files changed, 122 insertions(+), 9 deletions(-)
diff --git a/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java b/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java
index 24fbddd..95a7b41 100644
--- a/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java
+++ b/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java
@@ -1,9 +1,18 @@
package it.digione.dg1cloud.controller;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+
+import javax.activation.DataHandler;
+import javax.mail.internet.MimeMessage;
import javax.validation.Valid;
import javax.xml.bind.JAXBElement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ControllerAdvice;
@@ -13,18 +22,28 @@
import org.springframework.web.servlet.ModelAndView;
import it.digione.dg1cloud.form.StartURPForm;
-import it.digione.dg1cloud.ws.client.SOAPConnector;
-import it.digione.dg1cloud.ws.client.isd.IsdProperties;
import it.digione.dg1cloud.ws.client.isd.IsdConfig;
+import it.digione.dg1cloud.ws.client.isd.IsdProperties;
+import it.digione.dg1cloud.ws.client.isd.IsdSOAPConnector;
import it.isharedoc.schemas.instance.InstanceMessageCreateRequest;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Attachments;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Attachments.Attachment;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Contacts;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Contacts.Contact;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Variables;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Variables.Variable;
+import it.isharedoc.schemas.instance.InstanceMessageCreateResponse;
import it.isharedoc.schemas.instance.ObjectFactory;
@ControllerAdvice
@Controller
public class StartURPController {
+ private static final Logger logger = LoggerFactory.getLogger(DownloadController.class);
+
@Autowired IsdProperties isdProperties;
@Autowired IsdConfig isdConfig;
+ @Autowired JavaMailSender javaMailSender;
@ModelAttribute("startURPForm")
public StartURPForm startURPForm() {
@@ -40,22 +59,55 @@
BindingResult result) {
ModelAndView modelAndView;
- if (result.hasErrors()){
+ //if (result.hasErrors()){
+ if (false) {
modelAndView = new ModelAndView("startURP");
modelAndView.addObject(result);
modelAndView.addObject("startURPForm", form);
- modelAndView.addObject("message", "Impossibbile inviare la richiesta");
+ modelAndView.addObject("message", "Impossibile inviare la richiesta");
modelAndView.addObject("alertClass", "alert-danger");
return modelAndView;
} else {
modelAndView = new ModelAndView("startURP");
InstanceMessageCreateRequest imcr = createInstanceMessageCreateRequest(form);
- SOAPConnector soapConnector = isdConfig.soapConnector(isdConfig.marshaller(), isdConfig.wsSecurityInterceptor());
- System.out.println(soapConnector.callWebService(soapConnector.getDefaultUri(), imcr));
+ IsdSOAPConnector soapConnector = isdConfig.soapConnector(isdConfig.marshaller(), isdConfig.wsSecurityInterceptor());
- modelAndView.addObject("message", "Richiesta inviata con successo");
- modelAndView.addObject("alertClass", "alert-success");
+ String numeroProtocollo = null;
+ String dataProtocollo = null;
+ SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
+ try {
+ InstanceMessageCreateResponse response = soapConnector.callWebService(soapConnector.getDefaultUri(), imcr);
+ numeroProtocollo = response.getIdentifier().getValue();
+ dataProtocollo = sdf.format(response.getIdentifierDate().getValue().toGregorianCalendar().getTime());
+ } catch (Exception e) {
+ logger.error("Errore invocazione servizi URP: " + e.getMessage(), e);
+ modelAndView.addObject(result);
+ modelAndView.addObject("startURPForm", form);
+ modelAndView.addObject("message", "Problemi nell'invio della richiesta: " + e.getMessage());
+ modelAndView.addObject("alertClass", "alert-danger");
+ return modelAndView;
+ }
+
+ try {
+ MimeMessage message = javaMailSender.createMimeMessage();
+ MimeMessageHelper helper;
+ helper = new MimeMessageHelper(message, true);
+ helper.setSubject("Richiesta inviata correttamente al servizio URP");
+ helper.setFrom(isdProperties.getNotificationFrom());
+ helper.setTo(form.getMittente());
+ helper.setText("Richiesta inviata correttamente: " + numeroProtocollo + " del " + dataProtocollo, true);
+ javaMailSender.send(message);
+
+ modelAndView.addObject("message", "Richiesta inviata con successo");
+ modelAndView.addObject("alertClass", "alert-success");
+ } catch (Exception e) {
+ modelAndView.addObject("message", "Richiesta inviata con successo, ma non รจ stato possibile inviare la conferma tramite email");
+ modelAndView.addObject("alertClass", "alert-warning");
+ }
+
+ modelAndView.addObject("appIdentifier", numeroProtocollo);
+ modelAndView.addObject("appIdentifierDate", dataProtocollo);
return modelAndView;
}
@@ -72,7 +124,68 @@
request.setStoryboardCode(isdProperties.getUrp().getStoryboad());
request.setMetaViewName(factory.createInstanceMessageCreateRequestMetaViewName(isdProperties.getUrp().getMetaviewname()));
+ request.setDirection(isdProperties.getUrp().getDirection());
- return null;
+ Contacts contacts = factory.createInstanceMessageCreateRequestContacts();
+
+ Contact contact = new Contact();
+ contact.setDescription(factory.createInstanceMessageCreateRequestContactsContactDescription(startURPForm.getMittente()));
+ contact.setEmail(factory.createInstanceMessageCreateRequestContactsContactEmail( startURPForm.getMittente()));
+ contact.setType("F");
+ contact.setReferenceType("AB");
+ contact.setSearchType("EXTID");
+ contact.setSearchMode("NOTFOUNDDEF");
+ contact.setSearchValue(startURPForm.getMittente());
+
+ contacts.getContact().add(contact);
+
+ for ( it.digione.dg1cloud.ws.client.isd.IsdProperties.Urp.Contact urpContact : isdProperties.getUrp().getContacts() ) {
+ contact = new Contact();
+ contact.setType(urpContact.getType());
+ contact.setReferenceType(urpContact.getReferenceType());
+ contact.setSearchType("CODE");
+ contact.setSearchValue(urpContact.getCode());
+ contacts.getContact().add(contact);
+ }
+
+ JAXBElement<Contacts> jaxbContacts = factory.createInstanceMessageCreateRequestContacts(contacts);
+ request.setContacts(jaxbContacts);
+
+ JAXBElement<String> jaxbSubject = factory.createInstanceMessageCreateRequestSubject(startURPForm.getOggetto());
+ request.setSubject(jaxbSubject);
+
+ JAXBElement<String> jaxbBody = factory.createInstanceMessageCreateRequestBody(startURPForm.getCorpo());
+ request.setBody(jaxbBody);
+
+ Variable variable = new Variable();
+ variable.setKey("transition");
+ variable.setType("string");
+ variable.setValueString(factory.createInstanceMessageCreateRequestVariablesVariableValueString(isdProperties.getUrp().getTransition()));
+
+ Variables variables = factory.createInstanceMessageCreateRequestVariables();
+ variables.getVariable().add(variable);
+ JAXBElement<Variables> jaxbVariables = factory.createInstanceMessageCreateRequestVariables(variables);
+
+ request.setVariables(jaxbVariables);
+
+ request.setStartWorkflow(factory.createInstanceMessageCreateRequestStartWorkflow(true));
+
+ Attachments attachments = new Attachments();
+
+ Attachment attachment = new Attachment();
+ attachment.setFilename( startURPForm.getAllegato().getOriginalFilename());
+ attachment.setContentType( factory.createInstanceMessageCreateRequestAttachmentsAttachmentContentType( startURPForm.getAllegato().getContentType()));
+ attachment.setFileset("isharedocMailAttach");
+ try {
+ attachment.setData(new DataHandler(startURPForm.getAllegato().getBytes(), startURPForm.getAllegato().getContentType()));
+ } catch (IOException e) {
+ throw new RuntimeException("Errore nella lettura dell'allegato da passare al servizio URP", e);
+ }
+ attachments.getAttachment().add(attachment);
+
+ JAXBElement<Attachments> jaxbAttachments = factory.createInstanceMessageCreateRequestAttachments(attachments);
+ request.setAttachments(jaxbAttachments);
+
+ return request;
}
}
--
Gitblit v1.6.2