[INFO] Scanning for projects...
[INFO] 
[INFO] -------------------< it.prismatdi:graffitiglobal14 >--------------------
[INFO] Building GraffitiGlobal14 2.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] >>> spring-boot-maven-plugin:2.2.0.RELEASE:run (default-cli) > test-compile @ graffitiglobal14 >>>
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ graffitiglobal14 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 2 resources
[INFO] 
[INFO] --- vaadin-maven-plugin:14.1.27:prepare-frontend (default) @ graffitiglobal14 ---
[INFO] Copying frontend resources from jar files ...
[INFO] Visited 168 resources. Took 112 ms.
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ graffitiglobal14 ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ graffitiglobal14 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/vittorio/workspace2019-06/graffitiglobal14/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ graffitiglobal14 ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] <<< spring-boot-maven-plugin:2.2.0.RELEASE:run (default-cli) < test-compile @ graffitiglobal14 <<<
[INFO] 
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.2.0.RELEASE:run (default-cli) @ graffitiglobal14 ---
[INFO] Attaching agents: []
  ____                __   __  _  _    _   ____  _         _             _  _  _  _   
 / ___| _ __   __ _  / _| / _|(_)| |_ (_) / ___|| |  ___  | |__    __ _ | |/ || || |  
| |  _ | '__| / _` || |_ | |_ | || __|| || |  _ | | / _ \ | '_ \  / _` || || || || |_ 
| |_| || |   | (_| ||  _||  _|| || |_ | || |_| || || (_) || |_) || (_| || || ||__   _|
 \____||_|    \__,_||_|  |_|  |_| \__||_| \____||_| \___/ |_.__/  \__,_||_||_|   |_|  
                                                                                      

2020-04-29 11:50:13.943  INFO 30723 --- [  restartedMain] it.prismatdi.Application                 : Starting Application on MBP-Vittorio.homenet.telecomitalia.it with PID 30723 (/Users/vittorio/workspace2019-06/graffitiglobal14/target/classes started by vittorio in /Users/vittorio/workspace2019-06/graffitiglobal14)
2020-04-29 11:50:13.944  INFO 30723 --- [  restartedMain] it.prismatdi.Application                 : No active profile set, falling back to default profiles: default
2020-04-29 11:50:13.983  INFO 30723 --- [  restartedMain] o.s.b.devtools.restart.ChangeableUrls    : The Class-Path manifest attribute in /Users/vittorio/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/jaxb-runtime-2.3.2.jar referenced one or more files that do not exist: file:/Users/vittorio/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/jakarta.xml.bind-api-2.3.2.jar,file:/Users/vittorio/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/txw2-2.3.2.jar,file:/Users/vittorio/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/istack-commons-runtime-3.0.8.jar,file:/Users/vittorio/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/stax-ex-1.8.1.jar,file:/Users/vittorio/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/FastInfoset-1.2.16.jar,file:/Users/vittorio/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/jakarta.activation-api-1.2.1.jar
2020-04-29 11:50:13.983  INFO 30723 --- [  restartedMain] o.s.b.devtools.restart.ChangeableUrls    : The Class-Path manifest attribute in /Users/vittorio/.m2/repository/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar referenced one or more files that do not exist: file:/Users/vittorio/.m2/repository/commons-logging/commons-logging/1.0.3/log4j.jar,file:/Users/vittorio/.m2/repository/commons-logging/commons-logging/1.0.3/log4j-core.jar
2020-04-29 11:50:13.983  INFO 30723 --- [  restartedMain] o.s.b.devtools.restart.ChangeableUrls    : The Class-Path manifest attribute in /Users/vittorio/.m2/repository/org/vaadin/alump/gridstack/gridstack-addon/0.4.1/gridstack-addon-0.4.1.jar referenced one or more files that do not exist: file:/Users/vittorio/.m2/repository/org/vaadin/alump/gridstack/gridstack-addon/0.4.1/vaadin-server-8.0.6.jar,file:/Users/vittorio/.m2/repository/org/vaadin/alump/gridstack/gridstack-addon/0.4.1/vaadin-sass-compiler-0.9.13.jar,file:/Users/vittorio/.m2/repository/org/vaadin/alump/gridstack/gridstack-addon/0.4.1/sac-1.3.jar,file:/Users/vittorio/.m2/repository/org/vaadin/alump/gridstack/gridstack-addon/0.4.1/flute-1.3.0.gg2.jar,file:/Users/vittorio/.m2/repository/org/vaadin/alump/gridstack/gridstack-addon/0.4.1/vaadin-shared-8.0.6.jar,file:/Users/vittorio/.m2/repository/org/vaadin/alump/gridstack/gridstack-addon/0.4.1/jsoup-1.8.3.jar,file:/Users/vittorio/.m2/repository/org/vaadin/alump/gridstack/gridstack-addon/0.4.1/gentyref-1.2.0.jar
2020-04-29 11:50:13.983  INFO 30723 --- [  restartedMain] o.s.b.devtools.restart.ChangeableUrls    : The Class-Path manifest attribute in /Users/vittorio/.m2/repository/com/vaadin/vaadin-sass-compiler/0.9.13/vaadin-sass-compiler-0.9.13.jar referenced one or more files that do not exist: file:/Users/vittorio/.m2/repository/com/vaadin/vaadin-sass-compiler/0.9.13/sac-1.3.jar,file:/Users/vittorio/.m2/repository/com/vaadin/vaadin-sass-compiler/0.9.13/flute-1.3.0.gg2.jar,file:/Users/vittorio/.m2/repository/com/vaadin/vaadin-sass-compiler/0.9.13/yuicompressor-2.4.8.jar,file:/Users/vittorio/.m2/repository/com/vaadin/vaadin-sass-compiler/0.9.13/js-1.7R2.jar
2020-04-29 11:50:13.984  INFO 30723 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2020-04-29 11:50:14.368  INFO 30723 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2020-04-29 11:50:14.398  INFO 30723 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 23ms. Found 1 repository interfaces.
2020-04-29 11:50:14.399  INFO 30723 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2020-04-29 11:50:14.419  INFO 30723 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 19ms. Found 6 repository interfaces.
2020-04-29 11:50:14.419  INFO 30723 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2020-04-29 11:50:14.425  INFO 30723 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 5ms. Found 2 repository interfaces.
2020-04-29 11:50:14.426  INFO 30723 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2020-04-29 11:50:14.429  INFO 30723 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 3ms. Found 1 repository interfaces.
2020-04-29 11:50:14.841  INFO 30723 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-04-29 11:50:14.852  INFO 30723 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'eventBusConfiguration' of type [it.prismatdi.conf.EventBusConfiguration$$EnhancerBySpringCGLIB$$f3c38489] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-04-29 11:50:15.018  INFO 30723 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-04-29 11:50:15.030  INFO 30723 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-04-29 11:50:15.030  INFO 30723 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.27]
2020-04-29 11:50:15.163  INFO 30723 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-04-29 11:50:15.163  INFO 30723 --- [  restartedMain] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1179 ms
2020-04-29 11:50:19.261  INFO 30723 --- [  restartedMain] c.v.f.s.VaadinServletContextInitializer  : Search for subclasses and classes with annotations took 3 seconds
2020-04-29 11:50:19.263  INFO 30723 --- [  restartedMain] c.v.f.server.startup.DevModeInitializer  : Starting dev-mode updaters in /Users/vittorio/workspace2019-06/graffitiglobal14 folder.
2020-04-29 11:50:19.278  INFO 30723 --- [  restartedMain] dev-updater                              : Visited 111 classes. Took 11 ms.
2020-04-29 11:50:19.284  INFO 30723 --- [  restartedMain] dev-updater                              : Skipping `npm install`.
2020-04-29 11:50:19.284  INFO 30723 --- [  restartedMain] dev-updater                              : Copying frontend resources from jar files ...
2020-04-29 11:50:19.306  INFO 30723 --- [  restartedMain] dev-updater                              : Visited 13 resources. Took 21 ms.
2020-04-29 11:50:19.353  INFO 30723 --- [  restartedMain] dev-updater                              : No js modules to update '/Users/vittorio/workspace2019-06/graffitiglobal14/target/frontend/generated-flow-imports.js' file
2020-04-29 11:50:19.752  INFO 30723 --- [  restartedMain] dev-webpack                              : Starting webpack-dev-server, port: 60663 dir: /Users/vittorio/workspace2019-06/graffitiglobal14
2020-04-29 11:50:19.755  INFO 30723 --- [  restartedMain] dev-webpack                              : Running webpack to compile frontend resources. This may take a moment, please stand by...
2020-04-29 11:50:26.472  INFO 30723 --- [  restartedMain] dev-webpack                              : Webpack startup and compilation completed in 6720ms
2020-04-29 11:50:26.608  INFO 30723 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: as400]
2020-04-29 11:50:26.662  INFO 30723 --- [  restartedMain] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.14.Final
2020-04-29 11:50:26.776  INFO 30723 --- [  restartedMain] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2020-04-29 11:50:26.961  INFO 30723 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-04-29 11:50:27.067  INFO 30723 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2020-04-29 11:50:27.085  INFO 30723 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
2020-04-29 11:50:27.499  INFO 30723 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-04-29 11:50:27.547  INFO 30723 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'as400'
2020-04-29 11:50:27.572  INFO 30723 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: produzio]
2020-04-29 11:50:27.607  INFO 30723 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Starting...
2020-04-29 11:50:27.611  INFO 30723 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Start completed.
2020-04-29 11:50:27.611  INFO 30723 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
2020-04-29 11:50:28.020  INFO 30723 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-04-29 11:50:28.032  INFO 30723 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'produzio'
2020-04-29 11:50:28.042  INFO 30723 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: scribaf]
2020-04-29 11:50:28.064  INFO 30723 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-3 - Starting...
2020-04-29 11:50:28.067  INFO 30723 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-3 - Start completed.
2020-04-29 11:50:28.067  INFO 30723 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
2020-04-29 11:50:28.187  INFO 30723 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-04-29 11:50:28.189  INFO 30723 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'scribaf'
2020-04-29 11:50:28.192  INFO 30723 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: users]
2020-04-29 11:50:28.214  INFO 30723 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-4 - Starting...
2020-04-29 11:50:28.217  INFO 30723 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-4 - Start completed.
2020-04-29 11:50:28.217  INFO 30723 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
2020-04-29 11:50:28.288  INFO 30723 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-04-29 11:50:28.291  INFO 30723 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'users'
>>>>>>>>>>>>>>>   UserDetailsServiceImpl.UserDetailsServiceImpl()
2020-04-29 11:50:28.513  WARN 30723 --- [  restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
>>>>>>>>>>>>>>>   VenditeAnalisi.configura() UNO
2020-04-29 11:50:28.861  WARN 30723 --- [  restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'venditeAnalisi': Invocation of init method failed; nested exception is java.lang.NullPointerException
2020-04-29 11:50:28.862  INFO 30723 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'users'
2020-04-29 11:50:28.863  INFO 30723 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'scribaf'
2020-04-29 11:50:28.863  INFO 30723 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'produzio'
2020-04-29 11:50:28.863  INFO 30723 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'as400'
2020-04-29 11:50:28.864  INFO 30723 --- [  restartedMain] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2020-04-29 11:50:28.866  WARN 30723 --- [  restartedMain] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [Thread-4] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.base@14/sun.nio.ch.Net.accept(Native Method)
 java.base@14/sun.nio.ch.NioSocketImpl.accept(NioSocketImpl.java:755)
 java.base@14/java.net.ServerSocket.implAccept(ServerSocket.java:684)
 java.base@14/java.net.ServerSocket.platformImplAccept(ServerSocket.java:650)
 java.base@14/java.net.ServerSocket.implAccept(ServerSocket.java:626)
 java.base@14/java.net.ServerSocket.implAccept(ServerSocket.java:583)
 java.base@14/java.net.ServerSocket.accept(ServerSocket.java:540)
 app//com.vaadin.flow.server.DevServerWatchDog$WatchDogServer.run(DevServerWatchDog.java:58)
 java.base@14/java.lang.Thread.run(Thread.java:832)
2020-04-29 11:50:28.867  WARN 30723 --- [  restartedMain] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [webpack] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.base@14/java.io.FileInputStream.readBytes(Native Method)
 java.base@14/java.io.FileInputStream.read(FileInputStream.java:272)
 java.base@14/java.io.BufferedInputStream.read1(BufferedInputStream.java:282)
 java.base@14/java.io.BufferedInputStream.read(BufferedInputStream.java:343)
 java.base@14/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:297)
 java.base@14/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
 java.base@14/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:188)
 java.base@14/java.io.InputStreamReader.read(InputStreamReader.java:181)
 java.base@14/java.io.BufferedReader.fill(BufferedReader.java:161)
 java.base@14/java.io.BufferedReader.readLine(BufferedReader.java:326)
 java.base@14/java.io.BufferedReader.readLine(BufferedReader.java:392)
 app//com.vaadin.flow.server.DevModeHandler.readLinesLoop(DevModeHandler.java:458)
 app//com.vaadin.flow.server.DevModeHandler.lambda$logStream$1(DevModeHandler.java:436)
 app//com.vaadin.flow.server.DevModeHandler$$Lambda$695/0x0000000801009c40.run(Unknown Source)
 java.base@14/java.lang.Thread.run(Thread.java:832)
2020-04-29 11:50:28.872  INFO 30723 --- [  restartedMain] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-04-29 11:50:28.875 ERROR 30723 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'venditeAnalisi': Invocation of init method failed; nested exception is java.lang.NullPointerException
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:416) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1795) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:879) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) ~[spring-context-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at it.prismatdi.Application.main(Application.java:19) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.2.0.RELEASE.jar:2.2.0.RELEASE]
Caused by: java.lang.NullPointerException: null
	at com.vaadin.flow.component.polymertemplate.PolymerTemplate.<init>(PolymerTemplate.java:103) ~[flow-server-2.1.9.jar:2.1.9]
	at com.awesomecontrols.subwindow.SubWindowDesktop.<init>(SubWindowDesktop.java:49) ~[flowsubwindow-1.0.3.jar:1.0.3]
	at it.prismatdi.ui.views.sintesi.VenditeAnalisi.configura(VenditeAnalisi.java:107) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	... 23 common frames omitted

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  19.936 s
[INFO] Finished at: 2020-04-29T11:50:28+02:00
[INFO] ------------------------------------------------------------------------




==============================================
==============================================
THE PROGRAM
==============================================
==============================================
package it.prismatdi.ui.views.sintesi;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;
import java.util.stream.Stream;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.Event;
import org.vaadin.spring.events.EventBus.UIEventBus;

import com.awesomecontrols.subwindow.SubWindow;
import com.awesomecontrols.subwindow.SubWindowDesktop;
import com.vaadin.flow.component.HasValue;
import com.vaadin.flow.component.Html;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.dependency.StyleSheet;
import com.vaadin.flow.component.grid.FooterRow;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.Grid.SelectionMode;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.data.provider.ListDataProvider;
import com.vaadin.flow.data.provider.Query;
import com.vaadin.flow.data.renderer.NumberRenderer;
import com.vaadin.flow.data.selection.SelectionEvent;
import com.vaadin.flow.data.selection.SelectionListener;
import com.vaadin.flow.spring.annotation.SpringComponent;

import it.prismatdi.services.produzio.TeordiService;
import it.prismatdi.services.produzio.TmovrigService;
import it.prismatdi.ui.utils.DataConversion;
import it.prismatdi.ui.utils.ResultContainer;
import it.prismatdi.ui.utils.SumDataConversion;
import it.prismatdi.ui.utils.WindowParametriRicerca;
import it.prismatdi.ui.utils.WindowReportDiStampa;
import it.prismatdi.ui.utils.general.TypeForEventBus;

@SuppressWarnings("serial")
@SpringComponent
@StyleSheet(value = "./styles/myGridStyles.css")
public class VenditeAnalisi extends VerticalLayout
		implements SelectionListener<Grid<SumDataConversion>, SumDataConversion> {
	@Autowired
	private WindowParametriRicerca	parametriRicerca;
	
	@Autowired
	private UIEventBus					eventBus;
	
	@Autowired
	protected TeordiService				teordiService;
	
	@Autowired
	private TmovrigService				tmovrigService;
	
	private Grid<SumDataConversion>	venditeGrid;
	private final Boolean				caricaDati	= true;
	private Button							showFiltri;
	private Button							reportPrint;
	private TextField						searchText;
	private ResultContainer				listaRighe;
	private final DecimalFormat		df				= (DecimalFormat) NumberFormat.getInstance();
	private final DecimalFormat		dfR			= (DecimalFormat) NumberFormat.getInstance();
	private SubWindowDesktop			subWd;
	private SubWindow						subW;
	
	public VenditeAnalisi() {
		df.applyPattern("##0.00;-##0.00");
		dfR.applyPattern("##0.00;-##0.00");
		
	}
	
	private void bind() {
		// TODO Auto-generated method stub
		
	}
	
	private void cercaMovimenti(String codice, String descrizione) {
		List<DataConversion> lista = null;
		if (listaRighe.getParametri()
				.getCliente()) {
			lista = tmovrigService.findMovimentiDiCliente(listaRighe.getParametri(), codice);
			//				System.err.println(">>>>> AnalisiVenditeFactory.AnalisiVendite-cercaMovimenti CLIENTE <<<<<< " + lista.size());
			
		}
		else {
			lista = tmovrigService.findMovimentiDiArticolo(listaRighe.getParametri(), codice);
			//				System.err.println(">>>>> AnalisiVenditeFactory.AnalisiVendite-cercaMovimenti ARTICOLO <<<<<< " + lista.size());
		}
		if (lista != null) {
			WindowShowMovimenti wsm = new WindowShowMovimenti();
			wsm.setCaption(descrizione);
			wsm.setListaRighe(lista);
			subWd.add(wsm);
		}
	}
	
	@PostConstruct
	public void configura() {
		System.out.println(">>>>>>>>>>>>>>>   VenditeAnalisi.configura() UNO");
		subWd = new SubWindowDesktop();
		System.out.println(">>>>>>>>>>>>>>>   VenditeAnalisi.configura() DUE");
		subWd.setSizeFull();
		add(subWd);
		eventBus.subscribe(this);
		init();
		layout();
		loadData();
		bind();
		
	}
	
	private void faiAnnoCorrente(Boolean clie) {
		venditeGrid.removeAllColumns();
		//		if (venditeGrid.getFooterRows() > 0) {
		//			venditeGrid.removeFooterRow(0);
		//		}
		venditeGrid.setItems(listaRighe.getDati());
		venditeGrid.addColumn(data -> data.getCodice())
				.setKey("codice")
				.setHeader(clie ? "COD.CLI" : "COD.ARTI");
		venditeGrid.addColumn(SumDataConversion::getDescrizione)
				.setKey("desc")
				.setHeader(clie ? "RAG.SOCIALE" : "DESC.ARTICOLO");
		venditeGrid.addColumn(data -> data.getValore())
				.setKey("valore")
				.setHeader("VALORE");
		
		venditeGrid.addColumn(SumDataConversion::getQta)
				.setKey("qta")
				.setHeader("QUANTITA\'");
		venditeGrid.addColumn(new NumberRenderer<>(SumDataConversion::getValorePerQuantitaArrotondato, df))
				.setKey("media")
				.setHeader("P.MEDIO");
		venditeGrid
				.addColumn(
						new NumberRenderer<>(data -> data.getPercentualeSulTotale(listaRighe.getTotValore()), df))
				.setKey("percSuTot")
				.setHeader("% su TOT");
		FooterRow footer = venditeGrid.appendFooterRow();
		faiTotali(footer);
		
		venditeGrid.getDataProvider()
				.refreshAll();
		venditeGrid.getDataProvider()
				.addDataProviderListener(e -> {
					faiTotali(footer);
				});
		
	}
	
	private void faiAnnoPrecedente(Boolean clie) {
		venditeGrid.removeAllColumns();
		// per eventualmente usare componentRenderer la spiegazione è https://stackoverflow.com/questions/58956707/add-renderer-to-vaadin-grid
		//		if (venditeGrid.getFooterRows() > 0) {
		//			venditeGrid.removeFooterRow(0);
		//		}
		venditeGrid.setItems(listaRighe.getDati());
		venditeGrid.addColumn(SumDataConversion::getCodice)
				.setKey("codice")
				.setHeader(clie ? "COD.CLI" : "COD.ARTI");
		venditeGrid.addColumn(SumDataConversion::getDescrizione)
				.setKey("desc")
				.setHeader(clie ? "RAG.SOCIALE" : "DESC.ARTICOLO");
		venditeGrid.addColumn(data -> df.format(data.getValore()) + "<br>" + df.format(data.getValoreAp()))
				.setKey("valore")
				.setHeader("VALORE A.C./A.P.");
		//				.setRenderer(new HtmlRenderer());
		venditeGrid.addColumn(data -> formatRapporto(data))
				.setKey("diff")
				.setHeader("DIFF.");
		//				.setRenderer(new HtmlRenderer());
		venditeGrid.addColumn(data -> df.format(data.getQta()) + "<br>" + df.format(data.getQtaAp()))
				.setKey("qta")
				.setHeader("QUANTITA\'");
		//				.setRenderer(new HtmlRenderer());
		venditeGrid
				.addColumn(data -> df.format(DataConversion.arrotonda(data.getValore() / data.getQta(), 4))
						+ "<br>" + df.format(DataConversion.arrotonda(data.getValoreAp() / data.getQtaAp(), 2)))
				.setKey("media")
				.setHeader("P.MEDIO");
		//				.setRenderer(new HtmlRenderer());
		venditeGrid
				.addColumn(data -> df
						.format(DataConversion.arrotonda(data.getValore() * 100 / listaRighe.getTotValore(), 2))
						+ "<br>"
						+ df.format(
								DataConversion.arrotonda(data.getValoreAp() * 100 / listaRighe.getTotValoreAp(), 2)))
				.setKey("percSuTot")
				.setHeader("% su TOT");
		//				.setRenderer(new HtmlRenderer());
		FooterRow footer = venditeGrid.appendFooterRow();
		faiTotaliDueAnni(footer);
		
		venditeGrid.getDataProvider()
				.refreshAll();
		venditeGrid.getDataProvider()
				.addDataProviderListener(e -> {
					faiTotaliDueAnni(footer);
				});
		// SOSTITUITO DA CSS
		//		venditeGrid.setRowHeight(75);
		//		venditeGrid.setHeaderRowHeight(40);
		//		venditeGrid.setFooterRowHeight(75);
	}
	
	private void faiMargineLordo(Boolean clie) {
		venditeGrid.removeAllColumns();
		//		if (venditeGrid.getFooterRows() > 0) {
		//			venditeGrid.removeFooterRow(0);
		//		}
		venditeGrid.setItems(listaRighe.getDati());
		venditeGrid.addColumn(SumDataConversion::getCodice)
				.setKey("codice")
				.setHeader(clie ? "COD.CLI" : "COD.ARTI");
		venditeGrid.addColumn(SumDataConversion::getDescrizione)
				.setKey("desc")
				.setHeader(clie ? "RAG.SOCIALE" : "DESC.ARTICOLO");
		venditeGrid.addColumn(
				data -> DataConversion.arrotonda(data.getValore() - data.getCosto() - data.getCostoProd(), 2))
				.setKey("costo")
				.setHeader("MARG.LORDO");
		venditeGrid.addColumn(data -> data.getValore())
				.setKey("valore")
				.setHeader("VALORE");
		
		venditeGrid.addColumn(SumDataConversion::getQta)
				.setKey("qta")
				.setHeader("QUANTITA\'");
		venditeGrid
				.addColumn(new NumberRenderer<>(data -> DataConversion.arrotonda(
						(data.getValore() - data.getCosto() - data.getCostoProd()) * 100 / data.getValore(), 2),
						df))
				.setKey("media")
				.setHeader("% su MARGINE");
		venditeGrid
				.addColumn(new NumberRenderer<>(
						data -> DataConversion.arrotonda(data.getValore() * 100 / listaRighe.getTotValore(), 2),
						df))
				.setKey("percSuTot")
				.setHeader("% su TOT");
		FooterRow footer = venditeGrid.appendFooterRow();
		faiTotali(footer);
		
		venditeGrid.getDataProvider()
				.refreshAll();
		venditeGrid.getDataProvider()
				.addDataProviderListener(e -> {
					faiTotali(footer);
				});
		
	}
	
	private void faiTotali(FooterRow footer) {
		Supplier<Stream<SumDataConversion>> supplier = () -> venditeGrid.getDataProvider()
				.fetch(new Query<>());
		// CON STREAM
		long nRec = supplier.get()
				.count();
		double totVal = supplier.get()
				.mapToDouble(SumDataConversion::getValore)
				.sum();
		double totQta = supplier.get()
				.mapToDouble(SumDataConversion::getQta)
				.sum();
		double totMedio = supplier.get()
				.mapToDouble(s -> DataConversion.arrotonda(s.getValore() / s.getQta(), 4))
				.sum();
		double totPerc = supplier.get()
				.mapToDouble(s -> DataConversion.arrotonda(s.getValore() * 100 / listaRighe.getTotValore(), 8))
				.sum();
		totMedio /= nRec;
		venditeGrid.getColumnByKey("desc")
				.setFooter(new Html("REC.TOTALI: <b>" + nRec + "</b>"));
		venditeGrid.getColumnByKey("valore")
				.setFooter(new Html("<b>" + df.format(totVal) + "</b>"));
		venditeGrid.getColumnByKey("qta")
				.setFooter(new Html("<b>" + df.format(totQta) + "</b>"));
		venditeGrid.getColumnByKey("media")
				.setFooter(new Html("<b>" + df.format(totMedio) + "</b>"));
		venditeGrid.getColumnByKey("percSuTot")
				.setFooter(new Html("<b>" + df.format(totPerc) + "</b>"));
		//		
		//		footer.getCellFor("desc")
		//				.setHtml("REC.TOTALI: <b>" + nRec + "</b>");
		//		footer.getCell("valore")
		//				.setHtml("<b>" + df.format(totVal) + "</b>");
		//		footer.getCell("qta")
		//				.setHtml("<b>" + df.format(totQta) + "</b>");
		//		footer.getCell("media")
		//				.setHtml("<b>" + df.format(totMedio) + "</b>");
		//		footer.getCell("percSuTot")
		//				.setHtml("<b>" + df.format(totPerc) + "</b>");
		//		
	}
	
	private void faiTotaliDueAnni(FooterRow footer) {
		Supplier<Stream<SumDataConversion>> supplier = () -> venditeGrid.getDataProvider()
				.fetch(new Query<>());
		// CON STREAM
		long nRec = supplier.get()
				.count();
		double totVal = supplier.get()
				.mapToDouble(SumDataConversion::getValore)
				.sum();
		double totValAp = supplier.get()
				.mapToDouble(SumDataConversion::getValoreAp)
				.sum();
		double totQta = supplier.get()
				.mapToDouble(SumDataConversion::getQta)
				.sum();
		double totQtaAp = supplier.get()
				.mapToDouble(SumDataConversion::getQtaAp)
				.sum();
		double totMedio = supplier.get()
				.mapToDouble(s -> DataConversion.arrotonda(s.getValore() / s.getQta(), 4))
				.sum();
		double totMedioAp = supplier.get()
				.mapToDouble(s -> DataConversion.arrotonda(s.getValoreAp() / s.getQtaAp(), 4))
				.sum();
		double totPerc = supplier.get()
				.mapToDouble(s -> DataConversion.arrotonda(s.getValore() * 100 / listaRighe.getTotValore(), 8))
				.sum();
		double totPercAp = supplier.get()
				.mapToDouble(
						s -> DataConversion.arrotonda(s.getValoreAp() * 100 / listaRighe.getTotValoreAp(), 8))
				.sum();
		totMedio /= nRec;
		totMedioAp /= nRec;
		double diff = (totVal - totValAp) / totValAp * 100;
		String s = dfR.format(diff);
		String h = "";
		if (diff < 0) {
			h = "<font color=\"red\"><b>" + s;
		}
		else {
			h = "<b>" + s;
		}
		venditeGrid.getColumnByKey("desc")
				.setFooter(new Html("REC.TOTALI: <b>" + nRec + "</b>"));
		venditeGrid.getColumnByKey("valore")
				.setFooter(new Html("<b>" + df.format(totVal) + "<br>" + df.format(totValAp) + "</b>"));
		venditeGrid.getColumnByKey("diff")
				.setFooter(new Html(h));
		venditeGrid.getColumnByKey("qta")
				.setFooter(new Html("<b>" + df.format(totQta) + "<br>" + df.format(totQtaAp) + "</b>"));
		venditeGrid.getColumnByKey("media")
				.setFooter(new Html("<b>" + df.format(totMedio) + "<br>" + df.format(totMedioAp) + "</b>"));
		venditeGrid.getColumnByKey("percSuTot")
				.setFooter(new Html("<b>" + df.format(totPerc) + "<br>" + df.format(totPercAp) + "</b>"));
		
		//		footer.getCell("desc")
		//				.setHtml("REC.TOTALI: <b>" + nRec + "</b>");
		//		footer.getCell("valore")
		//				.setHtml("<b>" + df.format(totVal) + "<br>" + df.format(totValAp) + "</b>");
		//		footer.getCell("diff")
		//				.setHtml(h);
		//		footer.getCell("qta")
		//				.setHtml("<b>" + df.format(totQta) + "<br>" + df.format(totQtaAp) + "</b>");
		//		footer.getCell("media")
		//				.setHtml("<b>" + df.format(totMedio) + "<br>" + df.format(totMedioAp) + "</b>");
		//		footer.getCell("percSuTot")
		//				.setHtml("<b>" + df.format(totPerc) + "<br>" + df.format(totPercAp) + "</b>");
		
	}
	
	private String formatRapporto(SumDataConversion data) {
		Double d = (data.getValore() - data.getValoreAp()) / data.getValoreAp() * 100;
		String s = dfR.format(d);
		String h = "";
		if (d < 0) {
			h = "<font color=\"red\"><b>" + s;
		}
		else {
			h = "<b>" + s;
		}
		
		return h;
	}
	
	public void init() {
		df.applyPattern("##0.00");
		dfR.applyPattern("+#.00;-#.00");
		//			System.err.println(">>>>> AnalisiVenditeFactory.AnalisiVendite-init <<<<<< ");
		showFiltri = new Button("Filtri");
		showFiltri.addThemeVariants(ButtonVariant.LUMO_ICON);
		showFiltri.addClickListener(e -> {
			subW = new SubWindow("PARAMETRI DI RICERCA");
			WindowParametriRicerca wpr = new WindowParametriRicerca();
			subW.setContent(wpr);
			subWd.add(subW);
		});
		searchText = new TextField("Cerca nella table ...");
		searchText.addValueChangeListener(this::onNameChanged);
		reportPrint = new Button("Stampa");
		reportPrint.addThemeVariants(ButtonVariant.LUMO_ICON);
		reportPrint.addClickListener(e -> reportDiStampa());
		venditeGrid = new Grid<>();
		venditeGrid.addClassName("my-grid");
		venditeGrid.setWidth("100%");
		venditeGrid.setSelectionMode(SelectionMode.SINGLE);
		venditeGrid.addSelectionListener(this);
	}
	
	public void layout() {
		final HorizontalLayout hl = new HorizontalLayout();
		hl.add(showFiltri);
		hl.add(searchText);
		hl.add(reportPrint);
		hl.setVerticalComponentAlignment(Alignment.CENTER, showFiltri, reportPrint, searchText);
		add(hl);
		// Grid
		add(venditeGrid);
	}
	
	public void loadData() {
		if (caricaDati) {
			
		}
	}
	
	public void onEvent(Event<String> event) {
		System.err.println(">>>>> VenditeAnalisi-onEvent <<<<<< " + event.getTopic());
		if (event.getTopic()
				.equals(TypeForEventBus.ARRIVATE_RIGHE_PER_ANALISI_VENDITE.toString())) {
			//			listaRighe = (ResultContainer) event.getPayload();
			subWd.remove(subW);
			//			parametriRicerca.UI.getCurrent()
			//					.removeWindow(parametriRicerca);
			showRighe();
		}
		if (event.getTopic()
				.equals(TypeForEventBus.CHIUDI_WINDOW.toString())) {
			
		}
		
	}
	
	private void onNameChanged(HasValue.ValueChangeEvent<String> event) {
		@SuppressWarnings("unchecked")
		ListDataProvider<SumDataConversion> dataProvider = (ListDataProvider<SumDataConversion>) venditeGrid
				.getDataProvider();
		dataProvider.setFilter(SumDataConversion::getDescrizione, s -> startWith(s, event.getValue()));
	}
	
	private void reportDiStampa() {
		if (listaRighe.getDati()
				.isEmpty()) {
			return;
		}
		WindowReportDiStampa<SumDataConversion> wReport = new WindowReportDiStampa<>();
		wReport.setDati(listaRighe.getDati());
		subWd.add(wReport);
	}
	
	private void showRighe() {
		Boolean clie = listaRighe.getParametri()
				.getCliente();
		Boolean ap = listaRighe.getParametri()
				.getAnnoPrecedente();
		Boolean margine = listaRighe.getParametri()
				.getMargineLordo();
		
		if (!ap) {
			if (!margine) {
				faiAnnoCorrente(clie);
			}
			else {
				faiMargineLordo(clie);
			}
		}
		else {
			faiAnnoPrecedente(clie);
		}
		
	}
	
	private Boolean startWith(String s, String value) {
		if (s == null) {
			return false;
		}
		else {
			return s.toLowerCase()
					.startsWith(value.toLowerCase());
		}
	}
	
	@Override
	public void selectionChange(SelectionEvent<Grid<SumDataConversion>, SumDataConversion> event) {
		Optional<SumDataConversion> dat = event.getFirstSelectedItem();
		if (dat.isPresent()) {
			SumDataConversion conversion = dat.get();
			cercaMovimenti(conversion.getCodice(), conversion.getDescrizione());
		}
		
	}
	
}