Leonardo Vannucci
2018-09-17 8b5a0e6b856f4b18785a98996dc383143b3f2f1f
Implementazione URP
2 files renamed
7 files added
5 files modified
1 files deleted
526 ■■■■■ changed files
dg1cloud-core/pom.xml 55 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/config/dg1cloud.properties 13 ●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadController.java 2 ●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileCaptchaController.java 3 ●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java 78 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/form/DownloadFileCaptchaForm.java 4 ●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/form/StartURPForm.java 54 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/ws/client/SOAPConnector.java 10 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/ws/client/isd/IsdConfig.java 47 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/ws/client/isd/IsdProperties.java 114 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/resources/application.properties 9 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/resources/templates/downloadFileCaptcha.html 1 ●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/resources/templates/error.html 43 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/resources/templates/startURP.html 71 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/test/java/it/digione/cloud/Dg1cloudCoreApplicationTests.java 22 ●●●●● patch | view | raw | blame | history
dg1cloud-core/pom.xml
....@@ -33,7 +33,6 @@
3333 <dependency>
3434 <groupId>org.flywaydb</groupId>
3535 <artifactId>flyway-core</artifactId>
36
- <version>4.0.1</version>
3736 </dependency>
3837
3938 <dependency>
....@@ -71,6 +70,16 @@
7170 </dependency>
7271
7372 <dependency>
73
+ <groupId>org.springframework.ws</groupId>
74
+ <artifactId>spring-ws-core</artifactId>
75
+ </dependency>
76
+
77
+ <dependency>
78
+ <groupId>org.springframework.ws</groupId>
79
+ <artifactId>spring-ws-security</artifactId>
80
+ </dependency>
81
+
82
+ <dependency>
7483 <groupId>org.apache.httpcomponents</groupId>
7584 <artifactId>httpclient</artifactId>
7685 </dependency>
....@@ -98,10 +107,10 @@
98107 </dependency>
99108
100109 <dependency>
101
- <groupId>commons-codec</groupId>
102
- <artifactId>commons-codec</artifactId>
110
+ <groupId>org.webjars</groupId>
111
+ <artifactId>webjars-locator</artifactId>
112
+ <version>0.34</version>
103113 </dependency>
104
-
105114 <!-- bootstrap and jquery -->
106115 <dependency>
107116 <groupId>org.webjars</groupId>
....@@ -118,11 +127,49 @@
118127
119128 <build>
120129 <finalName>${project.artifactId}</finalName>
130
+ <resources>
131
+ <resource>
132
+ <directory>src/main/java</directory>
133
+ <includes>
134
+ <include>**/*.properties</include>
135
+ <include>**/*.sql</include>
136
+ </includes>
137
+ </resource>
138
+ <resource>
139
+ <directory>src/main/resource</directory>
140
+ <includes>
141
+ <include>application.properties</include>
142
+ </includes>
143
+ </resource>
144
+ </resources>
121145 <plugins>
122146 <plugin>
123147 <groupId>org.springframework.boot</groupId>
124148 <artifactId>spring-boot-maven-plugin</artifactId>
125149 </plugin>
150
+ <!-- tag::wsdl[] -->
151
+ <plugin>
152
+ <groupId>org.jvnet.jaxb2.maven2</groupId>
153
+ <artifactId>maven-jaxb2-plugin</artifactId>
154
+ <version>0.14.0</version>
155
+ <executions>
156
+ <execution>
157
+ <goals>
158
+ <goal>generate</goal>
159
+ </goals>
160
+ </execution>
161
+ </executions>
162
+ <configuration>
163
+ <schemaLanguage>WSDL</schemaLanguage>
164
+ <generatePackage>it.isharedoc.schemas.instance</generatePackage>
165
+ <schemas>
166
+ <schema>
167
+ <url>https://democorepa3.grupposistematica.it/isharedoc/webservices/webserviceInstance3.wsdl</url>
168
+ </schema>
169
+ </schemas>
170
+ </configuration>
171
+ </plugin>
172
+ <!-- end::wsdl[] -->
126173 </plugins>
127174 </build>
128175
dg1cloud-core/src/main/java/it/digione/dg1cloud/config/dg1cloud.properties
....@@ -15,7 +15,16 @@
1515
1616 external.server.address.base.url=http://vannux.grupposistematica.it:8080/dg1cloud
1717
18
-google.recaptcha.enabled=false
18
+google.recaptcha.enabled=true
1919 google.recaptcha.url=https://www.google.com/recaptcha/api/siteverify
2020 google.recaptcha.key=6LfCHmkUAAAAAFa1KmVtPFecItBriBHx1qmKHcVS
21
-google.recaptcha.secret=6LfCHmkUAAAAAKXdXWO36daHnItKQwkEvXOpX6YY
21
+google.recaptcha.secret=6LfCHmkUAAAAAKXdXWO36daHnItKQwkEvXOpX6YY
22
+
23
+isharedoc.ws.endpoint.instance=https://democorepa3.grupposistematica.it/isharedoc/webservices/webserviceInstance3.wsdl
24
+isharedoc.ws.username=admin
25
+isharedoc.ws.password=sistematica100
26
+isharedoc.ws.urp.puid=0109
27
+isharedoc.ws.urp.mbox=URP
28
+isharedoc.ws.urp.storyboad=URP
29
+isharedoc.ws.urp.metaviewname=URP
30
+isharedoc.ws.urp.direction=IN
dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadController.java
....@@ -10,8 +10,8 @@
1010 import org.springframework.web.bind.annotation.RequestParam;
1111 import org.springframework.web.servlet.ModelAndView;
1212
13
+import it.digione.dg1cloud.form.DownloadFileCaptchaForm;
1314 import it.digione.dg1cloud.recaptcha.CaptchaSettings;
14
-import it.digione.dg1cloud.recaptcha.DownloadFileCaptchaForm;
1515
1616 @Controller
1717 public class DownloadController {
dg1cloud-core/src/main/java/it/digione/dg1cloud/recaptcha/DownloadFileCaptchaController.java
similarity index 93%rename from dg1cloud-core/src/main/java/it/digione/dg1cloud/recaptcha/DownloadFileCaptchaController.javarename to dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileCaptchaController.java
....@@ -1,4 +1,4 @@
1
-package it.digione.dg1cloud.recaptcha;
1
+package it.digione.dg1cloud.controller;
22
33 import java.io.FileNotFoundException;
44
....@@ -12,6 +12,7 @@
1212 import org.springframework.web.bind.annotation.RequestMapping;
1313 import org.springframework.web.servlet.ModelAndView;
1414
15
+import it.digione.dg1cloud.form.DownloadFileCaptchaForm;
1516 import it.digione.dg1cloud.service.Utils;
1617
1718 @Controller
dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java
....@@ -0,0 +1,78 @@
1
+package it.digione.dg1cloud.controller;
2
+
3
+import javax.validation.Valid;
4
+import javax.xml.bind.JAXBElement;
5
+
6
+import org.springframework.beans.factory.annotation.Autowired;
7
+import org.springframework.stereotype.Controller;
8
+import org.springframework.validation.BindingResult;
9
+import org.springframework.web.bind.annotation.ControllerAdvice;
10
+import org.springframework.web.bind.annotation.ModelAttribute;
11
+import org.springframework.web.bind.annotation.PostMapping;
12
+import org.springframework.web.bind.annotation.RequestMapping;
13
+import org.springframework.web.servlet.ModelAndView;
14
+
15
+import it.digione.dg1cloud.form.StartURPForm;
16
+import it.digione.dg1cloud.ws.client.SOAPConnector;
17
+import it.digione.dg1cloud.ws.client.isd.IsdProperties;
18
+import it.digione.dg1cloud.ws.client.isd.IsdConfig;
19
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest;
20
+import it.isharedoc.schemas.instance.ObjectFactory;
21
+
22
+@ControllerAdvice
23
+@Controller
24
+public class StartURPController {
25
+
26
+ @Autowired IsdProperties isdProperties;
27
+ @Autowired IsdConfig isdConfig;
28
+
29
+ @ModelAttribute("startURPForm")
30
+ public StartURPForm startURPForm() {
31
+ return new StartURPForm();
32
+ }
33
+
34
+ @RequestMapping("/startURP")
35
+ public String startURP() {
36
+ return "startURP";
37
+ }
38
+ @PostMapping("/sendStartRequest")
39
+ public Object sendStartRequest(@ModelAttribute("startURPForm") @Valid StartURPForm form,
40
+ BindingResult result) {
41
+
42
+ ModelAndView modelAndView;
43
+ if (result.hasErrors()){
44
+ modelAndView = new ModelAndView("startURP");
45
+ modelAndView.addObject(result);
46
+ modelAndView.addObject("startURPForm", form);
47
+ modelAndView.addObject("message", "Impossibbile inviare la richiesta");
48
+ modelAndView.addObject("alertClass", "alert-danger");
49
+ return modelAndView;
50
+ } else {
51
+ modelAndView = new ModelAndView("startURP");
52
+
53
+ InstanceMessageCreateRequest imcr = createInstanceMessageCreateRequest(form);
54
+ SOAPConnector soapConnector = isdConfig.soapConnector(isdConfig.marshaller(), isdConfig.wsSecurityInterceptor());
55
+ System.out.println(soapConnector.callWebService(soapConnector.getDefaultUri(), imcr));
56
+
57
+ modelAndView.addObject("message", "Richiesta inviata con successo");
58
+ modelAndView.addObject("alertClass", "alert-success");
59
+ return modelAndView;
60
+ }
61
+
62
+ }
63
+
64
+ private InstanceMessageCreateRequest createInstanceMessageCreateRequest( StartURPForm startURPForm ) {
65
+
66
+ ObjectFactory factory = new ObjectFactory();
67
+
68
+ InstanceMessageCreateRequest request = new InstanceMessageCreateRequest();
69
+
70
+ request.setPartitionPuid(isdProperties.getUrp().getPuid());
71
+ request.setMessageBoxCode(isdProperties.getUrp().getMbox());
72
+ request.setStoryboardCode(isdProperties.getUrp().getStoryboad());
73
+
74
+ request.setMetaViewName(factory.createInstanceMessageCreateRequestMetaViewName(isdProperties.getUrp().getMetaviewname()));
75
+
76
+ return null;
77
+ }
78
+}
dg1cloud-core/src/main/java/it/digione/dg1cloud/recaptcha/DownloadFileCaptchaForm.java
similarity index 90%rename from dg1cloud-core/src/main/java/it/digione/dg1cloud/recaptcha/DownloadFileCaptchaForm.javarename to dg1cloud-core/src/main/java/it/digione/dg1cloud/form/DownloadFileCaptchaForm.java
....@@ -1,8 +1,10 @@
1
-package it.digione.dg1cloud.recaptcha;
1
+package it.digione.dg1cloud.form;
22
33 import javax.validation.constraints.NotEmpty;
44 import javax.validation.constraints.NotNull;
55
6
+import it.digione.dg1cloud.recaptcha.ValidReCaptcha;
7
+
68 public class DownloadFileCaptchaForm {
79
810 @NotNull
dg1cloud-core/src/main/java/it/digione/dg1cloud/form/StartURPForm.java
....@@ -0,0 +1,54 @@
1
+package it.digione.dg1cloud.form;
2
+
3
+import javax.validation.constraints.NotEmpty;
4
+import javax.validation.constraints.NotNull;
5
+
6
+import org.springframework.web.multipart.MultipartFile;
7
+
8
+import it.digione.dg1cloud.recaptcha.ValidReCaptcha;
9
+
10
+public class StartURPForm {
11
+
12
+ @NotEmpty
13
+ private String mittente;
14
+ @NotEmpty
15
+ private String oggetto;
16
+ @NotEmpty
17
+ private String corpo;
18
+ @NotEmpty
19
+ @ValidReCaptcha
20
+ private String reCaptchaResponse;
21
+ @NotNull
22
+ private MultipartFile allegato;
23
+
24
+ public String getMittente() {
25
+ return mittente;
26
+ }
27
+ public void setMittente(String mittente) {
28
+ this.mittente = mittente;
29
+ }
30
+ public String getOggetto() {
31
+ return oggetto;
32
+ }
33
+ public void setOggetto(String oggetto) {
34
+ this.oggetto = oggetto;
35
+ }
36
+ public String getCorpo() {
37
+ return corpo;
38
+ }
39
+ public void setCorpo(String corpo) {
40
+ this.corpo = corpo;
41
+ }
42
+ public String getReCaptchaResponse() {
43
+ return reCaptchaResponse;
44
+ }
45
+ public void setReCaptchaResponse(String reCaptchaResponse) {
46
+ this.reCaptchaResponse = reCaptchaResponse;
47
+ }
48
+ public MultipartFile getAllegato() {
49
+ return allegato;
50
+ }
51
+ public void setAllegato(MultipartFile allegato) {
52
+ this.allegato = allegato;
53
+ }
54
+}
dg1cloud-core/src/main/java/it/digione/dg1cloud/ws/client/SOAPConnector.java
....@@ -0,0 +1,10 @@
1
+package it.digione.dg1cloud.ws.client;
2
+
3
+import org.springframework.ws.client.core.support.WebServiceGatewaySupport;
4
+
5
+public class SOAPConnector extends WebServiceGatewaySupport {
6
+
7
+ public Object callWebService(String url, Object request){
8
+ return getWebServiceTemplate().marshalSendAndReceive(url, request);
9
+ }
10
+}
dg1cloud-core/src/main/java/it/digione/dg1cloud/ws/client/isd/IsdConfig.java
....@@ -0,0 +1,47 @@
1
+package it.digione.dg1cloud.ws.client.isd;
2
+
3
+import org.apache.wss4j.dom.WSConstants;
4
+import org.springframework.beans.factory.annotation.Autowired;
5
+import org.springframework.context.annotation.Bean;
6
+import org.springframework.context.annotation.Configuration;
7
+import org.springframework.oxm.jaxb.Jaxb2Marshaller;
8
+import org.springframework.ws.client.support.interceptor.ClientInterceptor;
9
+import org.springframework.ws.soap.security.wss4j2.Wss4jSecurityInterceptor;
10
+
11
+import it.digione.dg1cloud.ws.client.SOAPConnector;
12
+
13
+@Configuration
14
+public class IsdConfig {
15
+
16
+ @Autowired IsdProperties isdProperties;
17
+
18
+ @Bean
19
+ public Jaxb2Marshaller marshaller() {
20
+ Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
21
+ marshaller.setContextPath("it.isharedoc.schemas.instance");
22
+ return marshaller;
23
+ }
24
+
25
+ @Bean
26
+ public Wss4jSecurityInterceptor wsSecurityInterceptor() {
27
+ Wss4jSecurityInterceptor wss4jSecurityInterceptor = new Wss4jSecurityInterceptor();
28
+ wss4jSecurityInterceptor.setSecurementActions(WSConstants.USERNAME_TOKEN_LN);
29
+ wss4jSecurityInterceptor.setSecurementUsername(isdProperties.getUsername());
30
+ wss4jSecurityInterceptor.setSecurementPassword(isdProperties.getPassword());
31
+ wss4jSecurityInterceptor.setSecurementPasswordType(WSConstants.PW_TEXT);
32
+ wss4jSecurityInterceptor.setSecurementUsernameTokenNonce(true);
33
+ return wss4jSecurityInterceptor;
34
+ }
35
+
36
+ @Bean
37
+ public SOAPConnector soapConnector(Jaxb2Marshaller marshaller, Wss4jSecurityInterceptor wsSecurityInterceptor) {
38
+ SOAPConnector client = new SOAPConnector();
39
+ client.setDefaultUri(isdProperties.getEndpoint().getInstance());
40
+ client.setMarshaller(marshaller);
41
+ client.setUnmarshaller(marshaller);
42
+ ClientInterceptor[] interceptors = new ClientInterceptor[1];
43
+ interceptors[0] = wsSecurityInterceptor;
44
+ client.setInterceptors(interceptors);
45
+ return client;
46
+ }
47
+}
dg1cloud-core/src/main/java/it/digione/dg1cloud/ws/client/isd/IsdProperties.java
....@@ -0,0 +1,114 @@
1
+package it.digione.dg1cloud.ws.client.isd;
2
+
3
+import org.springframework.boot.context.properties.ConfigurationProperties;
4
+import org.springframework.stereotype.Component;
5
+
6
+@Component
7
+@ConfigurationProperties("isharedoc.ws")
8
+public class IsdProperties {
9
+
10
+ private Endpoint endpoint;
11
+ private Urp urp;
12
+ private String username;
13
+ private String password;
14
+
15
+ public Endpoint getEndpoint() {
16
+ return endpoint;
17
+ }
18
+ public void setEndpoint(Endpoint endpoint) {
19
+ this.endpoint = endpoint;
20
+ }
21
+ public Urp getUrp() {
22
+ return urp;
23
+ }
24
+ public void setUrp(Urp urp) {
25
+ this.urp = urp;
26
+ }
27
+ public String getUsername() {
28
+ return username;
29
+ }
30
+ public void setUsername(String username) {
31
+ this.username = username;
32
+ }
33
+ public String getPassword() {
34
+ return password;
35
+ }
36
+ public void setPassword(String password) {
37
+ this.password = password;
38
+ }
39
+ @Override
40
+ public String toString() {
41
+ return "IsdProperties{" +
42
+ "username='" + username + "'," +
43
+ "endpoint=" + endpoint + "," +
44
+ "urp=" + urp +
45
+ "}";
46
+ }
47
+
48
+ public static class Endpoint {
49
+
50
+ private String instance;
51
+ public String getInstance() {
52
+ return instance;
53
+ }
54
+ public void setInstance(String instance) {
55
+ this.instance = instance;
56
+ }
57
+
58
+ @Override
59
+ public String toString() {
60
+ return "Endpoint{" +
61
+ "instance='" + instance + "'" +
62
+ "}";
63
+ }
64
+ }
65
+
66
+ public static class Urp {
67
+
68
+ private String puid;
69
+ private String mbox;
70
+ private String storyboad;
71
+ private String metaviewname;
72
+ private String direction;
73
+ public String getPuid() {
74
+ return puid;
75
+ }
76
+ public void setPuid(String puid) {
77
+ this.puid = puid;
78
+ }
79
+ public String getMbox() {
80
+ return mbox;
81
+ }
82
+ public void setMbox(String mbox) {
83
+ this.mbox = mbox;
84
+ }
85
+ public String getStoryboad() {
86
+ return storyboad;
87
+ }
88
+ public void setStoryboad(String storyboad) {
89
+ this.storyboad = storyboad;
90
+ }
91
+ public String getMetaviewname() {
92
+ return metaviewname;
93
+ }
94
+ public void setMetaviewname(String metaviewname) {
95
+ this.metaviewname = metaviewname;
96
+ }
97
+ public String getDirection() {
98
+ return direction;
99
+ }
100
+ public void setDirection(String direction) {
101
+ this.direction = direction;
102
+ }
103
+ @Override
104
+ public String toString() {
105
+ return "Urp{" +
106
+ "puid='" + puid + "'," +
107
+ "mbox='" + mbox + "'," +
108
+ "storyboad='" + storyboad + "'," +
109
+ "metaviewname='" + metaviewname + "'," +
110
+ "direction='" + direction + "'" +
111
+ "}";
112
+ }
113
+ }
114
+}
dg1cloud-core/src/main/resources/application.properties
....@@ -1,6 +1,6 @@
11 spring.datasource.url=jdbc:postgresql://localhost:5432/dg1cloud
2
-#spring.datasource.username=postgres
3
-#spring.datasource.password=passero
2
+spring.datasource.username=postgres
3
+spring.datasource.password=passero
44 spring.datasource.driver-class-name=org.postgresql.Driver
55 spring.datasource.tomcat.initial-size=10
66 spring.datasource.tomcat.max-wait=30000
....@@ -17,5 +17,8 @@
1717 spring.jmx.default-domain=dg1cloud
1818
1919 #server.address=vannux.grupposistematica.it
20
+server.error.include-stacktrace=always
2021
21
-logging.level.it.digione.dg1cloud=DEBUG
22
+logging.level.it.digione.dg1cloud=DEBUG
23
+
24
+logging.level.org.springframework.ws=TRACE
dg1cloud-core/src/main/resources/templates/downloadFileCaptcha.html
....@@ -6,7 +6,6 @@
66 <meta name="viewport" content="width=device-width, initial-scale=1"/>
77
88 <link rel="stylesheet" type="text/css" th:href="@{/webjars/bootstrap/3.3.7/css/bootstrap.min.css}"/>
9
- <link rel="stylesheet" type="text/css" th:href="@{/css/main.css}"/>
109
1110 <title>Link download file</title>
1211 <script src='https://www.google.com/recaptcha/api.js'></script>
dg1cloud-core/src/main/resources/templates/error.html
....@@ -0,0 +1,43 @@
1
+<!DOCTYPE html>
2
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
3
+<head>
4
+ <style>
5
+ table td{
6
+ vertical-align:top;
7
+ border:solid 1px #888;
8
+ padding:10px;
9
+ }
10
+ </style>
11
+</head>
12
+<body>
13
+<h1>Si &egrave; verificato un errore</h1>
14
+<table>
15
+ <tr>
16
+ <td>Data</td>
17
+ <td th:text="${timestamp}"/>
18
+ </tr>
19
+ <tr>
20
+ <td>percorso</td>
21
+ <td th:text="${path}"/>
22
+ </tr>
23
+ <tr>
24
+ <td>Errore</td>
25
+ <td th:text="${error}"/>
26
+ </tr>
27
+ <tr>
28
+ <td>Stato</td>
29
+ <td th:text="${status}"/>
30
+ </tr>
31
+ <tr>
32
+ <td>Messaggio</td>
33
+ <td th:text="${message}"/>
34
+ </tr>
35
+ <tr>
36
+ <td>Trace</td>
37
+ <td>
38
+ <pre th:text="${trace}"></pre>
39
+ </td>
40
+ </tr>
41
+</table>
42
+</body>
43
+</html>
dg1cloud-core/src/main/resources/templates/startURP.html
....@@ -0,0 +1,71 @@
1
+<!DOCTYPE html>
2
+<html xmlns:th="http://www.thymeleaf.org">
3
+ <head>
4
+ <meta charset="utf-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
7
+
8
+ <link rel="stylesheet" type="text/css" th:href="@{/webjars/bootstrap/3.3.7/css/bootstrap.min.css}"/>
9
+
10
+ <title>Avvia istanza URP</title>
11
+ <script src='https://www.google.com/recaptcha/api.js'></script>
12
+ </head>
13
+ <body>
14
+ <div class="container">
15
+ <div class="row">
16
+ <div class="col-md-4 col-md-offset-4">
17
+ <div class="panel panel-default">
18
+ <div class="panel-body">
19
+ <div class="text-center">
20
+ <h3><i class="glyphicon glyphicon-inbox" style="font-size:2em;"></i></h3>
21
+ <h2 class="text-center" style="word-wrap: break-word;" th:text="'Avvia istanza URP'"></h2>
22
+ <div class="panel-body">
23
+ <form data-toggle="validator" action="#"
24
+ th:action="@{/sendStartRequest}" th:object="${startURPForm}"
25
+ method="post" role="form"
26
+ enctype="multipart/form-data" >
27
+ <div th:if="${message}" th:text="${message}" th:class="${'alert ' + alertClass}"></div>
28
+ <div class="form-group">
29
+ <label for="mittente" class="control-label">Mittente*</label>
30
+ <input type="email" class="form-control" th:field="*{mittente}" required placeholder="Email mittente" />
31
+ <p th:if="${#fields.hasErrors('mittente')}">Email mittente mancante</p>
32
+ </div>
33
+ <div class="form-group">
34
+ <label for="oggetto" class="control-label">Oggetto*</label>
35
+ <input type="text" class="form-control" th:field="*{oggetto}" required />
36
+ <p th:if="${#fields.hasErrors('oggetto')}">Compilare l'oggetto della richiesta</p>
37
+ </div>
38
+ <div class="form-group">
39
+ <label for="oggetto" class="control-label">Richiesta*</label>
40
+ <textarea rows="5" class="form-control" th:field="*{corpo}" required ></textarea>
41
+ <p th:if="${#fields.hasErrors('corpo')}">Scrivere il corpo della richiesta</p>
42
+ </div>
43
+ <div class="form-group">
44
+ <label for="allegato" class="control-label">Allegato richiesta*</label>
45
+ <input type="file" class="form-control" th:field="*{allegato}" required ></input>
46
+ <p th:if="${#fields.hasErrors('allegato')}">Inserire un allegato</p>
47
+ <p class="error-message"
48
+ th:each="error: ${#fields.errors('allegato')}"
49
+ th:text="${error}"></p>
50
+ </div>
51
+ <div class="form-group">
52
+ <div class="g-recaptcha" th:attr="data-sitekey=${@captchaSettings.getKey()}"></div>
53
+ <p class="error-message"
54
+ th:each="error: ${#fields.errors('reCaptchaResponse')}"
55
+ th:text="'Errore validazione reCaptcha'"></p>
56
+ </div>
57
+ <div class="form-group">
58
+ <button name="Invia richiesta" type="submit" th:text="'Invia richiesta'"></button>
59
+ </div>
60
+ </form>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ <script type="text/javascript" th:src="@{/webjars/jquery/3.2.1/jquery.min.js/}"></script>
69
+ <script type="text/javascript" th:src="@{/webjars/bootstrap/3.3.7/js/bootstrap.min.js}"></script>
70
+ </body>
71
+</html>
dg1cloud-core/src/test/java/it/digione/cloud/Dg1cloudCoreApplicationTests.java
deleted file mode 100644
....@@ -1,22 +0,0 @@
1
-package it.digione.cloud;
2
-
3
-import org.junit.Test;
4
-import org.junit.runner.RunWith;
5
-import org.springframework.beans.factory.annotation.Autowired;
6
-import org.springframework.boot.test.context.SpringBootTest;
7
-import org.springframework.test.context.junit4.SpringRunner;
8
-
9
-import it.digione.dg1cloud.app.Dg1cloudCoreApplication;
10
-import it.digione.dg1cloud.service.CleanerService;
11
-
12
-@RunWith(SpringRunner.class)
13
-@SpringBootTest(classes = Dg1cloudCoreApplication.class)
14
-public class Dg1cloudCoreApplicationTests {
15
-
16
- @Autowired CleanerService cleanerService;
17
- @Test
18
- public void contextLoads() {
19
- cleanerService.cleanEmptyStorageFolder();
20
- }
21
-
22
-}